Oracle 9i(9.0.1)在Red Hat Linux7.1,7.2,7.3和RedHat 2.1 Advanced Server上的安装 - IdeaGrace | 数据库 | Oracle技术,IdeaGrace,web,开发,技术,交流,教程 - http://www.ideagrace.com/
Oracle 9i(9.0.1)在Red Hat Linux7.1,7.2,7.3和RedHat 2.1 Advanced Server上的安装
原文来自:http://www.puschitz.com/
翻译整理:程斌
(译者注:这片文章是我迄今为止见过的讲述Oracle9i在Linux上安装问题最全面的一片文章,而且原文作者还一直不断的在做更新,不断的加入新的问题和发现,这是一份难得的Oracle 9i for Linux的安装资料,我按其讲述成功的将Oracle 9i安装到了Red Hat Linux 7.3上。现在将原文翻译成中文,共享给大家阅读参考,这篇文章翻译自原文的2002.7.8更新版)
这里是我安装过版本的一些信息:
Oracle 9iR2 (9.2.0) Database on Red Hat 7.3 (kernel 2.4.18-3, glibc 2.2.5-34)
Oracle 9iR1 (9.0.1) Database on Red Hat 7.3 (kernel 2.4.18-3, glibc 2.2.5-34)
Oracle 9iR1 (9.0.1) Database on Red Hat 7.2 (kernel 2.4.7-10, glibc 2.2.4-13)
Oracle 9iR1 (9.0.1) Database on Red Hat 7.1 (kernel 2.4.2-2, glibc 2.2.2-10)
我没有在RedHat 2.1 Advanced Server上安装过Oracle 9iR1或9iR1 iAS,但是也提供了一些可能对你有用的信息。
这里提到的一些Oracle的错误和问题有些只针对9i(9.0.1),有些则只针对9iR2(9.2.0)。我不能保证9i(9.0.1)上发生的错误同样在9iR2上也有。我只是简单的把所有的错误信息列在了这里,查看Oracle Installation Errors和Oracle Installation Problems,Important Tips and Hints
注意:RedHat 7.1已经在Oracle9i Database和Oracle9i Application Server上验证通过,请看“Red Hat Announces Validation of Red Hat Linux For Oracle”,Oracle 9iR2,Application Server和E-Business Suite 11.5.7也已经在Red Hat Linux Advanced Server上通过验证,请看“Oracle and Red Hat Collaborate to Develop Enhanced Enterprise Capabilites for Red Hat Linux Advanced Server.”。
文档
Oracle9i Database Documentation for Linux (Oracle官方文档)
Oracle9iR2 on Linux: Performance, Reliability and Manageability Enhancements on Red Hat Linux Advanced Server 2.1
An Overview of Red Hat Advanced Server V2.1 Reliability, Availability, Scalability, and Manageability (RASM) Features
Oracle Performance Tuning on Linux (Part I) (改进Oracle性能的简单途径)
The RAW Facts on Filesystems (Part II) (针对数据库提高Linux性能的一般途径)
下载安装Red Hat Linux 7.1, 7.2,7.3
可以从http://www.puschitz.com/RedhatDownload.html下载Red Hat Linux 7.x,从Red Hat Linux Manuals处获得Red Hat Linux的安装手册。
注意:不能下载Red Hat Linux Advanced Server 2.1,只能下载源代码。你可以从http://www.redhat.com/software/linux/advanced/购买安装CD。
下载解压Oracle9i安装文件并刻录成Oracle9i的安装CD
从http://otn.oracle.com/software/products/oracle9i/htdocs/linuxsoft.html下载Oracle9i for Linux,然后解压。
对于Oracle9i(9.2.0):
第一种方法(使用很少的硬盘空间并且更快):
zcat lnx_920_disk1.cpio.gz | cpio -idmv
zcat lnx_920_disk2.cpio.gz | cpio -idmv
zcat lnx_920_disk3.cpio.gz | cpio -idmv
第二种方法:
gunzip lnx_920_disk1.cpio.gz lnx_920_disk2.cpio.gz lnx_920_disk3.cpio.gz
cpio -idmv < lnx_920_disk1.cpio
cpio -idmv < lnx_920_disk2.cpio
cpio -idmv < lnx_920_disk3.cpio
对于Oracle9i(9.0.1):
第一种方法(使用很少的硬盘空间并且更快):
zcat Linux9i_Disk1.cpio.gz | cpio -idmv
zcat Linux9i_Disk2.cpio.gz | cpio -idmv
zcat Linux9i_Disk3.cpio.gz | cpio -idmv
第二种方法:
gunzip Linux9i_Disk1.cpio.gz Linux9i_Disk2.cpio.gz Linux9i_Disk3.cpio.gz
cpio -idmv < Linux9i_Disk1.cpio
cpio -idmv < Linux9i_Disk2.cpio
cpio -idmv < Linux9i_Disk3.cpio
解压后获得以下3个包含安装文件的目录:
Disk1
Disk2
Disk3
我运行以下命令用我的外置USB CD刻录机HP-8230e刻录了3张光盘:
mkisofs -r Disk1 | cdrecord -v --eject dev=0,0,0 speed=4 -
mkisofs -r Disk2 | cdrecord -v --eject dev=0,0,0 speed=4 -
mkisofs -r Disk3 | cdrecord -v --eject dev=0,0,0 speed=4 -
(你可以执行cdrecord -scanbus命令取得设备号)。
Swap空间
为了完成Oracle 9i典型安装和创建一个简单的原始数据库,Oracle建议最少需要512MB内存空间来运行Oracle Server,并且硬盘交换区(swap)空间是内存空间的两倍,而最少需要值为400MB。当我安装Oracle 9i(9.0.1&9.2.0)时,我的PC配置为256MB的内存,设置了600MB的swap空间,运行正常。但是当我设置更小的swap空间时,运行的时候内存溢出了。因此我强烈建议提供更多的内存空间和swap空间(600MB以上),特别是当你的Oracle Server上还运行有其他程序的时候。
注意: 在安装Oracle的时候,特别是创建数据库的过程,如果你没有足够的内存或swap空间,将会导致你的Oracle server (Linux)连续几分钟没有反应。
检查内存空间:
grep MemTotal /proc/meminfo
检查swap空间:
cat /proc/swaps
你也可以通过创建一个临时swap文件代替一个未用设备的方法来增加临时swap空间,操作如下:
root用户下:
dd if=/dev/zero of=tmpswap bs=1k count=900000
chmod 600 tmpswap
mkswap tmpswap
swapon tmpswap
使用以下命令关闭临时swap空间:
root用户下:
swapoff tmpswap
rm tmpswap
共享内存
对于安装Oracle 9i(9.2.0),在我的Linux Server上不得不临时增加最大共享内存值。Oracle Database Configuration Assistant在我机器上报以下错误:
ORA-27123: unable to attach to shared memory segment.
我用以下命令临时增加了内核shmmax的设置:
root用户下:
# cat /proc/sys/kernel/shmmax
33554432
# echo `expr 1024 \* 1024 \* 1024` > /proc/sys/kernel/shmmax
# cat /proc/sys/kernel/shmmax
1073741824
#
更多的信息请看Oracle Installation Errors.
/tmp空间
Oracle Universal Installer安装程序运行时,需要在/tmp目录下保留至少400MB的空间。如果在/tmp目录下没有足够的空间,可以在其他地方临时创建一个tmp目录,如下操作:
root用户下:
mkdir /<AnotherFilesystem>/tmp
chown root.root /<AnotherFilesystem>/tmp
chmod 1777 /<AnotherFilesystem>/tmp
export TEMP=/<AnotherFilesystem>/tmp # used by Oracle
export TMPDIR=/<AnotherFilesystem>/tmp # used by Linux programs like the linker "ld"
安装完Oracle以后,关闭Oracle,再删除临时目录:
rmdir /<AnotherFilesystem>/tmp
unset TEMP
unset TMPDIR
Oracle硬盘空间
Oracle数据库软件需要大约2.5GB的硬盘空间。如果你做的是一个典型的数据库安装而非自定义安装,那么将需要大约3.5GB的硬盘空间。
"binutils"问题
在Oracle 9i(9.2.0)上没有这个问题,这个问题只针对Oracle 9i(9.0.1)。
Red Hat 7.1, 7.2,7.3和RedHat2.1 Advanced Server自带的binutils包不支持Oracle 9i Universal Installer安装程序。而且好像新的版本也都不支持(如:在binutils-2.11.90.0.8-9下安装会失败)。下面是解决方法:
安装JDK
下载JDK 1.3.1或者Blackdown 1.1.8_v3:(我一直使用Blackdown)
http://www.blackdown.org/
http://java.sun.com/
按JDK文档所说,将JDK安装到/usr/local目录下,然后创建一个/usr/local/java符号连接连接到JDK:
root用户下:
bzip2 -dc jdk118_v3-glibc-2.1.3.tar.bz2 | tar xf - -C /usr/local
ln -s /usr/local/jdk118_v3 /usr/local/java
(译者注:我使用jdk1.3.1,从sun站点下载安装包(j2sdk-1_3_1-linux-i386.bin),安装方法如下:
root用户下:
# sh j2sdk-1_3_1-linux-i386.bin
将会在当前目录下生成一个jdk1.3.1的子目录(本例假设它安装在/opt/oracle下),然后在/usr/local下创建一个符号连接到这个目录:
# ln -s /opt/oracle/jdk1.3.1 /usr/local/java
然后建议同时设置一下环境变量JAVA_HOME=/usr/local/java,PATH中加入$JAVA_HOME/bin。)
创建Oracle用户
root用户下:
groupadd dba
groupadd oinstall
useradd -g oinstall -G dba oracle
passwd oracle
有关"oinstall"用户的更多信息,请查看When to use "OINSTALL" group during install of oracle。
创建Oracle目录
root用户下:
mkdir /opt/oracle
mkdir /opt/oracle/product
mkdir /opt/oracle/product/9.0.1
chown -R oracle.oinstall /opt/oracle
mkdir /var/opt/oracle
chown oracle.dba /var/opt/oracle
chmod 755 /var/opt/oracle
设置Oracle环境
oracle用户下:
# Oracle Environment
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=/opt/oracle/product/9.2.0
export ORACLE_SID=test
export ORACLE_TERM=xterm
#export TNS_ADMIN= Set if sqlnet.ora, tnsnames.ora, etc. are not in $ORACLE_HOME/network/admin
export NLS_LANG=AMERICAN(译者注:对于中文GBK字符集设置为AMERICAN_AMERICA.ZHS16GBK)
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
export LD_LIBRARY_PATH
# Set shell search paths
export PATH=$PATH:$ORACLE_HOME/bin
# CLASSPATH:
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib
export CLASSPATH
如果你使用bash,可以将这些环境设置加到~oracle/.bash_profile文件中,这样,当你重新登录oracle用户是就不用再重设这些环境变量了。
运行runInstaller
Oracle不再支持字符模式安装。因此,为了在控制台上直接运行runInstaller(本例中运行Oracle的节点名为"oracleserver"),你需要设置DISPLAY环境变量。在这之前,确认"oracleserver"下允许运行runInstaller并显示X信息(本例中运行X Windows如KDE或GNOME的PC的名字为"yourdesktop"),由于程序在远程机器上运行,因此不能在你的机器屏幕上显示信息,除非你给他们权限。
如果你不是用远端节点来安装Oracle,那你可以跳过步骤1和2。
步骤1:例如,允许"oracleserver"可以显示X信息到你的桌面PC"yourdesktop":
yourdesktop:user$ xhost +oracleserver
步骤2:登录到"oracle"用户,运行以下命令:
oracleserver:oracle$ export DISPLAY=yourdesktop:0.0
步骤3a:运行CD Disk 1上的runInstaller (注意不要cd到/mnt/cdrom中):
root用户下:
oracleserver:root# mount /mnt/cdrom
oracle用户下:
# Before starting runInstaller, try maybe to execute e.g. 'xterm' to see if your X setup is really working!
oracleserver:oracle$ /mnt/cdrom/runInstaller
步骤3b:或者对于直接解压后的安装文件:
oracleserver:oracle$ Disk1/runInstaller
安装Oracle
下面是关于runInstaller的一些问题:
- 用什么作为基本目录(Inventory Location):/opt/oracle/oraInventory
- UNIX Group Name(允许更新Oracle软件):oinstall
你也可以使用"dba",但出于安全因素不建议这样做,有关"oinstall"用户的更多信息,参见When to use "OINSTALL" group during install of oracle。
- Oracle Home路径:/opt/oracle/product/9.2.0
- JDK目录:/usr/local/java
等等。
(译者注:我在RedHat7.3中文环境下安装,发生乱码的情况,建议在西文环境下安装Oracle。)
启动和关闭Oracle 9i数据库
sqlplus:
svrmgrl不再被支持,现在你可以使用sqlplus来做任何事情。
例如,执行以下命令启动数据库:
dba$ sqlplus /nolog
SQL> connect / as sysdba
SQL> startup
$ORACLE_HOME/bin/dbstart和$ORACLE_HOME/bin/dbshut:
你也可以使用$ORACLE_HOME/bin/dbstart启动数据库,使用$ORACLE_HOME/bin/dbshut关闭数据库。你可以将$ORACLE_HOME/bin/dbstart放入/etc/rc.d/rc.local启动脚本中,在系统重起时自动启动数据库。为了使$ORACLE_HOME/bin/dbstart和$ORACLE_HOME/bin/dbshut正常工作,你需要修改/etc/oratab中Oracle SID的第三个参数,将"N"改为"Y"。
例如:对于Oracle SID "test",在/etc/oratab做如下修改:
test:/opt/oracle/product/9.2.0:N
改为:
test:/opt/oracle/product/9.2.0:Y
对于9.2.0,我还将SID"test"的init文件从/opt/oracle/admin/test/pfile拷到$ORACLE_HOME/dbs下以使dbstart和dbshut正常工作。
cp /opt/oracle/admin/test/pfile/inittest.ora.642002224936 $ORACLE_HOME/dbs/inittest.ora
拷贝以前先查看$ORACLE_HOME/dbs下是否已经存在init文件
(译者注:还需要启动Oracle数据库的监听进程,
oracle用户下:
# lsnrctl start
这样其他机器就可以通过tns访问了。)
Oracle安装问题,重要技巧和提示
- 不要cd到/mnt/cdrom目录下来运行./runInstaller!
如果这样做,安装安装将会出错。
- 如果你忘记设置DISPLAY环境参数 (例如:export DISPLAY=oracleserver:0.0),或者忘记赋予远程控制台显示X信息到桌面的权限(例如:xhost +oracleserver),将产生以下错误:
Xlib: connection to ":0.0" refused by server
Xlib: Client is not authorized to connect to Server
在这种情况下,就不得不将还在后台运行的runInstall杀掉!如果不这样做,runInstaller将一直运行而你看不到任何错误信息。
你可能还需要清除/tmp/OraInstall:
rm -rf /tmp/OraInstall
- 当runInstaller开始运行配置工具("Configuration Tools"),"Oracle Net Configuration Assistant" 有时会挂起。只要简单的停止重做,或者跳过继续安装,当安装完成,再进行配置。
- 在安装过程中系统停止相应,特别是在数据库创建时,这个可能是因为你没有足够的内存或者swap空间。我注意到如果没有足够的swap空间,这个系统将连续几分钟没有反应("挂起")。如果发生这种情况,只要一直等到系统又回复正常就可以了。
- Oracle安装过程也需要运行make等等,在系统下可能没有安装编译器和其他开发包,因此确认在系统内以下包已经安装好:gcc, cpp, egcs, egcs-c++, glibc-devel, kernel-headers(我不能确定这些包在安装过程中是否都需要)。
- 如果因为某种原因致使安装不能完成,在重新开始时可能需要清除以下文件:
rm -rf /etc/oraInst.loc /etc/oratab /tmp/OraInstall
/tmp/<OtherOracleOwnedFiles>
$ORACLE_BASE/*
Oracle安装错误
这里是一个由我亲身经历的和其他人发表的有关Oracle 9i(9.0.1&9.2.0)安装问题,一些问题/解决只适用9.0.1或者9.2.0。由于我没有所有这些问题的经历,所以不能保证这些解决方案的正确。如果你有其他问题的解决方案,请发mail告诉我webmaster@puschitz.com,我将它加入列表。
-
首先总是应该检查错误日志/tmp/OraInstall。当发生make问题时还要检查$ORACLE_HOME/install/make.log.
-
"几种make问题"
确认gcc已经安装:
$ which gcc
/usr/bin/gcc
查看/usr/bin/gcc的RPM名字:
$ rpm -qf /usr/bin/gcc
gcc-2.96-98
还要检查其他的错误信息。
-
"Error in invoking target install of makefile /opt/oracle/product/9.2.0/ctx/lib/ins_ctx.mk"
我看这个问题只出现在Oracle 9i(9.0.1)安装时。
在$ORACLE_HOME/install/make.log中显示以下错误:
/lib/libdl.so.2: undefined reference to `_dl_addr@GLIBC_PRIVATE'
/lib/libdl.so.2: undefined reference to `_dl_open@GLIBC_PRIVATE'
/lib/libdl.so.2: undefined reference to `_dl_close@GLIBC_PRIVATE'
/lib/libdl.so.2: undefined reference to `_dl_sym@GLIBC_PRIVATE'
/lib/libdl.so.2: undefined reference to `_dl_vsym@GLIBC_PRIVATE'
在下述步骤执行时发生:
/usr/bin/make -f ins_ctx.mk install ORACLE_HOME=/opt/oracle/product/9.2.0
编辑$ORACLE_HOME/ctx/lib/env_ctx.mk,找到"INSO_LINK =",加入“$(LDLIBFLAG)dl",然后保存。
以下是加入了$(LDLIBFLAG)dl标志的命令行:
INSO_LINK = -L$(CTXLIB) $(LDLIBFLAG)m $(LDLIBFLAG)dl $(LDLIBFLAG)sc_ca $(LDLIBFLAG)sc_fa $(LDLIBFLAG)sc_ex $(LDLIBFLAG)sc_da $(LDLIBFLAG)sc_ut $(LDLIBFLAG)sc_ch $(LDLIBFLAG)sc_fi $(LLIBCTXHX) $(LDLIBFLAG)c -Wl,-rpath,$(CTXHOME)lib $(CORELIBS) $(COMPEOBJS)
做完后重试。
-
ORA-27123: unable to attach to shared memory segment.
我看这个错误只发生在Oracle 9i(9.2.0)安装上
在运行Oracle Database Configuration Assistant过程中会发生这个错误,我执行以下命令临时增长最大共享内存数
root用户下:
# cat /proc/sys/kernel/shmmax
33554432
# echo `expr 1024 \* 1024 \* 1024` > /proc/sys/kernel/shmmax
# cat /proc/sys/kernel/shmmax
1073741824
#
然后在Oracle Database Configuration Assistant中重试。
如果你要永久的增加最大共享内存尺寸,在/etc/sysctl.conf文件中加入以下行:
kernel.shmmax=1073741824
我还不确定最大共享内存应该设多大,而且当你去看安装手册和Release Notes时,你会发现还有其他的参数需要改变。一旦我发现了这些问题,我将在这里发布结果。但是临时增加最大共享内存可以保证你Oracie 9i(9.2.0)安装的顺利进行。
-
"Error invoking target install of makefile /opt/oracle/product/9.0.1/plsql/lib/ins_plsql.mk"
"Error invoking target install of makefile /opt/oracle/product/9.0.1/precomp/lib/ins-precomp.mk"
"Error invoking target install of makefile /opt/oracle/product/9.0.1/precomp/lib/ins-net-client"
"Error invoking target install of makefile /opt/oracle/product/9.0.1/precomp/lib/ins-oemagent"
我看这个问题这是发生在Oracle 9i(9.0.1)安装上的
编辑文件$ORACLE_HOME/bin/genclntsh,修改下列行(有人发给我email指出这个方法同样适用于Mandrake 8.1 and Mandrake 8.2):
LD_SELF_CONTAINED="-z defs"
改成:
LD_SELF_CONTAINED=""
然后在"oracle"用户(不是"root")下运行脚本$ORACLE_HOME/bin/genclntsh,并且确认所有Oracle环境变量都已经设置!(我收到的很多email是因为没有做这个)
$ su - oracle
$ $ORACLE_HOME/bin/genclntsh
Created /opt/oracle/product/9.0.1/lib/libclntst9.a
$
做完后再重试错误窗口继续安装,通常是有效的。
这里是Oracle官方解决方案,针对RedHat 2.1 Advanced Server上安装Oracle 9iR1或9iR1 iAS:http://otn.oracle.com/software/products/oracle9i/files/binutils_readme.html
-
Can't find init file for Database "SID".
我看这个错误只在试图使用dbstart来启动Oracle 9i(9.2.0)时发生。
我拷贝SID"test"的init文件从/opt/oracle/admin/test/pfile到$ORACLE_HOME/dbs以使dbstart和dbshut正常工作。
cp /opt/oracle/admin/test/pfile/inittest.ora.642002224936 $ORACLE_HOME/dbs/inittest.ora
-
"Error in setting permissions of file/directory/opt/oracle/jre/1.1.8/bin/i686/native_threads/.extract_args"
首先,确认已经在/usr/local/java下安装好了Java(JDK 1.3.1或者Blackdown 1.1.8_v3)。如果没有,查看Install JDK,然后重新安装Oracle。
当错误对话框打开后,手工从安装的jre环境中找到.extract_args文件,并把它拷贝到runInstaller提示没有找到文件的那个目录。
-
"jre was not found in /tmp/OraInstall/jre/bin/i586/green_threads/jre"
你可能运行是在一台586的机器上运行runInstaller,或者你的AMD CPU被识别为586(如,AMD K6-III-400)。可以用uname -m来查看自己的机器(硬件)。矫正这个问题,需要创建一个从i586到i686的lib和bin的连接,并且将i686目录置为可读:
例如:
ln -s /tmp/OraInstall/jre/bin/i686 /tmp/OraInstall/jre/bin/i586
ln -s /tmp/OraInstall/jre/lib/i686 /tmp/OraInstall/jre/lib/i586
chmod u-w /tmp/OraInstall/jre/bin/i686 /tmp/OraInstall/jre/lib/i686
然后重新运行runInstaller。
-
你可以查看Linux讨论组或者Linux论坛,在http://technet.oracle.com/support/htdocs/discussions.htm。
Oracle连接
在我的Home Page主页上还放了一些Oracle Linux的连接。
喜欢本文?那就在线订阅更多文章更新吧!
加入技术论坛讨论
访问IdeaGrace开发者博客
浏览更多java开源项目
IdeaGrace开发者Wiki
更好的浏览体验,