Johnny Deng's Blog

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: :: 订阅 订阅 :: 管理 ::
        刚入职没几天,第一个挑战就是在Linux下安装Oracle,让我费了好大的劲儿,但是在安装配置Oracle的过程中学到了很多东西:)
  废话不多说,下面是我在安装过程中总结的一些要点:

    一、安装Oracle数据库服务器

    建用户:
    # groupadd dba
    # useradd -g dba oracle
    # passwd oracle

    将Oracle10g的安装文件上传到/home/oracle并解压:
    $ unzip 10201_database_linux32.zip
    $ unzip 10201_client_linux32.zip

    解压后的两个文件夹为database和client,分别是数据库服务器和客户端的安装程序,我没有安装客户端

    节省空间,删除zip文件:
    $ rm 10201_database_linux32.zip
    $ rm 10201_client_linux32.zip

    建立oracle主目录:
    $ mkdir /home/oracle/product
    $ mkdir /home/oracle/product/10.2.0

    修改环境变量,添加如下信息:
    $ vi .bash_profile

    export ORACLE_BASE=/home/oracle
    export ORACLE_HOME=$ORACLE_BASE/product/10.2.0
    export ORACLE_SID=ora10g
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib
    export PATH=$PATH:$ORACLE_HOME/bin:.

    让profile文件生效:
    $ source .bash_profile

    修改内核参数,添加:
    # vi /etc/sysctl.conf

    kernel.shmmax= 2147483648
    kernel.shmmni=4096
    kernel.shmall=2097152
    kernel.sem=250 32000 100 128
    fs.file-max=65536
    net.ipv4.ip_local_port_range=1024 65000
    net.core.rmem_default = 262144
    net.core.rmem_max = 1048576
    net.core.wmem_default = 262144
    net.core.wmem_max = 1048576

    使sysctl.conf立即生效:
    # sysctl -p

    以上几个内核参数的大致含义如下:
       kernel.shmma:最大共享内存段,以字节为单位,物理内存*1024*1024*2,为物理内存的2倍。
       kernel.shmmni:共享内存段的最大数目。
       kernel.shmall:共享内存总量,以页为单位。
       kernel.sem:每个信号对象集的最大信号对象数;系统范围内最大信号对象数;每个信号对象支持的最大操作数;系统范围内最大信号对象集数。
       fs.file-max:文件句柄数,表示在Linux系统中可以打开的文件数量。
       net.ipv4.ip_local_port_range:应用程序可使用的IPv4端口范围。

    安装之前首先检测安装过程中需要的一些组件是否已经安装:
    # rpm -q gcc make binutils openmotif glibc

    输出结果如下则为已安装,未安装会有提示,可以从Red Hat光盘里找rpm包来安装:
    gcc-2.96-118.7.2
    make-3.79.1-8
    binutils-2.11.90.0.8-12
    openmotif-2.1.30-11
    glibc-2.2.4-32.8

    开始安装:
    # xhost +
    # su - oracle
    $ cd database
    $ ./runInstaller

    接下来会看到Oracle10g的图形安装界面,跟Windows下无异,在此不多说。

    二、配置Oracle服务器
   
    我在安装过程中建的全局数据库名为ora10g,接下来要修改服务器端的listener.ora添加ora10g的SID
    SID_LIST_LISTENER =
        (SID_LIST =
            (SID_DESC =
              (SID_NAME = PLSExtProc)
              (ORACLE_HOME = /home/oracle/product/10.2.0)
              (PROGRAM = extproc)
          )
          (SID_DESC =
              (GLOBAL_NAME = ora10g)
              (ORACLE_HOME = /home/oracle/product/10.2.0)
              (SID_NAME = ora10g)
          )
      )

    然后在tnsnames.ora中添加监听实例名:
    EXTPROC_CONNECTION_DATA =
        (DESCRIPTION =
            (ADDRESS_LIST =
                (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
            )
            (CONNECT_DATA =
                (SID = PLSExtProc)
                (PRESENTATION = RO)
            )
        )

    ora10g =
             (DESCRIPTION =
            (ADDRESS_LIST =
                (ADDRESS = (PROTOCOL = TCP)(HOST = dengqiang)(PORT = 1521))
            )
            (CONNECT_DATA =
                (SERVICE_NAME = ora10g)
            )
        )

    PS:HOST为主机名。另外我在安装的过程中出现error,PORT被置为了null,这样在启动lsnrctl服务的时候会报错,错误提示中可以

看到****PORT=null****,如果是这种情况,记得要在这两个ora文件里改过来,默认为1521

    修复Oracle启动脚本的BUG:
    $ vi $ORACLE_HOME/bin/dbstart
    把行
    ORACLE_HOME_LISTNER=/ade/vikrkuma_new/oracle
    修改为
    ORACLE_HOME_LISTNER=/home/oracle/product/10.2.0

    让启动脚本生效:
    以oracle用户登录,打开“/etc/oratab”文件
    $ vi /etc/oratab
    把行
    ora10g:/home/oracle/product/10.2.0:N
    修改为
    ora10g:/home/oracle/product/10.2.0:Y

    配置Oracle为自动启动:
    以root用户登录,打开“/etc/rc.d/rc.local”文件,在最后添加下面几行信息:
    # vi /etc/rc.d/rc.local
    su - oracle -c 'dbstart'
    # su - oracle -c 'agentctl start'
    su - oracle -c 'lsnrctl start'

    PS:这两行被注释掉的我也不太清楚,查资料照着改的,囧

    到此,服务器端已经配置好了,Oracle开机自动运行,已经可以使用了。

    三、配置远程客户端主机

    本地客户端主机如果想访问远程Oracle服务器,需要配置本地的tnsnames.ora,添加一个服务名:

      ora10g =
        (DESCRIPTION =
          (ADDRESS_LIST =
            (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.90.126)(PORT = 1521))
          )
          (CONNECT_DATA =
            (SERVICE_NAME = ora10g)
          )
        )

    其中HOST为远程Oracle服务器地址,SERVICE_NAME为实例名.

    四、测试

    我的本地主机为Windows,打开cmd,输入sqlplus system/****@ora10g,回车

    OK,成功连接到远程Oracle服务器,大功告成~~

    PS:访问远程Oracle服务器时,本地客户端Oracle的任务服务都可以不启动,配置好tnsnames.ora就可以了
posted on 2009-10-12 16:48  Johnny Deng  阅读(756)  评论(0编辑  收藏  举报