连篇累牍:Redhat AS4上安装64位Oracle9204

来源:百度文库 编辑:九乡新闻网 时间:2024/04/28 10:28:16
Redhat AS4上安装64位Oracle9204.doc

文件:Redhat AS4上安装64位Oracle9204.rar大小:8KB下载:下载Redhat AS4上安装64Oracle9204

===========================================================

作者: 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

make-3.80-6.EL4

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

fs.file-max = 65536

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的错误,比较奇怪。