本文提供一种在RedHat Linux 6.0上安装Oracle 8标准版的简便方法,RedHat 6.0使用glibc 2.1,所以要正常运行Oracle8则必须打补丁。虽然Oracle出品了其最新数据库产品Oracle 8i (8.1.5)for Linux,并在RedHat 6.0上通过测试,但由于该版本bug太多,且采用了与以前版本完全不同安装方式-采用基于Java的安装程序,让很多Oracle的忠实用户颇感不适,所以在Oracle 8i改进之前,建议继续使用Oracle 8.0.5。
一、下载Oracle 8.0.5和补丁程序
你可到Oracle的官方站点下载,在下载之前,必须先去Oracle OTN(Oracle Technology Network)免费注册,这样你可以访问Oracle的很多在线技术文档、下载和讨论区,说不定还可得到一张CDROM。下载的文件是805ship.tgz和glibcpatch.tgz。
国内可到网络工作室 或新丝(思)路下载,但这些站点没有glibcpatch。
二、安装前准备工作
1、检查硬盘自由空间和5.2版兼容库
在硬盘上准备500M以上的自由空间,可以是单独的一个分区,也可以不是。如果有光盘,可以从光盘上直接安装,如果是下载的,先在一个临时目录下(为方便叙述本文用“/apps”)将下载的805ship.tgz解压缩:
tar zxvf 805ship.tgz
检查Oracle 8.0.5所需的Redhat 5.2的兼容库是否已经安装好。
rpm -q compat-binutils
>compat-binutils-5.2-2.9.1.0.23.1
rpm -q compat-glibc
>compat-glibc-5.2-2.0.7.1
rpm -q compat-egcs
>compat-egcs-5.2-1.0.3a.1
rpm -q compat-egcs-c++
>compat-egcs-c++-5.2-1.0.3a.1
rpm -q compat-libs
>compat-libs-5.2-1
如果没有安装好上述这些兼容库,可从RedHat 6.0光盘或去有关站点下载后进行安装:
rpm -ivh compat-binutils-5.2-2.9.1.0.23.1.i386.rpm
rpm -ivh compat-glibc-5.2-2.0.7.1.i386.rpm
rpm -ivh compat-egcs-5.2-1.0.3a.1.i386.rpm
rpm -ivh compat-egcs-c++-5.2-1.0.3a.1.i386.rpm
rpm -ivh compat-libs-5.2-1.i386.rpm
2、修改内核内存参数SHMMAX
你可以修改内核的内存参数以便让Oracle支持更大的共享内存(最大4G),但很多用户指出4G可能用问题,32M内存足以运行Oracle,所以你可以不改SHMMAX,不过如果你有更多的内存(如128M),建议修改SHMMAX:
cd /usr/src/linux/include/asm
vi shmparam.h
找到“#define SHMMAX 0x2000000”,修改0x2000000为适当的值(0x80000000=128M),保存文件并重新编译核心,安装新内核。(有关核心编译和安装新内核请参阅核心源代码自带的说明文件)。
3、创建Oracle用户和组
创建Orale组和用户:
groupadd dba (在RedHat 6.0上,该组的ID可能是500)
groupadd oper (该组是可选的,其ID可能是501)
useradd oracle -g dba
passwd oracle (修改口令)
创建Orcale的安装目录,可以是一个单独的分区。不妨是“/u1”(你也可以欺骗Orcale,创建4个目录如/u1、/u2、/u3、/u4)。设置/u1目录的所有者:
chown oracle.dba /u1
进入""/apps""(805ship.tgz解压缩的目录),运行oratab脚本:
cd /apps
cd orainst
ORACLE_OWNER=oracle; export ORACLE_OWNER
sh oratab.sh
logout
重新用oracle用户登录,将下载的补丁程序glibcpatch.tgz拷贝到一个目录下解压缩:
cd /apps (假定glibcpatch在/apps目录下)
mkdir ~/orapatch
cp glibcpatch.tgz ~/orapatch
cd ~/orapatch
tar zxvf glibcpatch.tgz
键入umask回车,检查其结果是否为“022”,如果不是,则在下面的“.profile”中加入“umask 022”。
在oracle用户的根目录“/home/oracle”(或~)下创建“.bash_profile”脚本:
cd ~
vi .bash_profile
在该文件中增加如下内容:
ORACLE_HOME=/u1/app/oracle/product/8.0.5; export ORACLE_HOME
LD_LIBRARY_PATH=/u1/app/oracle/product/8.0.5/lib; export LD_LIBRARY_PATH
ORACLE_BASE=/u1/app/oracle; export ORACLE_BASE
ORACLE_DOC=/u1/app/oracle/product/8.0.5/doc; export ORACLE_DOC
ORACLE_SID=ORCL; export ORACLE_SID
ORACLE_TERM=386; export ORACLE_TERM
PATH=$PATH:/u1/app/oracle/product/8.0.5/bin; export PATH
TMPDIR=/var/tmp; export TMPDIR
如果umask不是返回""022"",加入
umask 022
ORACLE_DOC指出Oracle文档的安装目录,如果不在这里指定也可在安装过程中指定。如果接受默认的文档目录,安装程序将出错,以至于不能完成安装过程,这是Oracle的一个bug。
重新登录,用“env”命令检查上述的设置是否正确。
4、安装Oracle 8.0.5
cd /apps/orainst
./orainst /c
选择“Custom Install”、OK、“Install,Upgate or De-install software”、“Install new product-DO NOT Create DB objects”(这一点很重要),检查“ORACLE_HOME”和“ORCALE_BASE”是否正确,接受默认log文件路径,选择从CDROM安装,选择恰当的语言(建议用American/English)。安装程序会告诉你“root.sh”在什么地方以便在安装完毕后执行。这时你就可以选择安装那些软件,如果你已安装了JAVA SDK并设置了正确的CLASSPATH,可选择安装JDBC,如果安装了TCL软件包,可以选择“Intelligent agent”,不过此时建议你可以不安装这些选件,以后可根据需要安装。按“Install”开始安装。
在安装过程中有几个要注意的地方。关于ULIMIT的提示可以忽略,dba和oper组可以接受默认值,特别注意的地方是安装文档的目录,如果设置了ORCALE_DOC,则默认即可,否则一定要设置为“/u1/app/oracle/product/8.0.5/doc”,不然安装程序将提示“将文件拷贝到一个不存在的目录”,这是一个bug。
如果你看到“The requested action has been performed for selected products”这样的提示,按“Exit”选“Yes”退出安装程序,你会看到一条“Result:Success”。
5、安装补丁
由于RedHat 6.0使用了新版glibc库,而且该版本与Oracle不兼容,在RedHat 6.0上安装Oracle 8.0.5会有下列情况发生:
如果在安装过程中创建数据库导致安装失败。
运行Oracle的二进制文件如SVRMGRL和SQLPLUS会导致“Segmentation fault”。
Oracle为此发布了一个补丁程序glibcpatch,他“修正”了4个RedHat 6.0的兼容库(在RedHat 6.0的光盘上提供的),这绝对不是最好的解决方案,因为他不用最新的glibc库,但不幸的是这是唯一的解决方法。
cd ~/orapatch
sh glibcpatch.sh
经过一段时间后(视你的机器配置而定),你会看到“Applied glibc patch for Oracle 8.0.5.x successfully”,这表明补丁成功。
6、创建数据库
cd /apps/orainst
./orainst /c
选择“Custom Install”、“Create /Upgrade database objects”、“Create Database objects”、检查ORACLE_HOME和ORCALE_BASE、接受默认log文件目录、必须选择“Oracle 8 Standard RDBMS 8.0.5.0.0”、按“Install”、选择“Create Product DB objects”、选择“Filesystem-based Database”、如果你准备将控制文件分布在多个“安装点”(Mount point),可在下个窗口指定,在这里我们选择单一安装点“/u1”。再选择适当的“Character set”、选择适当的“national chchacter set”、输入SYSTEM和SYS账户的口令、如果需要为dba和operator指定一个内部口令,则输入口令,否则选“no”、输入“TNS listener”口令、配置“MIS listener”时选“no”、接受控制文件的默认值、按OK到下两屏、最后选“Yes” 接受这些默认值。此时开始创建数据库,这需要很长的时间,直到看到“The requested action has been performed for selected products”后,按“OK”回到安装主窗口,退出安装程序。
7、安装完毕后
重新以root身份登录,先将/“root”的“.bash_profile”作个备份,在将“/home/oracle/.bash_profile”拷贝到“/root”下。
cp /root/.bash_profile /root/.bash_profile.sav
cp /home/oracle/.bash_profile /root/.bash_profile
logout
再以root登录以便执行.bash_profile脚本,用env命令检查环境设置。然后:
cd $ORACLE_HOME/orainst
sh root.sh
检查ORACLE_OWNER、ORACLE_HOME和ORACLE_SID的设置是否正确,如果正确,按“Y”。当提示本地bin目录时,输入“/usr/local/bin”,该脚本会提示你ORACLE_HOME与orcale的主目录不匹配,不用担心,键入“Y”继续下去。
脚本执行完毕后,用oracle用户登录,停止服务器:
svrmgrl
connect internal
shutdown
quit
8、修改TNS Listener的权限
TNS Listener以不正确的权限安装的,运行下列命令进行修改:
su root
[输入口令]
chown oracle.dba $ORACLE_HOME/bin/tnslsnr
chmod 750 $ORACLE_HOME/bin/tnslsnr
chown oracle.dba $ORACLE_HOME/network/log
chmod 775 $ORACLE_HOME/network/log
chown root.dba $ORACLE_HOME/network/log/listener.log
chmod 664 $ORACLE_HOME/network/log/listener.log
exit (退出root)
9、启动orcale服务器并测试
如果当前用户不是oracle(whoami),退出登录后以orcale用户登录。如果你想从其他PC上的GUI工具访问Orcale,则需运行TNS Listener,默认的配置是TCP/IP,你可能需要修改。
启动侦听器(Listener):
lsnrctl start
启动Oracle服务器:
svrmgrl
connect internal
startup
quit
现在用sqlplus启动一个创建用户资料(profile)的脚本程序:
cd $ORACLE_HOME/sqlplus/admin
svrmgrl
connect system/
(默认是 ""manager"")
@pupbld.sql
quit
下述脚本创建一个scott的用户,口令是tiger,你可以为此用户设置一个表的示例:
cd $ORACLE_HOME/rdbms/admin
sqlplus (用sys连接,默认口令为change_on_install)
@utlsampl.sql
quit
检查刚才创建的数据库:
sqlplus scott/tiger
SQL>select * from dept;
你可以看到表dept的记录内容。
如果现在你能创建用户数据库表(table),你的Oracle数据库应该是启动并在运行了!
最后一步,用root重新登录,将刚才备份的“.bash_prifle”恢复。
copy /root/.bash_profile.sav /root/.bash_profile