在非oracle10g所认可的linux发行版上安装oracle

作者:瞌睡虫
近日,在笔记本上安装了一个Red Hat Linux,安装过程很顺利,随后打算安装一个oracle数据库,原本以为很简单,谁知一装才知道这个安装里面学问大了,到处在网上找帖子,查问题,足足花了两天时间才完全装好,特将相关的帖子收集整理一下,在加上自己安装中的一些体会,编辑成文以备后查。

安装环境:
OS:Red Hat Linux release 9 (Shrike)
数据库:oracle10.2.0.1 for linux32

1、首先,必要的硬件信息检查(摘抄网上资料):

  检查内容 最小值 检查命令参考
  物理内存 512M # grep MemTotal /proc/meminfo
  交换空间 max{1.0 GB,2倍内存} # grep SwapTotal /proc/meminfo
  /tmp 空间 400 MB # df -k /tmp
  软件所需空间 2.5 GB # df -k
  数据库文件 1.2 GB # df -k

  注:个人理解,除了最后两项为安装中硬性要求外,其他几项均可以适当放宽限制,并不影响安装进程;

2、建用户组、用户脚本

  使用root用户登录
  # groupadd oracle
  # useradd -g oracle -d /oracle -m oracle
  # passwd oracle      
  
  注:值得一提的是最后一条命令,通过useradd命令所建立的用户,没有指定密码(即便运行useradd时使用了-p参数),无法进行登录,故需用passwd进行指定密码,这    是经历多次失败尝试后的经验;

3.设置oracle环境变量

  $ vi $ORACLE_BASE/.bash_profile
  
  ---在原有内容后面添加如下设置
  
  export DISPALY="localhost:0.0"        #此句尤为重要,直接影响后续安装进程,其中localhost可以使用IP或主机名替代
  export ORACLE_BASE=/oracle                                                                                       
  export ORACLE_HOME=/oracle
  export ORACLE_SID=orclx     #此参数应根据安装节点进行修改
  export LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$ORACLE_HOME/lib:$ORACLE_HOME/ctx/lib
  export CLASSPATH=$ORACLE_HOME/jre:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib
  export TNS_ADMIN=$ORACLE_HOME/network/admin
  export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
  export PATH=$PATH:$ORACLE_HOME/bin:/sbin                                                
  export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"        #此句设置oracle字符集 ,影响到安装后字符显示问题
  umask 022

4.修改核心参数(编辑/etc/sysctl.conf,在该文件末尾加入如下内容:这部分设置我没有理会^-^)
  kernel.shmall = 2097152
  kernel.shmmax = 2147483648
  kernel.shmmni = 4096
  kernel.sem = 250 32000 100 128
  fs.file-max = 65536
  net.ipv4.ip_local_port_range = 1024 65000
  编辑完之后,保存,执行 # /sbin/sysctl -p 命令操作来使我们所做的变更生效。
  注意:核心参数配置可能需要根据实际环境进行适当的变动.

5.检查linux 的安装组件(在安装oracle期间,需要使用到GCC组件包,故须检查是否安装完整)
  直接在linux图形界面中,选择主菜单->系统设置->添加/删除应用程序,选中"开发"部分的"开发工具",然后默认"更新"即可。
  注:安装这部分程序需用到linux9的第二张光盘(这部分程序是linux9默认安装未包含的)。
    如果没有安装这部分,在后面的oracle安装过程中,将出现一系列的调用错误。
另外,还需检查libaio的安装:在linux9的第二张光盘中有
ls -l libaio*.rpm
  rpm - i libaio*.rpm

6.接下来,开始安装oracle

  运行runInstaller,错误提示如下:
  Checking requirements...
  Checking operating system version: must be redhat-2.1,redhat-3,SuSE-9,SuSE-8,UnitedLinux-1.0
  Failed<<<<
  
  这是因为oracle10g所认可的linux发行套件没有包括linux9,所以需要降低linux核心
  流行的解决方法有三种:
  方法一:
  在/etc下创建UnitedLinux-release文件
  #cat > /etc/UnitedLinux-release << EOF
  >UnitedLinux 1.0 (i586)
  >VERSION=1.0
  >EOF
  然后就可以正常启动安装程序。注意不要使用vi编辑该文件,否则可能会引起ORA-12547: TNS: lost contact的错误。
  
  方法二:
  运行runInstaller -ignoreSysPrereqs,这样会跳过检查(呵呵,相信百分之99.9999999的人都会选择这种方法)
  
  方法三:
  修改Oracle 的/.../disk1/install/linux/oraparam.ini这个参数文件

7.如果接下来,安装遇到如下错误:
  Xlib: connection to "localhost:0.0" refused by server
  Xlib: No protocol specified

呵呵,你的oracle用户没有X window权限,解决办法:
   使用root用户登录(必要时重新启动os),然后输入:
   # xhost +localhost
   
   如果x window设置成功,可以用oracle用户登录后,输入: $ xclock
   是不是看到一个小闹钟,呵呵,恭喜你又解决一个问题!   

8.当程序进行到,创建数据库时,建议先不要创建,等安装完系统后,通过dbca命令来创建,不要问我为什么,反正这样子会顺利不少。
  否则下面这些问题,不幸的话,可能你都会遇到:
      
      数据库启动:
      $sqlplus /nolog
      SQL>connect / as sysdba
      SQL>startup
      
      ORA-00371: not enougsh shared pool memory, should be atleast 52132659 bytes.
      
      解决方法:
      这个错误并非是内核参数设置的问题,也和系统的物理内存大小无关。编辑$ORACLE_HOME/dbs/init$GID.ora文件:
      shared_pool_size = 52132659
   
      数据库启动:
      $sqlplus /nolog
      SQL>connect / as sysdba
      SQL>startup
      
      ora-01102: cannot mount database in EXCLUSIVE mode
      
      解决方法:
      完全关闭数据库,更改$ORACLE_HOME/dbs/init.ora文件里的db_name为建库时定义的“全局数据库名”,然后再重新启动数据库
      
      数据库启动:
      $sqlplus /nolog
      SQL>connect / as sysdba
      SQL>startup
      
      ora-00205:error in identifying conrolfile, check alert log for more info
      
      解决方法:
      SQL>show parameter control_files
      SQL>CREATE CONTROLFILE
      将$ORACLE_BASE/admin/$GID/pfile/init$SID.ora***************拷贝到$ORACLE_HOME/dbs下,命名为init$SID.ora,即可解决。
      
      数据库启动:
      $sqlplus /nolog
      SQL>connect / as sysdba
      SQL>startup
      
      ORA-01990:error opening password file '$ORACLE_NAME/dbs/orapw'
      ORA-27037:unable to obtain file status
      Linux Error:2: No such file or directory
      Additional information: 3
      
      解决方法:
      将$ORACLE_HOME/dbs下的orapw$db_name文件拷贝生成一个orapw文件。

      建库的过程中或者连接数据库的时候提示:
      ORA-12547: TNS: lost contact
      引起该错误的环境比较复杂,原因可能是:
      1、用vi编辑的/etc/UnitedLinux-release文件
      2、内核参数设置不正确
      3、察看一下listener是否正常启动: lsnrct1 status
      4、机器负载过大

9、系统安装完毕,在oracle用户下,打开终端,运行dbca命令,后有一个向导出现,你可以按照提示创建数据库,至此安装大功告成!