search 2013 adfgs
作者:Sky.Jian | 可以任意转载, 但转载时务必以超链接形式标明文章原始出处 和 作者信息 及 版权声明
链接:http://isky000.com/software/oracle9i%e5%ae%89%e8%a3%85%e7%9a%84%e8%89%b0%e8%be%9b%e5%8e%86%e7%a8%8b%ef%bc%88rhel-3%ef%bc%89 | del.icio.us | Twitter it

一直准备在工作室的一台linux服务器上面装上oracle,看看数据库中的王者到底尊严到什么程度。最近终于又了机会,机器上面的几个部门网站全部转移到别的服务器上面去了,这下就真是可以让我对她为所欲为了(^_^)。

下面就是我在Red Hat Enterprise Linux Advanced Server 3 (RHEL 3)上面安装安装Oracle 9iR2的整个过程:
首先得把系统重装一下,要来个测彻底得干净,免得安装过程中出现麻烦。
然后就是做一些安装前的准备了,主要是下载需要的所有软件包(包括各种升

级补丁)
以下就是我们需要的一些软件包和补丁列表了:
1, Java Development Kit (我下载的最新的linux下版本1.4.2.05).
2,oracle9i软件包(从http://otn.oracle.com 上面下载,有三张光盘)
lnx_920_disk1.cpio.gz
lnx_920_disk2.cpio.gz
lnx_920_disk3.cpio.gz
3,升级补丁程序(http://metalink.oracle.com):
p3095277_9204_LINUX.zip 9.2.0.4.0的升级补丁包.
p3006854_9204_LINUX.zip 在运行 runInstaller 之前打.
p3119415_9204_LINUX.zip 在升级到9.2.0.4.0之后打.
p2617419_210_GENERIC.zip 打3119415补丁所需要的.
p3095277_9204_LINUX.zip大约有300多兆.如何快速下载Metalink上的补丁?请

参考这个Link:
http://www.ncn.cn/oracle/tips/oratip009.htm


后面的三个比较小.可以在 ITPub 下载:

http://www.itpub.net/showthread.php?s=&threadid=171693&perpage=15&pagenumber=1

等准备好以上所有需要的软件包,下面就要开始安装历程了
先设置系统核心参数【这里我是在网上找的资料,自己对linux核心不是很了解:(】:

#echo “kernel.sem=\”250 32000 100 128\”” >> /etc/sysctl.conf
#echo “kernel.shmmax=2147483648″ >> /etc/sysctl.conf
#echo 4096 > /proc/sys/kernel/shmmni
#echo 1024 > /proc/sys/kernel/shmall

第一条命令中的 250、32000、100、128 分别对应SEMMSL、SEMMNS、SEMOPM、SEMMNI这四个核心参数.
上面是典型的核心参数配置.您可能需要根据您的实际环境进行适当的变动.关于这些核心参数的说明在
Oracle的Oracle9i Installation Guide Release2 (9.2.0.1.0) for UNIX Systems
中有很详细的说明.( http://download-west.oracle.com/docs/html/A96167_01/toc.htm )

然后,应该检查一下上面的操作是否正确:
# more /etc/sysctl.conf | grep kernel.s
kernel.sysrq = 0
kernel.shmmax=2147483648
kernel.sem=”250 32000 100 128″

或者用cat命令来检查:
#cat /proc/sys/kernel/sem
250 32000 100 128
#cat /proc/sys/kernel/shmmax
2147483648
#cat /proc/sys/kernel/shmmni
4096
#cat /proc/sys/kernel/shmall
1024

网上资料说最好把下面的几行代码加入到 /etc/sysctl.conf 文件:

kernel.shmmax = 2147483648
kernel.shmmni = 128
kernel.shmall = 2097152
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000

还有这些加入到/etc/security/limits.conf 里面:

oracle soft nofile 65536
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384

不过加入这些以后需要reboot一下系统

下面需要检查系统看有没有缺少什么rpm软件包了
在这个版本的RHEL上安装Oracle,必须要有几个软件包(参考 Metalink 上的

Oracle Note:252217.1) . 确认以下rpm包都已经安装:
# rpm -qa | grep compat
compat-gcc-7.3-2.96.122
compat-libstdc++-devel-7.3-2.96.122
compat-gcc-c++-7.3-2.96.122
compat-libstdc++-7.3-2.96.122
compat-glibc-7.x-2.2.4.32.5
compat-db-4.0.14-5

# rpm -qa | grep openmotif
openmotif-2.2.2-16
openmotif-devel-2.2.2-16

# rpm -qa | grep setarch
setarch-1.3-1

上面显示的内容是在本人已经安装了具体的RPM包之后的结果(为了减少麻烦,而且服务器资源也不缺,我安装了90%以上的软件包,呵呵).一般情况下,你的系统上的输出结果和这个不同.如果个别包没有安装,把系统安装光盘mount上,找到具体的软件包(大多数在第三张光盘上),然后利用如下的命令来安装相应的包:
# rpm -ivh compat…..rpm

这里有一个问题就是要额外注意的是这些软件包之间是有依赖性的,先后的顺序要找好.否则会报告不能安装的错误.以前有一次这样的教训,所以这次为了避免麻烦我开始在装系统的时候就安装了大部分软件包。

还需要将gcc、g++更换为2.96的版本. (参考 Metalink 上的 OracleNote:252217.1 )

# mv /usr/bin/gcc /usr/bin/gcc323
# ln -s /usr/bin/gcc296 /usr/bin/gcc
# mv /usr/bin/g++ /usr/bin/g++323
# ln -s /usr/bin/g++296 /usr/bin/g++

如果报告找不到文件,请确认该软件包是否安装.

好到此我们已经把安装前的准备工作基本上都完成了
下面就是安装软件了,先装JDK
# 先更改权限(让其可执行)
chmod u+x j2sdk-1_4_2_05-linux-i586.rpm.bin
# 执行bin文件.
./j2sdk-1_4_2_05-linux-i586.rpm.bin
# 安装rpm软件包.
rpm -ivh jdk-1_4_2_05.i586.rpm

到此JDK安装完毕,设置用户的JAVA_HOME和PATH(这个就不用我讲了吧^_^)
现在添加用户和组
groupadd oinstall # 创建oracle文件的所有组
groupadd dba # 创建数据库管理员组
groupadd oper
useradd -c “Oracle software owner” -g oinstall -G dba oracle #创建oracle用户
passwd oracle #设置oracle用户的密码

创建了oracle用户以后也为她设置一下JAVA_HOME吧

下面创建安装目标路径:
mkdir -p /u01/app/oracle/product/9.2.0.1.0
chown -R oracle.oinstall /u01

设置oracle用户需要的各种环境变量(在oracle用户的注目录里面的.bash_profile文件里面添加以下内容):
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/9.2.0.1.0; export ORACLE_HOME
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=$ORACLE_HOME/bin:$PATH; export PATH
ORACLE_OWNER=oracle; export ORACLE_OWNER
ORACLE_SID=ora9201; export ORACLE_SID
LD_LIBRARY_PATH=$ORACLE_HOME/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib; export CLASSPATH

#下面这个参数必须指定,否则Java安装界面无法启动(这个参数实际上是为了避免Linux上的NPTL(Native POSIX Thread Library)和Oracle应用不兼容的问题)
LD_ASSUME_KERNEL=2.4.1; export LD_ASSUME_KERNEL

# 设置 shell 查找命令的路径
export PATH=$PATH:$ORACLE_HOME/bin:$JAVA_HOME/bin

现在注销系统重新用oracle用户登录
先打补丁(安装3006854 patch,安装前请先su到root用户):
unzip p3006854_9204_LINUX.zip
cd 3006854
sh rhel3_pre_install.sh

准备要安装oracle了哦:
先解压
gunzip lnx_920_disk1.cpio.gz
gunzip lnx_920_disk2.cpio.gz
gunzip lnx_920_disk3.cpio.gz

再解包
cpio -idmv lnx_920_disk1.cpio
cpio -idmv lnx_920_disk2.cpio
cpio -idmv lnx_920_disk3.cpio

好了,开始运行runInstaller,激动人心的时刻到了
进入Disk1目录
./runInstaller
怎样,是不是很兴奋啊?(这里可能有的用户会出现街面上的字符全部是小方框看不了,你的系统一定是中文的吧,解决这个问题有些复杂,我用的是英文语言操作系统,不过google肯定可以告诉你解决方法的。)
在接下来的安装过程中,在relink 阶段,会报告两个报错:ins_oemagent.mk 和 ins_ctx.mk. 没关系,点 Ignore 忽略.要升级到9.2.0.4的版本才可以修复这两个Bug.
在上面的安装过程中汇让你用root身份执行几个脚本文件,在执行root.sh的时候汇要求你输入local bin的目录,默认为/usr/local/bin,直接用默认就好了

下面升级到9.2.0.4.0

安装结束后,需要停掉Oracle的所有相关程序.
先用用root用户进行解压和解包 (网上说oracle用户也可以,课我在用别的用户做的时候总是出现文件错误,开始以为是权限问题,可是改了权限以后还是

存在,所以干脆就直接用root用户干了,^_^)
unzip p3095277_9204_LINUX.zip
cpio -icvd < 9204_lnx32_release.cpio   现在可以再次运行Disk1下面的runInstaller,在OUI的界面中找到Patch的Stage文件,然后即可以进行升级. 这里有一点需要注意的: 首先要升级oui,就是在安装过程中汇有几个选项,问你选择安装哪个,你应该先选最后面那个(升级 OUI),否则不让升级到9.2.0.4.而且,升级完oui以后, 要退出oui然后再重新运行oui, 再升级到9.2.0.4.不退出继续升级会报告错误.升级过程中,仍然会出现 ins_oemagent.mk错误,还是点 Ignore 忽略.我们将在 下一个步骤中修复该错误. 这个过程中还会让你用root身份运行root.sh,而且运行过程中汇告诉你***文件已经存在,是否覆盖,选择是。 再次打补丁 升级过后,需要打补丁修复ins_oemagent.mk错误. 下面我还是选择以root身份解压 先解压p2617419_210_GENERIC.zip unzip p2617419_210_GENERIC.zip 再解压p3119415_9204_LINUX.zip unzip p3119415_9204_LINUX.zip 进入3119415目录 cd 3119415 重新设置PATH路径: 先确定当前路径以确定opatch的位置 pwd /home/oracle #这是我的文件路径,每个用户的路径可能不一样 export PATH=$PATH:/home/oracle/OPatch:/sbin 注意(网上找到的资料,开始我没有这样,结果出错): 修改PATH时,除了要包括解压出来的OPatch目录外,还要包括/sbin目录,这样才可以找到 fuser命令.而fuser命令也是该补丁过程所需要的. 好了,运行opatch升级吧 opatch apply 如果没有什么问题,到此应该完成了oracle的安装了 先检查一下自己的成果吧 在oracle用户的身份下运行以下命令 sqlplus /nolog SQL> connect / as sysdba
SQL> startup
SQL>

这时你可以用create table来创建数据库了,和mysql提示符下的操作一样。
如果你现在只是测试服务器,关机时别忘了在sql>提示符下执行一下shutdown来关闭数据库,不然的话,关机的过程将变得非常漫长。

最后还有几件事情做:
1,先清除一下多余的文件吧,如果你的硬盘控件很大不怕占用那几个G的空间你不想清楚也没关系。
2,改回gcc,g++的版本,否则在以后编译安装其他软件时可能会有问题(用root身份)
# mv /usr/bin/gcc323 /usr/bin/gcc
# mv /usr/bin/g++323 /usr/bin/g++

在运行dbca是还汇出现问题:
运行dbca的问题.

$ dbca

会正常出现图形界面,然后可以选择创建数据库,但是最后一步莫名其妙的界面消失.在命令行出现如下错误:

/oracle/product/9.2.0.1/bin/dbca: line 124: 27348 Killed$JRE_DIR/bin/jre -DORACLE_HOME=$OH -DJDBC_PROTOCOL=thin -mx64m -classpath $CLASSPATHoracle.sysman.assistants.dbca.Dbca $ARGUMENTS

要解决这个问题:

$vi $ORACLE_HOME/bin/dbca

#将下面列出的除第3 行外的其余行注释掉(就像下面现在的样子).

#if [ -f /etc/rac_on ]; then
#Run DBCA
$JRE_DIR/bin/jre –native –DORACLE_HOME=$OH……
#else
#Run DBCA
#$JRE_DIR/bin/jre –DORACLE_HOME=$OH……
#fi

到此你就可以用dbca创建一个数据库了,具体创建过程就不说了,图形化界面,一看就懂。
创建数据库以后为了让oracle在系统启动时候自动启动你还需要做一些工作:
首先更改/etc/oratab文件里面的设置(重启标志中每一个实体都设置为: ‘Y’)
TSH1:/u01/app/oracle/product/9.2.0.1.0:Y
然后在新建一个文件放在/etc/init.d目录下面,文件内容如下:

#!/bin/sh
# Set ORA_HOME to be equivalent to the $ORACLE_HOME
# from which you wish to execute dbstart and dbshut;
#
# Set ORA_OWNER to the user id of the owner of the
# Oracle database in ORA_HOME.
ORA_HOME=/u01/app/oracle/product/9.2.0.1.0
ORA_OWNER=oracle
if [! -f $ORA_HOME/bin/dbstart]
then
echo “Oracle startup: cannot start”
exit
fi
case “$1″ in
‘start’)
# Start the Oracle databases:
# The following command assumes that the oracle login
# will not prompt the user for any values
su – $ORA_OWNER -c $ORA_HOME/bin/dbstart &
;;
‘stop’)
# Stop the Oracle databases:
# The following command assumes that the oracle login
# will not prompt the user for any values
su – $ORA_OWNER -c $ORA_HOME/bin/dbshut &
;;
esac

设置文件权限:
chmod 750 /etc/init.d/dbora

连接到适当的可执行脚本文件目录
ln -s /etc/init.d/dbora /etc/rc0.d/K10dbora
ln -s /etc/init.d/dbora /etc/rc3.d/S99dbora

添加root用户到dba用户组和oinstall组(/etc/group) 来允许脚本正确执行,这样,就可以让oracle数据库服务器随系统的启动与关闭自动启动与关闭。

到此整个安装过程就结束了,我在安装过程中出现过很多此问题,折腾了以整个晚上才搞定,从晚上7点一直到早上5点,确实是一个艰辛的历程啊,如果谁有兴趣,欢迎来与我共同交流,共同学习。

最后补充一些必要的软件包和补丁包的下载地址:
compat-db-4.0.14-5.i386.rpm
compat-gcc-7.3-2.96.122.i386.rpm
compat-gcc-c++-7.3-2.96.122.i386.rpm
compat-glibc-7.x-2.2.4.32.5.i386.rpm
compat-libstdc++-7.3-2.96.122.i386.rpm
compat-libstdc++-devel-7.3-2.96.122.i386.rpm
openmotif-devel-2.2.2-16.i386.rpm

补丁包
p2617419_210_GENERIC.zip
p3006854_9204_LINUX.zip
p3095277_9204_LINUX.zip
p3119415_9204_LINUX.zip

看完了要说点啥么?