因为安装
Oracle
本来就是一件麻烦事,更何况在
Linux
环境下。以往也有一些相关的教程,但大多以
AS3
或者
AS4
为主。自从
Redhat
发布
RHEL5
后,还没有很好的参考资料。即使有一些残缺的文献,大多都是个人撰写的,其中夹带着一些个人感慨或者其它一些不相关的东西在里面,或者在安装过程当中先操作一些错误的步骤,才回过头告诉你正确的方法。看多了整个人就迷失在作者的梦境当中去了。
基于上述这些原因我才撰写了此文,本文采用了
RHEL AS 5+Oracle9i
的组合方式。个人觉得这个组合还是比较有代表性的:前者是
Redhat
最新的服务器版本;后者是
Oracle
中用得比较广泛也是最容易得到的版本,尤其有利于初学者或者环境演示使用。
本文力求将安装
Oracle
的过程简单化,思路清晰明了,去除繁杂无用的东西。正如李小龙恩师叶大师所讲的“剪枝蔓,立主脑”也就是这个道理吧。
3.
软件准备
在安装之前我们要先准配好这一次要用到的所有软件包。
l
RHEL5
安装包
(
共五张
CD)
l
Oracle
安装包:
ship_9204_linux_disk1.cpio
ship_9204_linux_disk2.cpio
ship_9204_linux_disk3.cpio
l
操作系统补丁包
rhel3_pre_install.sh
l
RPM
软件包:
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
![](https://i-blog.csdnimg.cn/blog_migrate/46450a011e4a212bfc8beaeb7d5aa7ce.gif)
这一步是让你选择基准目录,默认即可。
(
如图
2)
![](https://i-blog.csdnimg.cn/blog_migrate/a9f9b3125cf242283c9c2ca803136de3.gif)
安装过程中要求输入【
UNIX Group Name
】,这里要输入
oinstall
。
(
如图
3)
![](https://i-blog.csdnimg.cn/blog_migrate/88e48fc636ef805f1d5d69ea647b710d.gif)
到了这一步
(
如图
4)
要重新打开一个终端窗口,执行如下命令:
$ su - root
# /tmp/orainstRoot.sh
执行完毕后,再回到安装界面点击【
Continue
】按钮。
![](https://i-blog.csdnimg.cn/blog_migrate/c021110b5266068956b987459068b0ee.gif)
这一步是让你选择安装目录,默认即可。(如图5)
![](https://i-blog.csdnimg.cn/blog_migrate/eddcf770709938287536e2a2e988a273.gif)
接下来要对安装选项做一些设置。
(
如图
6
至图
8)
安装项目为:
Oracle9i DataBase 9.2.0.4.0
。
安装类型为:
Enterprice Edition
。
软件包选择:
Software Only
。
![](https://i-blog.csdnimg.cn/blog_migrate/b405caed81d47642ac96302981671412.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4ba61c9434a05c9280fbe44910121c61.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/fcb2d87a68ae78a6e800459d5da048bc.gif)
到了这一步
(
如图
9)
要重新打开一个终端窗口,执行如下命令:
$ su - root
# /home/oracle/product/9.2.0/root.sh
这里会提示一句:
Enter the full pathname of the local bin directory:[/usr/local/bin]
直接敲回车即可,再回到安装界面点击【
OK
】按钮。
![](https://i-blog.csdnimg.cn/blog_migrate/60a683070a39ddbe91a6316f6bf4fc3d.gif)
到了这一步就安装完毕了,点击【
Exit
】按钮退出。
(
如图
10)
![](https://i-blog.csdnimg.cn/blog_migrate/abf89ab2c58ca935a7ab6a667d06d3b3.gif)
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)
![](https://i-blog.csdnimg.cn/blog_migrate/6473fdab839d3736a173a4984360ec41.gif)
第五步
Database Character Sets
中要将字符集设置成
ZHS16GBK
。
(
如图
12)
![](https://i-blog.csdnimg.cn/blog_migrate/cd4946636b8a65ae7614cc9002cb9fa2.gif)
注意设密码时候不能纯数字,一般数字加字母。
(
如图
13)
![](https://i-blog.csdnimg.cn/blog_migrate/757c5eb42ad94caa7dc27fd14daa1954.gif)
数据库创建完成后还有三项工作:
第一步,修改文件
/etc/oratab
,把最后一行的
N
改成
Y
。
第二步,将初始化文件
/home/oracle/admin/
你创建的那个数据库
/pfile/init*.ora.*
复制到
/home/oracle/product/9.2.0/dbs/initcadb.ora
。
最后启动数据库。
$dbstart
9)
创建监听器
$netca
首先进入配置界面,选择【监听器配置】项,一路【
Next
】下去直到返回配置界面。
(
如图
14)
![](https://i-blog.csdnimg.cn/blog_migrate/71fe39bb93be8180ed215ba449ec84ba.gif)
然后再选择【本地网络服务名称配置】项继续
(
如图
15)
,但是这里有几个地方需要注意一下:
Service Name
为全局数据库名称,即你创建的那个数据库名称。
Host name
为本机的主机名或者
IP
地址。
Net Service Name
为默认和
Service Name
同名,你也可以改为其他的名字。
![](https://i-blog.csdnimg.cn/blog_migrate/018e2b6bc9281f37e176ba52d305e5ba.gif)
创建完成后会在
/home/oracle/product/9.2.0/network/admin
目录下生成
listener.ora
和
tnsnames.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)
![](https://i-blog.csdnimg.cn/blog_migrate/b4600487c5fc24d0d9da4eeab13a94c5.gif)
登录数据库管理器
![](https://i-blog.csdnimg.cn/blog_migrate/9cecde44aa1411abf63845b32b1e8ead.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/94110a4357379cf5d2c80ec253a8f0bb.gif)
创建表空间的步骤如下。
(
如图
19
至图
22)
![](https://i-blog.csdnimg.cn/blog_migrate/1e2047edcf2d60230633f5640e8d78cf.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37ceb906ab9703a935c9e467d935bfd2.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/21cedb9e0b9ad5dc47cd32c3eaaedd05.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/279b936c9d6bcba2b7ed86fb2bb42112.gif)
创建用户角色的步骤如下。
(
如图
23
至图
28)
![](https://i-blog.csdnimg.cn/blog_migrate/033a68a0f663c6277f9b74d99c5972b7.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5e296236920846fdf279cf02696306e9.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/213a0daeb0bbbd1f7e1f8645b0b40fd1.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/cff0f47316d8759c1ac119893c13bf0c.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6457da55cf728067fa385b76687489eb.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/87464b931e7ba17cadf156c0df838c80.gif)
8.
写在最后的话
顺便说一句,由于
Oracle9i
的监听器会经常读写日志文件
listener.log
,该日志一旦膨胀过大
(2G)
,就会造成监听器启动失败。因此需要关闭掉日志写入功能。
解决方案如下:
在
/home/oracle/product/9.2.0/network/admin/listener.ora
中的最后加上一句
LOGGING_LISTENER=OFF
但是要注意的是:这一句必须在数据库或监听器重启过以后再进行修改。不要在刚开始修改
listener.ora
时就加上这一句,否则会引起监听器启动失败。