Redhat AS4上安装64位Oracle9204 博客分类: mylinux RedHatOracleGCC脚本Linux
Redhat AS4上安装 6 4 位Oracle9204
===========================================================
作者: yangtingkun(http://yangtingkun.itpub.net)
发表于: 2006.09.20 20:03
分类: ORACLE
出处: http://yangtingkun.itpub.net/post/468/211768
---------------------------------------------------------------
第一次尝试在REDHAT AS4上安装64位Oracle,由于缺少资料且操作系统知识相对匮乏,导致安装过程中错误频繁出现,不过幸好通过两天的不断折腾,终于将Oracle安装成功。这里将安装步骤简单总结一下,尽量使后来人少走弯路。
这篇文档参考了Oracle9i for Linux x86-64的官方安装文档,不过这篇文档中遗留的东西很多。另外还参考了metalink上的几篇文档,这几篇文章主要是介绍如何解决isqlplus链接失败的。
下面就开始介绍安装步骤,对于简单的部分就不多做说明了:
首先检查系统是否满足安装Oracle的要求,其实这个对于目前大部分的服务器都是满足的,不过为了完整起见,还是把Oracle的最低要求和检查脚本列出来:
512M以上内存;
1G以上交换空间;
/tmp目录下400M以上空间。
# grep MemTotal /proc/meminfo
# grep SwapTotal /proc/meminfo
# df -k /tmp
# grep "model name" /proc/cpuinfo
另外,需要保证Oracle的安装目录至少有超过2.5G的空间,才能保证企业版的正常安装。
通过下面的脚本检查操作系统信息
# more /etc/issue
# uname -a
下面通过rpm –qa来检查操作系统是否已经包含了安装Oracle所需要的包。由于没有官方版的AS4所需的包的列表,我根据官方AS3所需列表将我的环境中对应的包列出,并将个人认为比较重要的放在前面。
kernel-2.6.9-42.EL
glibc-devel-2.3.4-2.25
glibc-2.3.4-2.25
gcc-3.4.6-3
gcc-c++-3.4.6-3
compat-libgcc-296-2.96-132.7.2
compat-gcc-32-3.2.3-47.3
compat-gcc-32-c++-3.2.3-47.3
libstdc++-devel-3.4.6-3
libstdc++-3.4.6-3
gtk+-1.2.10-33
gnome-libs-1.4.1.2.90-44.1
tcp_wrappers-7.6-37.2
ORBit-0.5.17-14
libpng10-1.0.16-1
libungif-4.1.3-1.el4.2
imlib-1.9.13-23
setarch-1.6-1
libaio-0.3.105-2
audiofile-0.2.6-1.el4.1
esound-0.2.35-2
上面列出的包并不见得都是必须的,最后几个包没有的话,应该也可以安装成功。不过根据Oracle官方文档的建议都加上肯定不会有问题。这里要额外注意compat-libgcc-296-2.96-132.7.2这个包,这个包必须要加上,否则后面的安装无法继续进行。
下面需要修改一下系统的核心参数,具体的含义就不多解释了,Oracle的推荐默认参数为:
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 1024 65000
我只修改了kernel.shmmax参数,设置其大小超过我预计SGA的值。
将上面的核心参数添加到/etc/sysctl.conf文件中。
完成设置后,重启操作系统。通过/sbin/sysctl –p可以修改当前核心参数,不过如果系统可以重启,还是通过这种方式比较保险。
下面为Oracle用户设置进程数和打开文件数的限制:修改/etc/security/limits.conf文件,将下面内容填入:
* soft nproc 2047
* hard nproc 16384
* soft nofile 1024
* hard nofile 65536
修改/etc/pam.d/login文件,添加如下的内容:
session required /lib/security/pam_limits.so
这些操作完成之后,开始安装的前期工作了,首先是创建Oracle帐户:
# groupadd oinstall
# groupadd dba
# useradd -g oinstall -G dba oracle
# passwd oracle
# mkdir -p /opt/oracle/product/9.2
# chown -R oracle.oinstall /opt/oracle
至此,root用户的设置基本结束,可以切换到oracle用户了。
# su - oracle
$ vi .bashrc
在oracle用户的初始化脚本中添加如下内容:
if [ $USER = "oracle" ]; then
ulimit -u 16384 -n 65536
fi
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=/opt/oracle/product/9.2
export ORACLE_SID=testdb
export NLS_LANG='SIMPLIFIED CHINESE_CHINA.ZHS16GBK'
export PATH=$ORACLE_HOME/bin:$PATH
export DISPLAY=172.25.6.201:0
export LD_ASSUME_KERNEL=2.4.1
其中上面设置进程和文件的限制是Oracle推荐的。ORACLE_BASE、ORACLE_HOME、ORACLE_SID以及NLS_LANG 的设置都需要根据个人的具体进行调整。DISPLAY变量设置的是我自己机器在局域网中的IP地址,这是方便我使用X-MANAGER进行图形化操作的。
最需要注意的是LD_ASSUME_KERNEL的设置。首先Oracle的官方文档中并没有包含这个变量的设置,但是如果不进行设置的话,那么一 会在安装Oracle的时候,安装到17%,提示拷贝文件naeet.o的时候,整个安装就停住了,这个时候即使点cancel按钮都没有用,只能将整个 安装窗口关闭。
Metalink上的文章倒是提到了对这个参数的设置,但是Metalink给出的建议设置是2.4.21。这个设置似乎对SuSE 8环境是有效的,但是对REDHAT AS4环境仍然没有作用。从Metalink上的回复看,也没有看到对这个问题的进一步说明。
Oracle9204在REDHAT AS3上的安装时,建议将这个变量设置为2.4.1,因此,我选择了将这个变量也设置为2.4.1,在随后的安装过程中,上面提到的问题没有再次出现。我 估计将这个值设置的稍微大一些的话,也是可以的,我没有进行具体的测试,如果有兴趣,可以尝试一下,看看这个值最大可以设置到多大。
设置好环境变量后,重新应用一下初始脚本,保证设置的环境应用到当前用户:
$ . .bashrc
如果是使用光盘介质,可以跳过下面的步骤,如果是下载的压缩包,需要将压缩包ftp到oracle用户可以访问的目录下。解压并展开:
$ gunzip amd64_db_9204_Disk1.cpio.gz
$ gunzip amd64_db_9204_Disk2.cpio.gz
$ gunzip amd64_db_9204_Disk3.cpio.gz
$ cpio -idcmv < amd64_db_9204_Disk1.cpio
$ cpio -idcmv < amd64_db_9204_Disk2.cpio
$ cpio -idcmv < amd64_db_9204_Disk3.cpio
展开文件后,终于可以开始安装了:
$ cd Disk1
$ . runInstaller
安装开始没有什么值得说的,无非是点击几个NEXT的,输入用户组oinstall,并根据提示在后台使用root用户执行/tmp/orainstRoot.sh脚本。
随后选择安装Oracle Database 9204,同时添加简体中文语言,选择企业版,并选择定制数据库配置。这些配置都可以根据个人的需求进行调整。
所有准备工作完成,点击install。
在安装到88%的时候,会报错,错误信息如下:Error in invoking target install_isqlplus of makefile /opt/oracle/product/9.2/sqlplus/lib/ins_sqlplus.mk。
这是使用了64位的gcc编译32位程序时出现的错误,这里先点击ignore忽略错误,随后我们在解决这个问题。
在安装到98%的时候,会报和刚才类似的错误:Error in invoking target install of makefile /opt/oracle/product/9.2/rdbms/lib/ins_rdbms.mk,这里也点击ignore忽略错误。
忽略了两个错误后,安装完成,这时候Oracle会但出一个对话框,要求用户以root身份执行$ORACLE_HOME目录下的一个root.sh脚本。
我们先修正上面两个错误,然后在执行这个脚本。
修正这两个错误是整个安装过程中最麻烦的地方,参照metalink上的文章,我又反反复复摸索了四、五次才尝试成功。
首先以root身份来到/usr/bin目录下,查看gcc*:
# cd /usr/bin
# ls -l gcc*
-rwxr-xr-x 2 root root 105392 May 24 07:46 gcc
-rwxr-xr-x 2 root root 94360 Dec 2 2004 gcc32
这时候我们需要编写一个gcc296的脚本,内容如下:
#!/bin/sh
exec /usr/bin/gcc32 -static-libgcc -B/usr/lib/gcc-lib/i386-redhat-linux/2.96/ "$@"
注意,上述脚本是metalink给出的,不过metalink给出的脚本至少有3个问题,首先metalink上给出的gcc32错误拼写成了 gcc33,第二点metalink脚本中包含了-m32,而这个编译标志在编译上述两个错误时是不需要的,当然metalink上有进一步的说明,不过 还是容易使人误导。第三点其实不是metalink脚本的问题,而是这个脚本太长了,导致脚本最后的”$@”跑到了第三行,而实际上整个脚本只有两行。像 我这样对操作系统、shell脚本语言以及gcc编译不是很熟悉的人很容易在这里出错。
将上面给出的内容添加到gcc296中,然后修改gcc296的文件属性为755。
然后进行类似的操作编写g++296的脚本:
#!/bin/sh
exec /usr/bin/g++32 -static-libgcc -B/usr/lib/gcc-lib/i386-redhat-linux/2.96/ "$@"
同样,将g++296的脚本的文件属性修改为755。
# chmod 755 gcc296
# chmod 755 g++296
下面根据gcc和g++的版本信息,将gcc和g++重命名。然后将gcc和g++分别指向gcc296和g++296。
# mv gcc gcc346
# mv g++ g++346
# ln -s -f gcc296 gcc
# ln -s -f g++296 g++
下面回到oracle用户环境,重新编译刚才出现错误的两个对象:
通过/opt/oracle/product/9.2/install/make.log文件,找到刚才出现错误的两个对象,重新make:
# su - oracle
$ cd /opt/oracle/product/9.2/sqlplus/lib
$ /usr/bin/make -f ins_sqlplus.mk install_isqlplus ORACLE_HOME=/opt/oracle/product/9.2
$ cd /opt/oracle/product/9.2/rdbms/lib
$ make -f /opt/oracle/product/9.2/rdbms/lib/ins_rdbms.mk /opt/oracle/product/9.2/rdbms/lib/extproc32 EXTPROC=/opt/oracle/product/9.2/rdbms/lib/extproc32 LIBDIR=lib32 LDFLAGS='-m32 -o $@ $(LDPATHFLAG)$(PRODLIBHOME) $(LDPATHFLAG)$(LIBHOME) $(LDPATHFLAG)$(LIBHOME)stubs/'
重新编译后,回到root用户,恢复刚才进行的操作:
$ exit
# rm -f gcc
# rm -f g++
# mv gcc346 gcc
# mv g++346 g++
# . /opt/oracle/product/9.2/root.sh
至此,Oracle9204的软件部分安装完毕。
建库、配置listener等操作就没有什么可说的了,值得一提的是,建库过程中安装data mining的时候碰到了一个ORA-1031的错误,比较奇怪。
yangtingkun 发表于:2006.09.20 20:03