因为安装Oracle本来就是一件麻烦事,更何况在Linux环境下。以往也有一些相关的教程,但大多以AS3或者AS4为主。自从Redhat发布RHEL5后,还没有很好的参考资料。即使有一些残缺的文献,大多都是个人撰写的,其中夹带着一些个人感慨或者其它一些不相关的东西在里面,或者在安装过程当中先操作一些错误的步骤,才回过头告诉你正确的方法。看多了整个人就迷失在作者的梦境当中去了。
基于上述这些原因我才撰写了此文,本文采用了RHEL AS 5+Oracle9i的组合方式。个人觉得这个组合还是比较有代表性的:前者是Redhat最新的服务器版本;后者是Oracle中用得比较广泛也是最容易得到的版本,尤其有利于初学者或者环境演示使用。
本文力求将安装Oracle的过程简单化,思路清晰明了,去除繁杂无用的东西。正如李小龙恩师叶大师所讲的“剪枝蔓,立主脑”也就是这个道理吧。
 
3.  软件准备
 
在安装之前我们要先准配好这一次要用到的所有软件包。
 
lRHEL5安装包(共五张CD)
 
lOracle安装包:
ship_9204_linux_disk1.cpio
ship_9204_linux_disk2.cpio
ship_9204_linux_disk3.cpio
 
l操作系统补丁包rhel3_pre_install.sh
 
lRPM软件包:
 libXpm-3.5.5-3.i386  来自RHEL5-Disk1
 libXpm-devel-3.5.5-3.i386  来自RHEL5-Disk2
 libXp-1.0.0-8.i386  来自RHEL5-Disk2
 libXp-devel-1.0.0-8.i386  来自RHEL5-Disk2
 
4.  注意事项
 
1)      建议在装系统时手工分区,如果你选用自动分区的话一定要在分区之后查看一下根目录的空间是否够用。因为接下来在Oracle的安装主目录/home下面将会使用很大的空间。
2)      不要过度的迷信RHEL为你准备的【定制添加/删除软件包】功能,安装系统的时候必须选择【定制安装】并且将所有可能要用到的软件包尽量一次装全,以免以后留下麻烦,尤其是【开发】和【服务器】这两项。
3)      这是老生常谈了,修改文件时要注意先备份再操作。
4)      凡是在Windows终端使用SSH工具远程登录操作的,在修改内核文件时,绝对不要用拷贝粘贴功能,不管多麻烦也要老老实实、一个字符一个字符地敲!你的编辑器不见得真的是纯文本文件,在拷贝粘贴的过程中很可能会混入一些Linux不能识别的字符,导致内核文件损坏和系统瘫痪。
 
5.  系统安装
 
安装RHEL AS 5不再赘述,只要注意以下几点就可以了。
1)      安装时的支持语言选择【Chinese Simple
2)      安装软件包时选择【定制安装】,定制的软件包如下:
l 桌面环境
默认即可,建议将【KDE】也选上。
l 应用程序
至少应当选中【工程加科学】和【编辑器】
l 开发(全选)
强烈建议全部选中,包括每个模块下的软件包,免得日后带来不必要的麻烦。
l 服务器
至少应当选中【服务器配置工具】和【网络服务器】
l 基本系统
至少应当选中【Java】、【X窗口系统】、【管理工具】和【系统工具】
l 语言支持
默认【Chinese Simple+English (USA)
3) 如果你不熟悉防火墙的话,强烈建议禁用防火墙,免得日后带来不必要的麻烦。
 
6.  系统配置
 
1)        建立用户和用户组
# groupadd oinstall
# groupadd dba
# useradd -g oinstall -G dba oracle
# passwd oracle
 
2)        建立安装目录
# mkdir -p /home/oracle/product/9.2.0
# chown -R oracle.dba /home/oracle
 
3)        设置内核参数,调节信号灯及共享内存。修改文件/etc/sysctl.conf
 
//这是内存2G的参数,依据实际情况要对前两行做修改。
kernel.shmmax = 2147483648
//参数单位为字节,即2*1024*1024*1024
kernel.shmall = 2097152
//参数单位为字节,即2*1024*1024
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
 
修改sysctl.conf文件完成后,要执行sysctl命令使之生效。
#sysctl –p
 
4)        打补丁
将补丁rhe13_pre_install.sh上传到当前任意目录,然后执行。
#sh rhe13_pre_install.sh
 
如果补丁安装正常,则会出现如下提示:
Applying patch...
Ensuring permissions are correctly set...
Done.
Patch successfully applied
到此,操作系统的配置工作已经完成。也就是说我们做好了环境平台的搭建,下面就可以正式地进行Oracle9i的安装了。
 
7.  Oracle 9i 的安装
 
1)      登录复制安装包
 
oracle用户登录,将Oracle安装包上传到用户主目录(/home/oracle)中。
 
2)      解压安装包
$cpio -idvm < ship_9204_linux_disk1.cpio
$cpio -idvm < ship_9204_linux_disk2.cpio
$cpio -idvm < ship_9204_linux_disk3.cpio
 
3)      修改文件/home/oracle/.bash_profile
 
export ORACLE_BASE=/home/oracle
export ORACLE_HOME=/home/oracle/product/9.2.0
export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin
export ORACLE_OWNER=oracle
export ORACLE_SID=cadb
export ORACLE_TERM=xterm
export THREADS_FLAG=native
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.zhs16gbk"
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
 
 
修改完执行source 命令使变量生效,或者重新启动系统也可以。执行时注意一下执行的结果,如果语法错误会提示。
#source .bash_profile  或者  #reboot
 
4)      准备工作
$ su - root
# cd /usr/lib
# ln -s libstdc++-3-libc6.2-2-2.10.0.so libstdc++-libc6.1-1.so.2
 
5)      安装支持软件包
# rpm -ivh libXpm-3.5.5-3.i386.rpm
# rpm -ivh libXpm-devel-3.5.5-3.i386.rpm
# rpm -ivh libXp-1.0.0-8.i386.rpm
# rpm -ivh libXp-devel-1.0.0-8.i386.rpm
# ulimit -s
# exit
 
6)      安装Oracle 9i DataBase 9.2.0.4.0
 
oracle用户登录,运行如下命令,打开安装程序的欢迎界面。(如图1)
$export LANG=en_US
$/home/oracle/Disk1/runInstaller
 
RHEL5上Oracle9i的安装 _Oracle9i 
 
这一步是让你选择基准目录,默认即可。(如图2)
RHEL5上Oracle9i的安装 _Oracle9i_02 
 
安装过程中要求输入【UNIX Group Name】,这里要输入oinstall(如图3)
RHEL5上Oracle9i的安装 _oracle_03 
 
到了这一步(如图4)要重新打开一个终端窗口,执行如下命令:
$ su - root
# /tmp/orainstRoot.sh
执行完毕后,再回到安装界面点击【Continue】按钮。
 
RHEL5上Oracle9i的安装 _rhel_04
 
  这一步是让你选择安装目录,默认即可。(如图5)
RHEL5上Oracle9i的安装 _休闲_05
 
接下来要对安装选项做一些设置。(如图6至图8)
安装项目为:Oracle9i DataBase 9.2.0.4.0
安装类型为:Enterprice Edition
软件包选择:Software Only
 
RHEL5上Oracle9i的安装 _RHEL5_06 
 
RHEL5上Oracle9i的安装 _Oracle9i_07
 
RHEL5上Oracle9i的安装 _oracle_08 
 
到了这一步(如图9)要重新打开一个终端窗口,执行如下命令:
$ su - root
# /home/oracle/product/9.2.0/root.sh
这里会提示一句:
Enter the full pathname of the local bin directory:[/usr/local/bin]
直接敲回车即可,再回到安装界面点击【OK】按钮。
 
RHEL5上Oracle9i的安装 _休闲_09 
 
到了这一步就安装完毕了,点击【Exit】按钮退出。(如图10)
RHEL5上Oracle9i的安装 _oracle_10 
 
7)      创建链接
$ cd /home/oracle/product/9.2.0
$ ls -l JRE
$ rm JRE
$ ln -s /home/oracle/jre/1.3.1 JRE
$ su - root
#cd /home/oracle/product/9.2.0/JRE/bin
#ln -s java jre
#cd i386/native_threads
#ln -s java jre
#exit
 
8)      创建数据库
 
运行如下命令,打开数据库配置的欢迎界面。
$export LANG=en_US
$dbca
安装过程中一般默认即可。但有几点要注意。第三步为全局数据库和SID起名的时候要注意保持一致。(如图11)
 
RHEL5上Oracle9i的安装 _休闲_11
 
第五步Database Character Sets中要将字符集设置成ZHS16GBK(如图12)  
RHEL5上Oracle9i的安装 _oracle_12
 
注意设密码时候不能纯数字,一般数字加字母。(如图13)
RHEL5上Oracle9i的安装 _Oracle9i_13 
 
数据库创建完成后还有三项工作:
第一步,修改文件/etc/oratab,把最后一行的N改成Y
第二步,将初始化文件/home/oracle/admin/你创建的那个数据库/pfile/init*.ora.* 复制到/home/oracle/product/9.2.0/dbs/initcadb.ora
最后启动数据库。
$dbstart
 
9)      创建监听器
$netca
首先进入配置界面,选择【监听器配置】项,一路【Next】下去直到返回配置界面。(如图14)
 
RHEL5上Oracle9i的安装 _Oracle9i_14
 
然后再选择【本地网络服务名称配置】项继续(如图15),但是这里有几个地方需要注意一下:
Service Name为全局数据库名称,即你创建的那个数据库名称。
Host name为本机的主机名或者IP地址。
Net Service Name为默认和Service Name同名,你也可以改为其他的名字。
 
RHEL5上Oracle9i的安装 _休闲_15
 
创建完成后会在/home/oracle/product/9.2.0/network/admin目录下生成listener.oratnsnames.ora这两个文件,前者是【监听器配置】项配置完成后生成的,后者是【本地网络服务名称配置】项配置完成后生成的。这两个文件的生成说明监听器创建成功,但配置不一定正确。
所以需要修改文件listener.ora        添加如下内容
SID_LIST_LISTENER =          //这一段可能不用改了。
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /home/oracle/product/9.2.0)
(PROGRAM = extproc)
)
)
(SID_DESC =
(GLOBAL_DBNAME = cadb) 
//要与SID_NAME的名称一致。
(ORACLE_HOME = /home/oracle/product/9.2.0)
(SID_NAME =cadb) 
//要与 GLOBAL_DBNAME一致。
)
 
修改完成后,需要重启监听服务
$lsnrctl stop
$lsnrctl start
 
10)  输出环境变量及备份数据库
$source /home/oracle/.bash_profile
$exp system/密码 owner=xxbra file=/tmp/ra.dmp log=/tmp/ra.log rows=y
$export LANG=en_US
$dbsart
 
11)  启动数据库管理工具
 
修改文件/home/oracle/product/9.2.0/bin/oemapp
 
在文中第90
将原文:PATH=/home/oracle/jre/1.1.8/bin:$PATH
修改为:PATH=/home/oracle/jre/1.3.1/bin:$PATH
 
在文中第100
JRE="jre $JRENATIVEOPTION -nojit $ORACLE_OEM_JAVAMX $TRACE"
将原文中-nojit参数去掉。
 
12)  创建表空间
$oemapp dbastudio
进入图形界面,以sys管理员身份登录,创建表空间及用户。由于是图形界面,和其他SQL数据库管理工具大同小异。因此,在这里就不再赘述了,具体请见截图。
登录数据库管理器的步骤如下。(如图16至图18)
 
RHEL5上Oracle9i的安装 _休闲_16
登录数据库管理器
 
RHEL5上Oracle9i的安装 _rhel_17  添加数据库
 
RHEL5上Oracle9i的安装 _rhel_18  输入用户名密码
 
 
 
创建表空间的步骤如下。(如图19至图22)
RHEL5上Oracle9i的安装 _oracle_19  创建表空间
 
RHEL5上Oracle9i的安装 _休闲_20  配置表空间
 
RHEL5上Oracle9i的安装 _oracle_21  调整表空间容量
 
RHEL5上Oracle9i的安装 _oracle_22  创建成功
 
创建用户角色的步骤如下。(如图23至图28)
RHEL5上Oracle9i的安装 _Oracle9i_23  创建用户
 
RHEL5上Oracle9i的安装 _Oracle9i_24  用户命名
 
RHEL5上Oracle9i的安装 _rhel_25  角色配置
 
RHEL5上Oracle9i的安装 _RHEL5_26  系统配置
 
RHEL5上Oracle9i的安装 _rhel_27  用户组配置
 
RHEL5上Oracle9i的安装 _Oracle9i_28  创建成功
 
 
8.  写在最后的话
 
顺便说一句,由于Oracle9i的监听器会经常读写日志文件listener.log,该日志一旦膨胀过大(2G),就会造成监听器启动失败。因此需要关闭掉日志写入功能。
解决方案如下:
/home/oracle/product/9.2.0/network/admin/listener.ora中的最后加上一句
 
LOGGING_LISTENER=OFF
 
但是要注意的是:这一句必须在数据库或监听器重启过以后再进行修改。不要在刚开始修改listener.ora时就加上这一句,否则会引起监听器启动失败。