在RHEL AS 5上安装Oracle 9i的经验总结
昨天晚上刚刚装好,目前没有发现什么问题
安装时主要参考了以下两篇文章:
 
总结经验如下:
第一,不要在安装完AS 5后修改配置文件来使用CentOS的Yum升级,我第一次安装时,装完AS 5后迫不及待的用Yum升级,结果在安装Oracle 9i的补丁包时出现很多依赖关系的报错,在我强制安装了部分补丁包后再用Yum升了一次级,结果造成AS 5的崩溃… :(
第二,在第一篇参考文章里,作者提到安装Linux时很多软件包不要安装,其实最好还是把开发等一些软件包装上,这样在打补丁时省了很多事,而且也跳过了一些步骤。但如果是第一次安装,我觉得还是按照作者的步骤来做,比较保险。
第三,需要下载的补丁和软件包,以及从AS 5安装光盘上准备的软件包总列如下,最好在安装前全部准备好:
需要下载的补丁和地址:
p3006854_9204_LINUX.zip
p2617419_210_GENERIC.zip
p3238244_9204_LINUX.zip

compat-libcwait-2.1-1.i386.rpm 的补丁在安装前就要打
注:compat-oracle-rhel4-1.0-5.i386.rpm AS5 x86_32下可以不装.      c***
下载地址:http://oss.oracle.com/projects/compat-oracle/files/RedHat/
或从p4198954_40_LINUX.zip文件解出
=======================================================
p4198954_40_LINUX.zip      (compat-libcwait-2.1-1.i386.rpm和compat-oracle-rhel4-1.0-5.i386.rpm 不打这个补丁在安装ORACLE时会报一大堆的错,找不到文件什么的)
p3006854_9204_LINUX.zip    (不打这个补丁在安装ORACLE时运行runInstaller.sh后图形界面出不来,没法安装)
p2617419_220_GENERIC.zip (网上文章说要p2617419_210_GENERIC.zip文件,ORACLE工程师所给文件版本更新。)
p3238244_9204_LINUX.zip    (p2617419和p3238244两个补丁是为解决Agent启动不了问题)
==========================================================
 
需要下载的软件包和地址:
giflib-4.1.3-8.i386.rpm
glib-1.2.10-26.fc7.i386.rpm
libpng10-1.0.18-2.i386.rpm
ORBit-0.5.17-22.rhel5.i386.rpm
gtk+-1.2.10-57.fc7.i386.rpm
imlib-1.9.15-2.fc7.i386.rpm
gnome-libs-1.4.2-7.rhel5.i386.rpm
需要从光盘上找的软件包:
compat-db-4.2.52-5.1.i386.rpm -------------- AS5 disk 3
compat-gcc-34-3.4.6-4.i386.rpm ------------- AS5 disk 2
compat-gcc-34-c++-3.4.6-4.i386.rpm--------- AS5 disk 2
compat-libgcc-296-2.96-138.i386.rpm ---------AS5 disk 3
**** openmotif-2.3.0-0.3.el5.i386.rpm --------------AS5 disk 3
**** openmotif-devel-2.3.0-0.3.el5.i386.rpm --------AS5 disk 3*********
libXpm-3.5.5-3.i386.rpm -----------------------AS5 disk 1
libXpm-devel-3.5.5-3.i386.rpm -----------------AS5 disk 2
libXp-1.0.0-8.i386.rpm -------------------------AS5 disk 2
libXp-devel-1.0.0-8.i386.rpm -------------------AS5 disk 2
 
我把两篇文章的oracle 9i安装部分结合了一下,并且修改了其中一些笔误。
环境: Red Hat Enterprise Linux 5 (RHEL5), Oracle9i (9.2.0.4.0)
 
下面以 $ 开头的命令都是由oracle执行的,
       # 开头的命令都是由root执行的。
1. 创建用户和组
-------------------------

添加安装过程中需要用到的用户和组
$ su -
# groupadd oinstall
# groupadd dba
# useradd -g oinstall -G dba oracle
# passwd oracle

 
2. 创建目录
--------------------------
我们将把所有东西都安装到在 /opt/oracle 目录下:
# mkdir -p /opt/app/oracle/9.2.0
# chown -R oracle.oinstall /opt/app/oracle

 
3. 系统配置
--------------------------

 
a) 设置内核参数

编辑/etc/sysctl.conf
kernel.shmmax = 536870912 这里设置为物理内存的一半 1G内存的话为:512×1024×1024
kernel.shmmni = 4096 2G 内存的话为:1024×1024×1024
kernel.shmall = 2097152
kernel.sem = 250 32000 100 128 其他的值都不用动
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
sem 4个参数依次为 SEMMSL(每个用户拥有信号量最大数);
SEMMNS(系统信号量最大数);
SEMOPM(每次semopm系统调用操作数);
SEMMNI(系统辛苦量集数最大数).
Shmmax 最大共享内存2GB 物理内存如果小的话可以设置成 536870912.
Shmmni 最小共享内存 4096KB.
Shmall 所有内存大小.
执行sysctl以反映修改 使内核参数立刻生效,重启也可以
# sysctl –p(以下为liaozg的设置)
[root@avus-lzg etc]# sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 4294967295
kernel.shmall = 268435456
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000

也可以在运行时通过执行下列命令更改内核参数:
#echo 250 32000 100 128 > /proc/sys/kernel/sem
#echo 268435456 > /proc/sys/kernel/shmmax  # 1/2 * mem_size(M) * 1024 *1024
#echo 4096 > /proc/sys/kernel/shmmni
#echo 524288 > /proc/sys/kernel/shmall # mem_size(M) * 1024
#echo 65536  > /proc/sys/fs/file-max
#echo 1024 65000 > /proc/sys/net/ipv4/ip_local_port_range

 
b) 设置oracle对文件的要求
修改文件:/etc/security/limits.conf
#echo oracle    soft    nofile    65536 >> /etc/security/limits.conf
#echo oracle    hard    nofile    65536 >> /etc/security/limits.conf
#echo oracle    soft    nproc    16384 >> /etc/security/limits.conf
#echo oracle    hard    nproc    16384 >> /etc/security/limits.conf

 
c) 设置环境变量

在/home/oracle/.bash_profile 中添加如下行:
export ORACLE_SID=GIS
export ORACLE_BASE=/usr/local/oracle
export ORACLE_HOME=$ORACLE_BASE/9.2.0
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib:/usr/X11R6/lib
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export ORACLE_OWNER=oracle
export PATH=$PATH:$ORACLE_HOME/bin:.
(这里都是PATH的变量,可以连着写,不用强制换行,我这里显示不下了才做得换行)
(编辑完成后可以reboot,或者用“source .bash_profile”来使变量生效)

 
4. 打补丁、安装需要的包, 至于为什么要做这些工作,后面有个Tips,给出了安装中出现的错误及其Solution
--------------------------------------------------------------------------------------------------

 
a) 补丁说明(在b部分之前,什么都不用做,a这一部分只要看看就好了,先了解一下,从b部分开始才是正式操作):
p3006854_9204_LINUX.zip 安装前就要打好的补丁
p2617419_220_GENERIC.zip 安装后要打的(这只是一个伴随补丁,只要设置它的
环境变量)
p3238244_9204_LINUX.zip 安装后要打的9204的补丁,修复agent错误的补丁.
下载地址:http://www.opennet.ru/soft/ora_inst/
 
compat-libcwait-2.0-2.i386.rpm L的补丁在安装前就要打
下载地址:http://oss.oracle.com/projects/compat-oracle/files/RedHat/
或从p4198954_40_LINUX.zip文件解出

 
b) 以root用户登录打p3006854_9204_LINUX.zip:
# unzip p3006854_9204_LINUX.zip
# sh 3006854/rhel3_pre_install.sh

c) 安装 compat-libcwait-2.1-1.i386.rpm和compat-oracle-rhel4-1.0-5.i386.rpm:
# unzip p4198954_40_LINUX.zip
Archive:  p4198954_40_LINUX.zip
   creating: 4198954/
  inflating: 4198954/compat-libcwait-2.1-1.i386.rpm 
  inflating: 4198954/compat-oracle-rhel4-1.0-5.i386.rpm 
 
c.1)compat-libcwait-2.1-1.i386.rpm  compat-oracle-rhel4-1.0-5.i386.rpm.为了应用这个补丁,可以运行:
login as root
#cd 4198954
#ls compat*.rpm
compat-libcwait-2.1-1.i386.rpm  compat-oracle-rhel4-1.0-5.i386.rpm
rpm -ivh compat-libcwait-2.1-1.i386.rpm
Preparing...                ########################################### [100%]
   1:compat-libcwait        ########################################### [100%]

 
d) 一些需要的包,这些包可以从系统盘中找到:

# rpm -ivh compat-db-4.2.52-5.1.i386.rpm
# rpm -ivh libXp-1.0.0-8.i386.rpm
# rpm -ivh libXp-devel-1.0.0-8.i386.rpm
# rpm -ivh openmotif-2.3.0-0.3.el5.i386.rpm
# rpm -ivh openmotif-devel-2.3.0-0.3.el5.i386.rpm

 
e) gnome-libs-1.4.2-7.rhel5.i386.rpm 和 一些依赖包,这些包网上都可以找到:

# rpm -ivh giflib-4.1.3-8.i386.rpm
# rpm -ivh glib-1.2.10-26.fc7.i386.rpm
# rpm -ivh libpng10-1.0.18-2.i386.rpm
# rpm -ivh ORBit-0.5.17-22.rhel5.i386.rpm
# rpm -ivh gtk+-1.2.10-57.fc7.i386.rpm
# rpm -ivh imlib-1.9.15-2.fc7.i386.rpm
# rpm -ivh gnome-libs-1.4.2-7.rhel5.i386.rpm

 
f) 创建链接:

# ln -s /usr/lib/libstdc++-libc6.2-2.so.3 /usr/lib/libstdc++-libc6.1-1.so.2
到这你可以能会说前面的两个补丁还没打,请别着急,后面会用到它们的(盼星星,盼月亮,最后我一个也没用到)
好,我们继续...

 
5. 开始安装oracle
----------------------------------------------------------------------------------

 
1) 准备工作:
   download oracle 9i
    http://www.oracle.com/technology/software/products/oracle9i/htdocs/linuxsoft.html
   解压
   $ zcat ship_9204_linux_disk1.cpio.gz | cpio -idmv
   $ zcat ship_9204_linux_disk2.cpio.gz | cpio -idmv
   $ zcat ship_9204_linux_disk3.cpio.gz | cpio –idmv

 
2) 请重启X然后用oracle登陆系统, 否则会出现一些列的错误,如:xhost +、环境变量、etc:
$ Disk1/runInstaller
没有特别说明的均按默认设置,根据界面提示,然后点 Next 或 OK即可.
Oracle install group : oinstall
Global Database Name : GIS (可根据你的情况填写)
这个过程中还会出现两次提示,让你运行指定目录下的脚本,根据提示做就可以了

 
3) 现在应该安装到Configuration Tools了,如果在这出现错误,提示Configuration Tools安装失败,不要着急,我们还有两个补丁没打呢。其实准确的说是一个补丁, p2617419_210_GENERIC.zip只是一个伴随补丁, 我这不需要,手动完成就好:
(这一部分的问题我都没有遇到,自己看着办)
   解决Agent Configuration Assistant安装失败
$ unzip p3238244_9204_LINUX.zip
$ cp 3238244/files/lib/stubs/* $ORACLE_HOME/lib/stubs/
$ cd $ORACLE_HOME/network/lib/
$ make -f ins_oemagent.mk install

  解决 Oracle Net Configuration Assistant, Oracle Database Configuration Assistant 安装失败
 
删除JRE链接($ORACLE_HOME/JRE -> /usr/local/oracle/jre/1.1.8)
$ rm $ORACLE_HOME/JRE
$ ln -s $ORACLE_BASE/jre/1.3.1/  $ORACLE_HOME/JRE
$ ln -s $ORACLE_HOME/JRE/bin/java $ORACLE_HOME/JRE/bin/jre
$ ln -s $ORACLE_HOME/JRE/bin/i386/native_threads/java $ORACLE_HOME/JRE/bin/i386/native_threads/jre

OK,现在Retry,你就可以成功安装Configuration Tools了,安装也就结束了...

正常登陆并启动数据库的操作。
[oracle@oracle oracle]$ lsnrctl start
[oracle@oracle oracle]$ sqlplus /nolog
SQL*Plus: Release 9.2.0.4.0 - Production on Sat Mar 12 22:58:53 2005
Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
SQL>; connect / as sysdba
Connected.
SQL>; shutdown immediate  关闭数据库
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>; startup;   启动数据库
ORACLE instance started.
Total System Global Area  236000356 bytes
Fixed Size                   451684 bytes
Variable Size             201326592 bytes
Database Buffers           33554432 bytes
Redo Buffers                 667648 bytes
Database mounted.
Database opened.
6, 为了方便管理,可以写一个启动脚本ora9i:
6.1)要使用ORACLE提供dbstart或dbshut可能启动关闭数据库先需要修改/etc/oratab文件
$vi /etc/oratab
# Entries are of the form:
#   $ORACLE_SID:$ORACLE_HOME:<N|Y>:
#
# The first and second fields are the system identifier and home
# directory of the database respectively.  The third filed indicates
# to the dbstart utility that the database should , "Y", or should not,
# "N", be brought up at system boot time.
#
# Multiple entries with the same $ORACLE_SID are not allowed.
#
#
*:/usr/local/oracle/9.2.0:N
GIS:/usr/local/oracle/9.2.0:Y  
 
6.2)修改$ORACLE_HOME/bin/dbstart使其能启动/etc/oratab中指定的数据库实例
$vi $ORACLE_HOME/bin/dbstart
修改55行内容为:
PFILE=${ORACLE_HOME}/dbs/spfile${ORACLE_SID}.ora
注在oracle9i安装过程中会提示pfile文件的位置。
7.编写自启动脚本
以root身份进入,编写以下脚本:
------------------------------------------------
#!/bin/bash
# start and stop the oracle instance
# chkconfig -level 5 --add oracle9i
# chkconfig: 35 99 01
# description: starts the oracle listener and instance
export ORACLE_BASE=/usr/local/oracle
export ORACLE_HOME=$ORACLE_BASE/9.2.0
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH
export ORACLE_OWNER="oracle"
export ORACLE_SID=GIS
if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ]
then
    echo "oracle startup:cannot start"
    exit 1
fi
case "$1" in
start)
  #startup the listener and instance
    echo -n "oracle startup: "
    su - $ORACLE_OWNER -c $ORACLE_HOME/bin/dbstart
    su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl start"
    touch /var/lock/subsys/oracle
    echo "finished"
   ;;
stop)
# stop listener, apache and database
    echo -n "oracle shutdown:"
    su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/lsnrctl stop"
    su - $ORACLE_OWNER -c $ORACLE_HOME/bin/dbshut
    rm -f /var/lock/subsys/oracle
    echo "finished"
;;
reload|restart)
    $0 stop
    $0 start
;;
*)
   echo "Usage: ora9i [start|stop|reload|restart]"
   exit 1
esac
exit 0
-------------------END FILE -------------------------------------
存为oracle9i后,然后用chmod a+x oracle9i。
即可在以后以root身份运行 /etc/rc.d/init.d/oracle9i start |stop 来管理oracle的启动和停止了。
其中chkconfig:35 99 01 是指脚本将为运行级3、5启动oracle9I服务,启动优先级为99,关闭优先级为01。
然后以root权限:
 # cd /etc/rc.d
 # chkconfig --add oracle9i
 # chkconfig --list oracle9i
 
 或可改为oracle9i的运行级别
 # chkconfig oracle 35 on
重启系统,就可以在启动的过程中看到 Starting oracle ,因为我们设置的优先级为99,一般是最后启动。
[OK]以后就可以使服务随操作系统自启动了。
以下提供其它自启动的设置方法,其效果相当。
或者手工以root用户执行如下命令:
#cp /orasetup/ora9i /etc/rc.d/init.d/
#chmod a+x /etc/rc.d/init.d /ora9
#cd /etc/rc.d/rc5.d
#ln -s /etc/rc.d/init.d/ora9i S99ora9i
#cd /etc/rc.d/rc0.d
#ln -s /etc/rc.d/init.d/ora9i K99ora9i
也可自启动oracle9i!
或者可在/etc/rc.d/rc.local中加入如下:
su - oracle -c "/opt/ora9/oracle/product/9.2.0/bin/lsnrctl start"
su - oracle -c "/opt/ora9/oracle/product/9.2.0/bin/dbstart start"
6,关于数据库删除重新安装的问题:
  把ORACLE安装目录删除及/etc/ora*.*删除就行了
#rm –f  /etc/ora*.*
 

 
==================================================
* Tips: (这是我安装过程中出现的问题及其解决方法)
==================================================

1. error while loading shared libraries: libstdc++-libc6.1-1.so.2:
cannot open shared object file: No such file or directory - after
./runInstaller execution.
===================================================
Solution:
su -
# cd /usr/lib
# ln -s libstdc++-3-libc6.2-2-2.10.0.so libstdc++-libc6.1-1.so.2

2. Oracle 9i Patch
==========================
p2617419_220_GENERIC.zip
p3006854_9204_LINUX.zip
p3238244_9204_LINUX.zip
http://www.opennet.ru/soft/ora_inst/
compat-libcwait-2.0-2.i386.rpm
compat-oracle-rhel4-1.0-5.i386.rpm
http://oss.oracle.com/projects/compat-oracle/files/RedHat/

3. 几个需要的包所在的路径
===========================
compat-db-4.2.52-5.1.i386.rpm -------------- AS5 disk 3
compat-gcc-34 ----------------------------- AS5 disk 2
compat-gcc-34-c++------------------------- AS5 disk 2
compat-libgcc -------------------------------AS5 disk 3
openmotif-2.3.0-0.3.el5.i386.rpm--------------AS5 disk 3
openmotif-devel-2.3.0-0.3.el5.i386.rpm--------AS5 disk 3
4. Exception in thread "main" java.lang.UnsatisfiedLinkError:
/tmp/OraInstall2007-12-06_07-00-08PM/jre/lib/i386/libawt.so: libXp.so.6:
cannot open shared object file: No such file or directory
====================================================
Solution: install the follow RPMs
libXpm -- 1
libXpm-devel -- 2
libXp -- 2
libXp-devel – 2

5. Exception in thread "main" java.lang.InternalError: Can't connect to
X11 window server using ':0.0' as the value of the DISPLAY variable.
at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
at
sun.awt.X11GraphicsEnvironment.&lt;clinit>(X11GraphicsEnvironment.java:59)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:120)
at
java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:58)
at java.awt.Window.&lt;init>(Window.java:188)
at java.awt.Frame.&lt;init>(Frame.java:315)
at java.awt.Frame.&lt;init>(Frame.java:262)
at oracle.sysman.oii.oiic.OiicInstaller.main(OiicInstaller.java:593)
================================================================
Solution: (xhost +的问题 )
1. 用oracle用户登录x-window
或者
2.用root用户运行
# xhost +

6. Fatal: Stack size too small. Use 'ulimit -s' to increase default
stack size.
==========================
第二次运行就正常了

7. $ dbca   // 无法启动dbca,提示错误如下:
/opt/oracle/jre/1.1.8/bin/../lib/i686/green_threads/libzip.so: symbol
errno, version GLIBC_2.0 not defined in file libc.so.6 with link time
reference (libzip.so)
Unable to initialize threads: cannot find class java/lang/Thread
Could not create Java VM
==========================
Solution: (参考 冷风的Fedora 7最新安装Oracle9204手记)
$ cd /opt/app/oracle/product/9.2.0
$ ls -l JRE
lrwxrwxrwx 1 oracle oinstall 25 Dec 7 10:11 JRE -> /opt/app/oracle/jre/1.1.8
$ rm JRE
$ ln -s /opt/app/oracle/jre/1.3.1 JRE
$ su -
# cd /opt/app/oracle/product/9.2.0/JRE/bin/
# ln -s java jre
# cd i386/native_threads/
# ln -s java jre

8. 快装完的时候有:
parameter "orahome"=/home/oracle/product/9.2.0
parameter "nodeinfo"=NO_value
提示失败。
=======================================================
Solution:
打上安装补丁p3238244_9204_LINUX.zip
unzip p3238244_9204_LINUX.zip
cd 3238244
手工将3238244/files/lib/stubs目录下的所有文件复制到
/oracle/product/9.2.0/lib/stubs/目录下也可以,如下:
cp files/lib/stubs/* $ORACLE_HOME/lib/stubs/
重新连接编译"Agent"相关程序
cd $ORACLE_HOME/network/lib/
make -f ins_oemagent.mk install
耐心等待成功编译。
再点击前面oracle安装程序中的"Agent Configuration Assistant",并点击
"Retry"重新运行配置工具程序,过一会应该会成功,退出安装

9. /opt/app/oracle/9.2.0/Apache/Apache/bin/apachectl startssl: httpd
could not be started
/opt/app/oracle/9.2.0/Apache/Apache/bin/httpd: error while loading
shared libraries: libdb.so.2: cannot open shared object file: No such
file or directory
=======================================================
Solution:
按以下顺序安装 gnome-libs-1.4.2-7.rhel5.i386.rpm 及其依赖的包
giflib-4.1.3-8.i386.rpm
libpng10-1.0.18-2.i386.rpm
glib-1.2.10-26.fc7.i386.rpm
ORBit-0.5.17-22.rhel5.i386.rpm
gnome-libs-1.4.2-7.rhel5.i386.rpm
rpmdb-redhat-4-0.20071031.src.rpm
imlib-1.9.15-2.fc7.i386.rpm
gtk+-1.2.10-57.fc7.i386.rpm
 
 
 
gnome-libs-1.4.2-7.rhel5.i386.rpm