zoukankan      html  css  js  c++  java
  • Red Hat Enterprise Linux 4 下安装 Oracle 10g [转]

    上周用VM在RHEL4下装了oracle10.2,中间碰到不少问题。
    总结了一下发个贴子,若有不足之处,请大家指正,谢谢!

    参考资料:
    Oracle官方网站: http://download.oracle.com/docs/html/B10813_01/toc.htm  
    国外非Oracle官方网站: http://www.puschitz.com/Installi ... uxErrorsAndProblems


    一、以root用户登录, 进行如下操作:

    1 检查硬件要求
      * 主要包括:

    1.   **********************************************
    2.   * 内存:                              >=512M                                     *
    3.   * 交换空间:                         1.0 GB或者2倍内存大小 *
    4.   * 临时空间(/tmp>):>=400M                                               *
    5.   * 软件所需空间:   >=2.5G                                                  *
    6.   * 数据库文件:     >=1.2G                                                  *
    7.   **********************************************
    复制代码


      # cat /etc/issue
      # uname -r
      # grep "model name" /proc/cpuinfo
      # grep MemTotal /proc/meminfo
      # grep SwapTotal /proc/meminfo
      # free
      # df -k /tmp
      # df -k
      
    2 检查软件要求(安装软件包)
      说明:虽然官方文档只要求如下几个软件包(具体版本号可能不一样),
                但实际上在真正安装的时候,往往需要更多.
                binutils-2.15.92.0.2-10.EL4
                compat-db-4.1.25-9
                control-center-2.8.0-12
                gcc-3.4.3-9.EL4
                gcc-c++-3.4.3-9.EL4
                glibc-2.3.4-2
                glibc-common-2.3.4-2
                gnome-libs-1.4.1.2.90-44.1
                libstdc++-3.4.3-9.EL4
                libstdc++-devel-3.4.3-9.EL4
                make-3.80-5
                pdksh-5.2.14-30
                sysstat-5.0.5-1
                xscreensaver-4.18-5.rhel4.2
             
       2.1 首先,在你的RHEL光盘里找到如上RPM包;

       2.2 然后,执行以下命令:
             # rpm -Uvh binutils*   
             # rpm -Uvh compat-db*            
             # rpm -Uvh control-center*        
             # rpm -Uvh gcc-3.4*               
             # rpm -Uvh gcc-c++*            
             # rpm -Uvh glibc-2.3*               
             # rpm -Uvh glibc-common*           
             # rpm -Uvh gnome-libs*     
             # rpm -Uvh libstdc++-3.4*         
             # rpm -Uvh libstdc++-devel*   
             # rpm -Uvh make*                  
             # rpm -Uvh pdksh*               
             # rpm -Uvh sysstat*               
             # rpm -Uvh xscreensaver*     
                      
            说明:若执行以上命令时提示须安装其它,则再从RHEL4的安装盘拷贝相应的包,然后再继续安装
      
    3 创建安装数据库的用户、组和安装目录
       3.1 创建用户和相关的组
             # /usr/sbin/groupadd oinstall
             # /usr/sbin/groupadd dba
             # /usr/sbin/useradd -g oinstall -G dba oracle 
             # passwd oracle  

      3.2 建立相关目录并授权

    1.        # mkdir -p /usr/app/oracle (the Oracle base directory)
    2.        # mkdir -p /usr/oradata    (an optional Oracle datafile directory)
    3.        # chown -R oracle:oinstall /usr/app/oracle /usr/oradata
    4.        # chmod -R 77
    复制代码


      
    4 配置内核参数
       4.1 修改核心参数并检查
             4.1.1 修改参数
                      # 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=262144
                       #net.core.wmem_default=262144
                       #net.core.wmem_max=262144
            
          4.1.2 启用新参数
                   # /sbin/sysctl -p

          4.1.3 检查参数
                   # /sbin/sysctl -a | rpm sem
                   # /sbin/sysctl -a | rpm shm
                   # /sbin/sysctl -a | rpm file-max
                   # /sbin/sysctl -a | rpm ip_local_port_range
      
      4.2 设置oracle用户的shell限制
            4.2.1 编辑limits.conf
                     # vi /etc/security/limits.conf
                     说明:添加如下的行
                      # nofile(可打开的文件描述符的最大数)和nproc(单个用户可用的最大进程数量)
                       *               soft    nproc   2047
                       *               hard    nproc   16384
                       *               soft    nofile  1024
                       *               hard    nofile  65536

          4.2.2 编辑/etc/pam.d/login,添加1行:
                   # vi /etc/pam.d/login
                   session    required     /lib/security/pam_limits.so
                
           4.2.3 编辑/etc/profile,添加如下部分:

    1.                 # vi /etc/profile                 
    2.                             if [ $USER = "oracle" ]; then  
    3.                                           if [ $SHELL = "/bin/ksh" ]; then  
    4.                                               ulimit -p 16384  
    5.                                               ulimit -n 65536  
    6.                                            else  
    7.                                               ulimit -u 16384 -n 65536  
    8.                                            fi  
    9.                                        fi
    复制代码


                   5 装载CD,或上传并解压缩文件
       5.1 若装载CD:
             # mount /media/cdrom
          
       5.2 若上传并解压缩文件
             5.2.1 上传:可用ftp命令或ftp工具
             5.2.2 解压缩:
                      # unzip 10201_database_linux32.zip -d /tmp/oracle
             5.2.3 改变属主和权限:
                      # chown oracle /tmp/oracle
                      # chmod -R +755 /tmp/oracle
       
       5.3 设置在安装Oracle的机器上以oracle用户安装

    1.          # xhost localhost:oracle
    复制代码


                            
                
    二、以oracle用户登录, 进行如下操作

    1 配置oracle用户的环境变量
      1.1 切换到Oracle用户
           # su - oracle
          $ cd
                            
      1.2 设置环境变量
           $ vi .bash_profile (在文件后面添加如下内容)      
            export ORACLE_BASE=/usr/app/oracle
            export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
            export ORACLE_SID=SHDB
            export PATH=$PATHHOME/binORACLE_HOME/bin
            export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
            export LANG=zh_CN.GBK
            export NLS_LANG="SIMPLIFIED CHINESE_CHINA".ZHS16GBK
            1.3 使环境变量生效
           $ source .bash_profile
          
      1.4 设置本地字符集类型
           $ export LC_CTYPE=en_US.UTF-8
          
    2 开始安装
      说明:为了便于后结安装,最好在安装前打开两个shell窗口,1个以root登录,另外1个以oracle登录
      
      2.1 $ ./runInstaller
      
      2.2 根据安装提示进行相应操作,中间需要root执行2个脚本:
           # $ORACLE_BASE/oraInventory/orainstRoot.sh
          # $ORACLE_HOME/root.sh
          说明:把$ORACLE_BASE和$ORACLE_HOME替换成实际的目录即可
       
      2.3 安装过程中,不要选择创建数据库;
      
      其它就没什么了,只须根据提示进行相应操作,直至安装成功。
      
      
    三、安装过程的问题

    1 Q: 执行./runInstaller后,弹不出安装界面,提示如下错误信息:
      ---------------------------------------------------------------------------------------------
      Xlib: connection to ":0.0" refused by server
      Xlib: No protocol specified
      Error: Can't open display: :0.0
            
      A: 在安装Oracle的机器上,以root身份运行命令:
         

    1. # xhost localhost:oracle
    复制代码



    2 Q:安装时,弹出的界面出现乱码
      ---------------------------------------------------------------------------------------------
      A:以oracle用户身份,设置本地字符集类型
         $ export LC_CTYPE=en_US.UTF-8

    3 Q:安装过程中,提示OUI-10066错误:
         Not all the dependencies for the component Oracle Database 10g 10.2.0.1.0 could be found.
         Missing component oracle.doc 10.2.0.1.0.
      ---------------------------------------------------------------------------------------------
      A:可能是oracle安装文件没有完全解压缩,重新解压缩一下再安装
         注意:若用root解压后,更改其属主为oracle

    4 Q:INFO: /bin/sh: /usr/bin/gcc: No such file or directory
         ......
         INFO: cannot stat `ntcontab.o'
         INFO: No such file or directory
         ......
         Exception Name: MakefileException
         Exception String: Error in invoking target 'ntcontab.o' of   
         makefile '/usr/app/oracle/product/10.2.0/db_1/network/lib/ins_net_client.mk'   
      ---------------------------------------------------------------------------------------------
      A: 检查Linux系统的所有补丁是否安装,尤其是gcc包,然后再继续安装



    四 创建与配置数据库(使用oracle用户登录RHEL)
       
    1 创建数据库
    1.1 以oracle用户登录RHEL, 输入:
        $ dbca
    1.2 在输入数据库SID时, 要注意保持与oracle配置文件的$ORACLE_SID的值一致.
        否则,创建完数据库后就启动不了(具体看下节).
         
    2 配置服务名
      修改listener.ora
      $ vi $ORACLE_HOME/network/admin/tnsname.ora   
        增加以下内容:
       --------------------------------------------------------------------------
       # 说明: 把HOST的值设置为你要安装数据库那台机器的IP
             SHDB =
               (DESCRIPTION =
                 (ADDRESS_LIST =
                   (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.135.128)(PORT = 1521))
                 )
                 (CONNECT_DATA =
                   (SERVICE_NAME = SHDB)
                 )
               )

    3 配置数据库的监听器
      3.1 修改listener.ora
         $ vi $ORACLE_HOME/network/admin/listener.ora   
           输入以下内容:
         --------------------------------------------------------------------------
         # 说明: 把HOST的值设置为你要安装数据库那台机器的IP
         LISTENER =                                                            
            (DESCRIPTION_LIST =                                                
               (DESCRIPTION =                                                   
                  (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))                    
                     (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.135.128)(PORT = 1521))
                   )                                                                 
             )                                                                  
                                                                      
         SID_LIST_LISTENER =                                                   
            (SID_LIST =                                                         
                (SID_DESC =                                                      
                   (SID_NAME = PLSExtProc)                                         
                      (ORACLE_HOME = /usr/app/oracle/product/10.2.0/db_1)            
                         (PROGRAM = extproc)                                             
                       )                                                                 
                   (SID_DESC =                                                      
                      (SID_NAME = SHDB)                                               
                      (ORACLE_HOME = /usr/app/oracle/product/10.2.0/db_1)            
                    )                                                                 
              )
                         
    3.2 启动监听器
         $ lsnrctl start

    4 启动数据库                                    
      $ sqlplus / as sysdba
      $ startup
      若数据库能正常启动, 则配置到此结束


    五、配置数据库的问题
       
    1 Q: TNS-01155: Incorrectly specified SID_LIST
         NL-00303: syntax error in NV string  
      ---------------------------------------------------------------------------------------------
      A: 可能是profile中设置的sid和你创建的DB的SID不一致

         (1) 查看数据库的SID是否与.bash_profile的ORACLE_SID一致
             $ echo $ORACLE_SID
            $ ls $ORACLE_HOME/dbs/init*.ora
               
         (2) 修改.bash_profile的ORACLE_SID为你创建DB的SID, 然后保存并生效
             $ source .bash_profile
               
         (3) 创建pfile
             $ sqlplus /nolog
             SQL> connect /as sysdba
             SQL> create pfile='/usr/app/oracle/product/10.2.0/db_1/initSHDB.ora' from spfile='/usr/app/oracle/product/10.2.0/db_1/dbs/spfileSHDB.ora';
             SQL> startup pfile='/usr/app/oracle/product/10.2.0/db_1/initSHDB.ora'
             或
              SQL> startup nomount pfile='/usr/app/oracle/product/10.2.0/db_1/initSHDB.ora'
             或
              SQL> startup
            说明: 把pfile和spfile的路径修改成这两个文件在系统的实际位置即可
          
    2 Q: ORA-01102:cannot mount database in EXCLUSIVE mode
      ---------------------------------------------------------------------------------------------
      A: 可能是关闭异常,造成数据库已经装载或共享的假象,而造成以下问题:

         (1) "lk<sid>" and "sgadef<sid>.dbf"这两个用于锁内存的文件存在着。
               oracle$cd $ORACLE_HOME/dbs
              oracle$ls -l sgadef<sid>.dbf
             * 如果存在删掉它
                 oracle$rm sgadef<sid>.dbf
               oracle$ls -l lk<sid>
             * 如果存在删掉它
                 oracle$rm lk<sid>
                   
         (2) pmon、smon、lwgw及dbwr这些后台进程依然存在着
               oracle$ps -ef | grep ora_ | grep $ORACLE_SID
             * 如果有pmon这些后台进程的残留,kill -9掉它
               oracle$kill -9 pid
                
         (3) Oracle开辟的共享内存没有释放掉
               ① 清共享内存段
                  oracle$ipcs -m   --显示一下,看owner是Oracle用户的
                  oracle$ipcrm -m <Shared_Memory_ID>
              ② 清信号集
                   oracle$ipcs -s   --显示一下,看owner是Oracle用户的
                   oracle$ipcrm -s <Semaphore_ID>
    http://www.itpub.net/thread-910255-1-1.html

  • 相关阅读:
    vue + element-ui实现动态多级表头
    Linux 系统编程 学习:11-线程:线程同步
    Linux 系统编程 学习:10-线程:线程的属性
    Linux 系统编程 学习:9-线程:线程的创建、回收与取消
    Linux 网络编程的5种IO模型:信号驱动IO模型
    Linux 系统编程 学习:8-基于socket的网络编程3:基于 TCP 的通信
    Linux 系统编程 学习:6-基于socket的网络编程1:有关概念
    Linux 系统编程 学习:7-基于socket的网络编程2:基于 UDP 的通信
    Linux 系统编程 学习:5-进程间通信2:System V IPC
    Linux 系统编程 学习:2-进程间通信1:Unix IPC(1)管道
  • 原文地址:https://www.cnblogs.com/saptechnique/p/2355721.html
Copyright © 2011-2022 走看看