参考了网上很多贴子,安装总是不行,经过两次重装linux,无数次安装oracle8i终于安装成功,并总结出以下安装步骤。这个安装步骤是我安装好以后写的,之后没有一步一步按这个文档重新安装测试。本人第一次写文章,请大家参考指正。
准备文件
* 企业版oracle8i R3 8.1.7
linux81701.tar
* redhat 6.2兼容包
compat-libs-6.2-3.i386.rpm
compat-glibc-6.2-2.1.3.2.i386.rpm
compat-egcs-6.2-1.1.2.16.i386.rpm
* binutils
binutils-2.13.90.0.2-2.i386.rpm (redhat linux 8.0)我安装时用的这个
或
binutils-2.11.93.0.2-11.i386.rpm (redhat linux 7.3)
* oracle官方站点上放出的补丁
glibc-2.1.3-stubs.tar.gz
关于binutils的说明:
oracle的文件请到oracle官方站点下载,redhat兼容包和binutils请到redhat官方站下载,据我研究下来,相信最新的linux81701.tar文件,oracle是用了较新的ld重新编译过,所以binutils要用redhat linux 8.0或7.3带的,只有这两个版本的binutils的ld既支持elf_i386_glibc21又同时支持--eh-frame-header链接选项,因为安装时编译.mk文件出错好多都是因为ld不支持--eh-frame-hdr这个参数。
把前面的文件放到一个目录下,如/orafile。
下面要用root身份的来做:
安装兼容包:
cd /orafile
rpm -Uvh --nodeps --force compat*
rpm -qa | grep compat 看看安装上了没有
先卸载然后安装binutils,
rpm -e --nodeps binutils
rpm -Uvh --force --nodeps binutils*
添加oracle用户及oracledba组(也可以用图形界面做)
groupadd oracledba
useradd -g oracledba -G oracledba oracle
passwd oracle
现在注消一下,用oracle帐号登录,我们来建立目录和设置环境变量:
根据需要建立oracle的安装目录,
我把oracle安装到/home/oracle/product/8.1.7目录,
cd /home/oracle
mkdir -p product/8.1.7
编辑在/home/oracle/.bash_profile文件最后增加如下几行或直接拷贝oracle.bash_profile。
# begin of specific environment for oracle8i 8.1.7
#export JAVA_HOME=/usr/local/java
# if no this line, the runInstaller will no response
export LD_ASSUME_KERNEL=2.2.5
#export LDEMULATION=elf_i386_glibc21
#export GCC_EXEC_PREFIX=/usr/i386-glibc21-linux/lib/gcc-lib/
#the above two lines equal to the following line
source /usr/i386-glibc21-linux/bin/i386-glibc21-linux-env.sh
export ORACLE_BASE=/home/oracle
export ORACLE_HOME=$ORACLE_BASE/product/8.1.7
export PATH=$PATH

ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
#the following line should be set after finished install and create the database SID
#export ORACLE_SID=oradb
export NLS_LANG="SIMPLIFIED CHINESE"_CHINA.ZHS16CGB231280
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
#end of specific environment for oracle8i 8.1.7
保存以后退出,完全注销,重新启动X Window,如果不注销,则X Window的环境将是老的环境,这样的话,用图形环境启动runInstaller就不对了,所以干脆注销再登录。
用env命令察看一下变量是否已经设置正确
运行ld -v 察看ld的版本运行 ld --help 确定支持elf_i386_glibc21和--eh-frame-header。
至此,准备工作完成。
开始安装。
oracle用户登录后,启动X Window
运行runInstaller开始安装。
注意,runInstaller没反应的另一种情况是oracle用户不具有运行它的权限,用root用户修改权限即可。
按照提示安装,过一会oracle会提示你要用root身份运行orainstRoot.sh文件
用root登录或su,
cd $ORACLE_HOME
./orainstRoot.sh
在选择安装类型的时候最好选Custom,Typical会导致创建数据库失败。
因为Custom安装会提示你是否要用该向导来创建一个数据库,我们可以选否来避免建库失败。等安装完打过补丁再用dbassist建库。
组件选择,一般建议不要安装,HTTPserver, Oracle Products Options, Java Products, 和Development Tools,如果没有必要的话建议不要安装Jserver,不过安装时好像去不掉。
文件copy结束后编译时到65%的时候会提示ins_precomp.mk文件出错,点Ignore就行了,然后一个一个的其他.mk文件也都有编译错误,全部Ignore,稍后我们用补丁对它们进行修正。
然后会提示让你运行root.sh,用root登录或su都可以
cd $ORACLE_HOME
先不要急着运行root.sh,因为文件有两个错误,
在第多少行是不确定的,因为不同的安装选项,root.sh的内容不同。
把
RMF=/bin/rm -f 改为
RMF="/bin/rm -f"
RUID=`/usr/bin/id|$AWK -F\( '{print $2}'|$AWK -F\) '{print $1}` 改为
RUID=`/usr/bin/id|$AWK -F\( '{print $2}'|$AWK -F\) '{print $1}'`
保存后运行。
./root.sh
点击OK,然后会进入Net8的配置界面,根据提示配制,安装就结束了。
退出oracle universal installer。
安装结束。
下面开始打补丁(oracle用户)
cd /orafile
tar zxvf glibc-2.1.3-stubs.tar.gz -C $ORACLE_HOME
cd $ORACLE_HOME
setup_stubs.sh 也有bug,先修改,在85行
将
make -i -f $file relink >/dev/null 2>&1
修改为
make -i -f $file relink EXENAME=ott >/dev/null 2>&1
然后运行
./setup_stubs.sh
打补丁时ins_net_server.mk的编译其实是没有通过的,因为setup_stubs.sh运行时把输出重定向到/dev/null,所以没人能看到出错信息。我是把编译输出重定向到文件中,所以才知道这个错误。
错误是在link时有几个外部变量引用没有找到,这个问题我没解决掉。影响的文件是$ORACLE_HOME/bin/下的lsnrctl,ilsnrctl,tnslsnr,itnslsnr这些文件被改成了文件名后面加了个字母O,不过万幸的是这些加了O的老的文件是好的只需将他们名字改回原来的即可,也就是将O去掉,哈哈。
下面我们来建数据库,
dbassist
一个图形化的界面,根据提示进行选择就可以了,注意设置ORACLE_SID,
在本例中ORACLE_SID是oradb应该和数据库的名字一样。
数据库建立完毕,再编辑一下.bash_profile把ORACLE_SID加进去。
最后的配置
为以后使用方便需要修改/etc/oratab文件,把后面的N改成Y,改完后像这样就可以了:
*:/home/oracle/product/8.1.7:Y
你的SID:/home/oracle/product/8.1.7:Y
这样以后运行dbstart时,数据库将自动启动。
如果希望linux启动时数据库也自动启动,如下设置, (root用户)
修改/etc/rc.local文件加入两行:
su --login oracle -c 'lsnrctl start'
su --login oracle -c 'dbstart'
至此,已经在Redhat Linux 9.0上面成功安装了oracle8i R3 8.1.7,基本上做到了零错误安装。