这是2003年11月翻译的一篇关于在 RedHat Linux 7.1, 7.2, 7.3, 8.0, 9, Advanced Server 2.1, and Enterprinse Linux Advanced Server 3(RHEL AS 3)上安装 Oracle 9iR2 的文章,详细的描述了 Oracle 9iR2 的安装过程及常见错误。
[@more@]Installing Oracle9i on Red Hat Linux
7.1, 7.2, 7.3, 8.0, 9, Advanced Server 2.1, and Enterprinse Linux Advanced Server 3(RHEL AS 3)
几天前,我将装在笔记本上的 Red Hat Linux 9 换成了新发行的 Red Hat Enterprise Linux Advanced Server 3,主要原因是 Red Hat Linux 9 对 Centrino 芯片的支持太差,尤其是 I/O 性能非常差。Red Hat Enterprise Linux Advanced Server 3 虽然解决了 I/O 问题,但原来在 Red Hat Linux 9 上安装的 Oracle 9iR2 却不能顺利地安装在 Red Hat Enterprise Linux Advanced Server 3 上。为了解决这个问题,我从网上找到了 Werner Pushitz 先生写的 “Installing Oracle 9i on Red Hat Linux 7.1, 7.2, 7.3, 8.0, 9, Advanced Server 2.1 and Enterprise Linux Advanced Server 3” 一文。原来看过他/她写的“Installing Oracle 9i on Red Hat Linux 7.1, 7.2, 7.3, 8.0, 9, Advanced Server 2.1”,受益非浅,其升级版更是加入了 Red Hat Enterprise Linux Advanced Server 3 的内容,对于我在Red Hat Enterprise Linux Advanced Server 3 上成功安装 Oracle 9iR2 帮助很大。由于该文档是由英文写成,英文不好的朋友看起来就比较吃力,所以我尝试着将其翻译成了中文。翻译的不当之外,还请广大爱好者指正。在此感谢 Werner Pushitz 先生/女士!感谢他/她为广大的 Linux 和 Oracle 爱好者提供了如此好的文档!
2003年11 月03 日 完成初稿
2003年11 月09 日 完成该稿
本文将介绍怎样
? 在 Red Hat Enterprise Linux Advanced Server 3 (kernel 2.4.21-4.EL, glibc 2.3.2-95.3)
上安装Oracle 9iR2 数据库
? 在 Red Hat Advanced Server 2.1 (kernel 2.4.9-e.3, glibc 2.2.4-26) 上安装Oracle
9iR2 数据库
? 在 Red Hat 9 (kernel 2.4.20-6, glibc 2.3.2-5) 上安装Oracle 9iR2 数据库
? 在 Red Hat 8.0 (kernel 2.4.18-18.8.0, glibc 2.2.93-5) 上安装Oracle 9iR2 数据库
? 在 Red Hat 7.3 (kernel 2.4.18-3, glibc 2.2.5-34) 上安装Oracle 9iR2 数据库
? 在 Red Hat 7.2 (kernel 2.4.7-10, glibc 2.2.4-13) 上安装Oracle 9iR2 数据库
? 在 Red Hat 7.1 (kernel 2.4.2-2, glibc 2.2.2-10) 上安装Oracle 9iR2 数据库
验证/认证 (Validation/Certification)
Oracle 9i 数据库第二版 (Release 2) 和应用服务器 (Application) 及Oracle 电子商务套件
(Oracle E-Business Suite)11.5.7 在 Red Hat Linux Advanced Server 2.1 平台上通过认
证,详细信息可以访问 “Oracle and Red Hat Collaborate to Develop Enhanced Enterprise
Capabilities for Red Hat Linux Advanced Server” (http://www.redhat.com/about/pressc
enter/2002/ press_oracle2.html)。Red Hat 7.1 也通过了 Oracle 9i 数据库和应用服务器
验证,详细信息可以访问“Red Hat Announces Validation of RedHat Linux For Oracle”
(http://www.redhat.com/partners/press_partner_oracle3.html) , 也可以访问 “Oracle
Products on Red Hat Linux” (http://www.redhat.com/oracle_cert/)。
错误和问题 (Errors and Problems)
这里罗列的一些 Oracle 的错误和问题仅在安装9i (9.0.1) 时出现,一些错误和问题仅出现
在 9iR2 (9.2.0) 中。但是,并不保证 9i (9.0.1) 安装过程中出现的错误和问题不会在 9iR2
(9.2.0) 安装过程中出现,所以在这里列出了所有的错误和问题。
Red Hat Enterprise Linux Advanced Server 3
为了在 Red Hat Enterprise Linux Advanced Server 3 (RHEL 3) 上安装 Oracle 9iR2 数
据库,必须应用 “Oracle 9iR2 Patch Set 3 9.2.0.4.0” 和其他一些补丁。通过应用 9.2.0.4 补
丁包可以修正部分错误。详细信息可以查看 “Running Oracle Installation on Red Hat
Enterprise Linux Advanced Server 3” (http://www.puschitz.com/InstallingOracle9i.sht
ml#RunningOracleInstallationOnRHELAS3)。
Red Hat 9
Red Hat 9 默认使用本地 POSIX 线程库 (the Native POSIX Thread Library – NPTL),
POSIX 线程的 Linux 改进实现。但是,由于使用了 NPTL,Oracle 应用程序会引起一些
问题。注意,Red Hat 9 没有通过 Oracle 9i 认证!
为了修正这个错误,你可以设置环境变量 LD_ASSUME_KERNEL = 2.4.1,通知系统使用
原来的浮点堆栈 Linux 线程 (Linuxthreads with floating stacks)。否则会导致 Oracle 安
第 3 页
装器 runInstaller 挂起、数据库配置助手 (the Database Configuration Assistant) dbca 不
能启动等问题。关于 LD_ASSUME_KERNEL 的详细信息可以查看 “Red Hat Linux 9
Release Notes” (http://ftp.redhat.com/pub/redhat/linux/9/en/os/i386/RELEASE-NO
TES)。
注意:在开始安装 Oracle 9iR2 之前,请确信已经查看了 Oracle 安装错误 (Oracle
Installation Errors) 一节中关于错误 “Error in invoking target install of makefile
/opt/oracle/product/9.2.0/network/lib/ins_oemagent.mk” 的内容。
Red Hat 8.0
在 Red Hat 8.0 上安装 Oracle 9iR2,遇到的唯一一个问题是: “Error in invoking target
install of makefile /opt/oracle/product/9.2.0/ctx/lib/ins_ctx.mk”。但是并不是说不需要阅
读在这里列出的其他问题。
主题 (This article covers the following subjects and steps)
? 文档 (Documentations)
? 下载和安装 Red Hat Linux 7.1, 7.2, 7.3, 8.0, 9 (Downloading and Installing Red Hat
Linux 7.1, 7.2, 7,3, 8.0, 9)
? 解包下载的 Oracle 9i 安装文件和刻录 Oracle 9i 光盘 (Unpacking Downloaded
Oracle 9i Installation files and Burning Oracle 9i CDs)
? 设置交换空间 (Setting Swap Space)
? 设置共享内存 (Setting Shared Memory)
? 检查 /tmp 空间 (Checking /tmp Space)
? Oracle 磁盘空间 (Sizing Oracle Disk Space)
? “binutils” 问题 (The “binutils” Issue)
? 检查开发包 (Checking Development Packages -- RPMs)
? JDK
? 创建 Oracle 用户账号 (Creating Oracle User Accounts)
? 创建 Oracle 目录 (Creating Oracle Directories)
? 设置 Oracle 环境 (Setting Oracle Environments)
? 启动 runInstaller (Starting runInstaller)
? 在 RH 7.1, 7.2, 7.3, 8.0, 9 和 RH AS 2.1 上运行 Oracle 安装 (Running Oracle
Installation on RH 7.1, 7.2, 7.3, 8.0, 9, and on RH AS 2.1)
? 在 Red Hat Enterprise Linux Advanced Server 3 上运行 Oracle 安装 (Running
Oracle Installation on Red Hat Enterprise Linux Advanced Server 3)
? 启动和停止 Oracle 9i 数据库 (Startup and Shutdown of the Oracle 9i Database)
? Oracle 安装问题,技巧和提示 (Oracle Installation Problems, Tips and Hints)
? Oracle 安装错误 (Oracle Installation Errors)
文档 (Documentations)
? Oracle 9i Database Documentation for Linux
第 4 页
(http://otn.oracle.com/docs/products/oracle9i/content.html)
? Tuning and Optimizing Red Hat Linux Advanced Server for Oracle 9i Database
(http://www.puschitz.com/TuningLinuxForOracle.shtml)
? Oracle 9iR2 on Linux: Performance, Reliability and Managemeability Enhancements
on Red Hat Linux Advanced Server 2.1
(http://otn.oracle.com/tech/linux/pdf/9iR2-on-Linux-Tech-WP-Final.PDF)
? An Overview of Red Hat Advanced Server V2.1 Reliability, Availability, Scalability,
and Manageability – RASM Features
(http://redhat.rsc03.net/servlet/cc5?joQSYWAVimkJoOxiruQJhuV2VR)
下载和安装 Red Hat Linux 7.1, 7.2, 7.3, 8.0, 9
(Downloading and Installing Red Hat Linux 7.1,
7.2, 7,3, 8.0, 9)
为了下载 Red Hat 7.x, 8.0, 9,可以访问链接 http://www.puschitz.com/RedHatDownloa
d.html。你可以在 Red Hat Linux Manuals (http://www.redhat.com/docs/manuals
/linux/) 上找到 Red Hat Linux 安装指南。
注意:您从上面链接中下载不到 Red Hat Linux Advanced Server 2.1 的二进制安装文件,
仅能下载到源代码。如果您想得到安装光盘,可以从 http://www.redhat.com/software
/linux/advanced 上购买。同时, Red Hat 也以相对低的价格提供 Advanced Server 2.1
的开发版。
解包下载的 Oracle 9i 安装文件和刻录 Oracle 9i 光盘
(Unpacking Downloaded Oracle 9i Installation
files and Burning Oracle 9i CDs)
从 http://otn.oracle.com/software/products/oracle9i/htdocs/linuxsoft.html 下载 Linux
版 Oracle9i。
解压和解包下载的文件:
1.Oracle 9iR2 (9.2.0)
(1) 简化过程(使用更少的磁盘空间,速度更快,推荐)
zcat lnx_920_disk1.cpio.gz | cpio –idmv
zcat lnx_920_disk2.cpio.gz | cpio –idmv
zcat lnx_920_disk3.cpio.gz | cpio –idmv
(2) 完整过程
# Uncompress
第 5 页
gunzip lnx_920_disk1.cpio.gz lnx_920_disk2.cpio.gz lnx_920_disk3.cpio.gz
# Unpack the downloaded files
cpio –idmv < lnx_920_disk1.cpio
cpio –idmv < lnx_920_disk2.cpio
cpio –idmv < lnx_920_disk3.cpio
2.Oracle 9i (9.0.1)
(1) 简化过程(使用更少的磁盘空间,速度更快,推荐)
zcat Linux9i_Disk1.cpio.gz | cpio –idmv
zcat Linux9i_Disk2.cpio.gz | cpio –idmv
zcat Linux9i_Disk3.cpio.gz | cpio –idmv
(2) 完整过程
# Uncompress
gunzip Linux9i_Disk1.cpio.gz Linux_Disk2.cpio.gz Linux_Disk3.cpio.gz
# Unpack the downloaded files
cpio –idmv < Linux9i_Disk1.cpio
cpio –idmv < Linux9i_Disk2.cpio
cpio –idmv < Linux9i_Disk3.cpio
解包和解压过程中,自动创建了 3 个包含安装文件的目录
Disk1
Disk2
Disk3
执行下面的命令刻录光盘(并不是必须的步聚):
mkisofs –r Disk1 | cdrecord –v --eject dev=0,0,0 speed=15 –
mkisofs –r Disk2 | cdrecord –v --eject dev=0,0,0 speed=15 –
mkisofs –r Disk3 | cdrecord –v --eject dev=0,0,0 speed=15 –
执行 cdrecord –scanbus 可以得到 dev 数值。
设置交换空间 (Setting Swap Space)
为了执行 Oracle 9i 标准安装和创建原型 (simple prototype) 数据库,Oracle 建议 Oracle
9i (9.0.1) 服务器至少需要 512M 内存,两倍内存或不少于 400M 的交换 (swap) 空间。
我曾经在一台 256M 内存和 600M 交换空间的 PC 机上成功地安装了 Oracle 9i (9.0.1
& 9.2.0) 和创建了默认数据库。但是,当我在这台 PC 机上使用较少的交换空间时,提示
内存溢出。所以,建议使用 Oracle 安装指南指定的内存和/或交换空间,或更多的内存和
交换空间。
第 6 页
注意:如果在安装过程中,你没有足够的交换空间或内存,特别是在数据库创建过程中,你
的 Oracle 服务器将变得非常迟钝。
查看内存大小,可以运行下面的命令:
grep MemTotal /proc/meminfo
查看交换空间大小,可以运行下面的命令:
cat /proc/swaps
也可以通过建立临时交换文件临时增加交换空间,代替使用原始设备 (raw device)。
su – root
dd if=/dev/zero of=tmpswap bs=1k count=900000
chmod 600 tmpswap
mkswap tmpswap
swapon tmpswap
取消临时交换空间,可以执行以下命令:
su – root
swapoff tmpswap
rm –rf tmpswap
设置共享内存 (Setting Shared Memory)
为了安装 Oracle 9i (9.2.0),需要增加所有 Red Hat 版本的 Linux 服务器的最大共享内存
(maximum shared memeory)。否则,Oracle 数据库配置助手 (the Oracle Database
Configuration Assistant) 会显示如下错误信息:
ORA-27123: unable to attach to shared memory segment
执行下面的命令,可以临时为内核增加 shmmax 设置:
$su – root
#cat /proc/sys/kernel/shmmax
33554432
#echo ‘expr 1024 * 1024 * 1024’ > /proc/sys/kernel/shmmax
#cat /proc/sys/kernel/shmmax
1073741824
(译者注:一般情况下可以设置最大共享内存为物理内存的一半,如果物理内存是 2G ,则
可以设置最大共享内存为 1073741824 ,如上;如物理内存是 1G ,则可以设置最大共享内
存为 512 * 1024 * 1024 = 536870912 ;以此类推。)
建议永久地增加 shmmax 设置。
查看 “Setting Shared Memory” (http://www.puschitz.com/TuningLinuxForOracle.shtml
#SettingSharedMemory),可以得到关于为 Linux 平台上 Oracle 数据库优化共享内存设
第 7 页
置的详细信息。这些参数可以被所有版本的 Red Hat Linux 应用。注意除 shmmax 外,其
余参数不需要为在 Linux 平台上安装 Oracle 改变。但是,你可能想在以后为优化 Oracle
服务器调整所有的共享内存设置。
检查 /tmp 空间 (Checking /tmp Space)
Oracle 通用安装程序 (the Oracle Universal Installer) 需要 400M 以上的 /tmp 临时空
间。
检查 /tmp 临时空间,可以运行:
df /tmp
如果没有足够的 /tmp 临时空间,可以临时在另一个文件系统中建立一个 tmp 目录。
su – root
mkdir //tmp
chown root.root //tmp
chmod 1777 //tmp
export TEMP=/ # used by Oracle
export TMPDIR=/ # used by Linux programs
当安装完 Oracle 之后,关闭 Oracle 并删除临时目录:
su – root
rmdir //tmp
unset TEMP
unset TMPDIR
Oracle 磁盘空间 (Sizing Oracle Disk Space)
仅安装数据库软件,大约需要2.5G 的磁盘空间。如果执行一个标准的数据库安装而不是自
定义的数据库安装,大约需要 3.5G 的磁盘空间。
“binutils” 问题 (The “binutils” Issue)
Oracle 9iR2 可以跳过这部分内容,仅 Oracle 9i (9.0.1) 出现问题。
随 Red Hat 7.1, 7.2, 7.3 和 Red Hat Advanced Server 2.1 一起发行的 binutils 不能很好
地运行 Oracle 9i (9.0.1) 通用安装程序 (the Oracle Universal Installer)。这里为 9.0.1 提
供3 个可选操作:
1.推荐以下操作方法
等到出现以下 Oracle 安装错误:
Error invoking target install of makefile
/opt/oracle/product/9.0.1/plsql/lib/ins_plsql.mk
根据 Oracle 安装错误 一节的描述修正问题。
第 8 页
推荐这种方法,因为这种方法不需要改变 binutils 版本。
2.不推荐以下操作方法
从 ftp://ftp.redhat.com/pub/redhat/linux/7.0/en/os/i386/RedHat/RPMS/binutils-2.10.
0.18.rpm 下载 binutils 版本,并在 Oracle 服务器上降级使用 binutils。
su – root
rpm –Uvh --force --nodeps binutils-2.10.0.18-1.i386.rpm
当安装完 Oracle 之后,再升级 binutils 到原来的版本,如 Red Hat 7.2 服务器:
su – root
rpm –Uvh --force --nodeps binutils-2.11.90.0.8-9.i386.rpm
3.在 Red Hat Advanced Server 2.1 上安装 Oracle 9iR1 或 Oracle 9iR1 iAS 的 Oracle
官方解决方案 http://otn.oracle.com/software/products/oracle9i/files/binutils_readme.
html。
检查开发包 (Checking Development Packages --
RPMs)
Oracle 安装器需要一些 RPM 开发包构建 Oracle 模块,否则将出现类似如下的错误:
Error in invoking target ntcontab.o of makefile
/opt/oracle/product/9.2.0/network/lib/ins_net_client.mk
1.RH 7.1, 7.2 和 RH AS 2.1 所需开发包
运行以下命令,可以查看这些开发包是否已安装:
rpm –q gcc cpp compat-libstdc++ glibc-devel kernel-headers binutils
例如,安装 Red Hat Advanced Server 2.1 时没有选择 Software Development 包,那么大
部分包没有安装。可以运行下面的命令安装这些包:
su – root
rpm –ivh cpp-2.96-108.1.i386.rpm glibc-devel-2.2.4-26.i386.rpm
rpm –ivh kernel-headers-2.4.9-e.3.i386.rpm gcc-2.96-108.1.i386.rpm
rpm –ivh binutils-2.11.90.0.8-12.i386.rpm
2.RH 7.3, 8.0 和 9 所需开发包
运行以下命令,可以查看这些开发包是否已安装:
rpm –q gcc cpp compat-libstdc++ glibc-devel glibc-kernheaders binutils
例如,安装 Red Hat 9 时选择 Server 安装类型,那么必须运行以下命令安装开发包:
su – root
rpm –ivh cpp-3.2.2-5.i386.rpm glibc-devel-2.3.2-5.i386.rpm
rpm –ivh glibc-kernheaders-2.4-8.10.i386.rpm gcc-3.2.2-5.i386.rpm
第 9 页
rpm –ivh binutils-2.13.90.0.18-9.i386.rpm
3.Red Hat Enterprise Linux Advanced Server 3 (RHEL AS 3) 所需开发包
运行以下命令,可以查看这些开发包是否已安装:
rpm –q gcc cpp compat-libstdc++ glibc-devel glibc-headers
rpm –q glibc-kernheaders binutils
注意:在开始安装 Oracle 9iR2 之前,请确信已经查看了 Oracle 安装错误 (Oracle
Installation Errors) 一节中关于 “Error in invoking target install of make file
/opt/oracle/product/9.2.0/network/lib/ins_oemagent.mk” 的内容。
JDK
Oracle 9iR2 可以跳过这部分内容,不在系统中安装 JDK,也可以成功安装 Oracle 9iR2。
Oracle 现在能够使用自已的 java。这意味着不需要像 Oracle 旧版本要求的那样执行下面
的步聚。
下载 JDK 1.3.1 或 Blackdown 1.1.8_v3:(我一般使用 Blackdown)
http://www.blackdown.org/
http://java.sun.com/
根据 JDK 文档,安装 JDK 到 /usr/local 目录下。同时建立一个符号链接 JDK 到
/usr/local/java:
su – 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
创建 Oracle 用户帐号 (Creating Oracle User
Accounts)
su – root
groupadd dba # group of users to be granted with SYSDBA system privilege
groupadd oinstall # group owner of Oracle files
useradd –c “Oracle software owner” –g oinstall –G dba oracle
passwd oracle
查看 “When to use “OINSTALL” group during install of oracle” (http://metalink.oracle
.com/oracleinstall/oracle8i/genericunix.html#Uoui),可以得到有关 oinstall 组帐号的更
多信息。
创建 Oracle 目录 (Creating Oracle Directories)
在下面的例子里,确信 /opt 文件系统有足够的空间。如果 /opt 不是一个单独的文件系统,
第 10 页
确保根文件系统 “/” 有足够的空间。
su – root
mkdir /opt/oracle
mkdir /opt/oracle/product
mkdir /opt/oracle/product/9.2.0
chown –R oracle.oinstall /opt/oracle
mkdir /var/opt/oracle
chown oracle.dba /var/opt/oracle
chmod 755 /var/opt/oracle
设置 Oracle 环境 (Setting Oracle Environments)
在运行 runInstaller 之前,以 oracle 用户设置下面列出的 Oracle 环境变量
# Set the LD_ASSUME_KERNEL environment variable only for Red Hat
# 9 and for Red Hat Enterprise Linux Advanced Server 3 (RHEL AS 3) !!
# Use the “Linuxthreads with floating stacks” implementation instead of NPTL:
export LD_ASSUME_KERNEL=2.4.1
# 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/
export NLS_LANG=AMERICAN
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib
# Set shell search paths
export PATH=$PATH:$ORACLE_HOME/bin
不设置 CLASSPATH 环境变量,也可以成功安装 Oracle 9iR2
# CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib
# CLASSPATH=$CLASSPATH:$ORACLE_HOME/rdbms/jlib
# CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib
# export CLASSPATH
如果使用 bash,可以在 ~oracle/.bash_profile 文件结尾处设置环境变量。这样就不必在
oracle 用户登录或执行 su – oracle 转换为 oracle 用户时,再次设置这些环境变量。
启动 runInstaller (Starting runInstaller)
在开始之前,确信已经设置了 Oracle 环境变量。
第 11 页
Oracle 不再支持字符模式安装。因此,为了在登录到服务器上的 PC 机控制台上直接执行
runInstaller (在本例中,Oracle 运行的节点名是 “oracleserver”),需要设置 DISPLAY 环
境变量。在这样做之前,请确信允许 oracleserver 之上的 runInstaller 在客户端的 Linux
桌面机器上显示 X 信息 (在本例中,运行象 KDE, GNOME 之类的 X Windows 的 PC
机称为 “yourdesktop”),因为除非取得相应的权限,否则运行在远程服务器上的程序不能
显示信息到客户端的屏幕上。注意,如果不使用 Exceed ,X 显示重链接机制不能工作在 NT
桌面机器之上。
在运行 runInstaller 之前,执行如 xterm 命令查看 X 安装是否可以工作!如果在桌面 PC
上安装 Oracle 而不是在远程节点上,可以跳过 1 ~ 3 步。
1.允许 oracleserver 显示 X 信息到 yourdesktop:
yourdesktop: user$xhost +oracleserver
2.打开一个新窗口,并以 root 用户登录到 Oracle 服务器 oracleserver,这个窗口将用
于装载 (mounting) 和 卸载 (unmounting) Oracle 光盘。
oracleserver: $su – root
oracleserver: root#mount /mnt/cdrom
3.从运行 runInstaller 的 Oracle 服务器 oracleserver 的控制台上,运行以下命令:
oracleserver: $su – oracle
oracleserver: oracle$export DISPLAY=yourdesktop:0.0
4.现在以 oracle 用户执行 runInstaller。不要切换到 /mnt/cdrom 目录!!
oracleserver: oracle$/mnt/cdrom/runInstaller
注意:这时,仍不要在 Red Hat Enterprise Linux Advanced Server 3 (RHEL AS 3) 之上
运行 runInstaller 。
在 RH 7.1, 7.2, 7.3, 8.0, 9 和 RH AS 2.1 上运行
Oracle 安装 (Running Oracle Installation on RH
7.1, 7.2, 7.3, 8.0, 9, and on RH AS 2.1)
谨记在 Oracle 安装过程中将出现一个或多个错误!
我在安装过程中对 runInstaller 的回答如下:
- What would you like as the base directory (Inventory Location):
/opt/oracle/oraInventory
- UNIX Group Name (permission for updating Oracle software)
oinstall
第 12 页
也可使用 dba,但出于安全考虑不推荐使用 dba。
- Full path name for Oracle Home
/opt/oracle/product/9.2.0
等等
在 Red Hat Enterprise Linux Advanced Server 3
上运行 Oracle 安装 (Running Oracle Installation
on Red Hat Enterprise Linux Advanced Server 3)
为了在 RHEL AS 3 平台上安装 Oracle 9iR2,必须应用“Oracle 9iR2 Patch Set 3
9.2.0.4.0” 补丁集和其它一些补丁,仅应用 9.2.0.4 补丁包可以修正其中一部分错误。
1.安装 Oracle 9iR2
安装下面列出的 RPMs(查看 Oracle Note:252217.1,可以得到更多信息):
su – root
rpm –ivh compat-db-4.0.14-5.i386.rpm compat-gcc-7.3-2.96.122.i386.rpm
rpm –ivh compat-gcc-c++-7.3-2.96.122.i386.rpm
rpm –ivh compat-libstdc++-7.3-2.96.122.i386.rpm
rpm –ivh compat-libstdc++-devel-7.3-2.96.122.i386.rpm
rpm –ivh openmotif21-2.1.30-8.i386.rpm
rpm –ivh setarch-1.3-1.i386.rpm tcl-8.3.5-92.i386.rpm
因为 Oracle 安装过程要使用旧 gcc,因此需要重新链接 gcc(查看 Oracle Note:252217.1,
可以得到更多信息):
su – root
mv /usr/bin/gcc /usr/bin/gcc323
ln –s /usr/bin/gcc296 /usr/bin/gcc
mv /usr/bin/g++ /usr/bin/g++323 # 如果 g++ 不存在,那么 gcc-c++ 没有安装
ln –s /usr/bin/g++296 /usr/bin/g++
当你从 Oracle 9iR2 光盘执行 runInstaller 时,将出现以下错误信息:
Error occurred during initialization of VM
Unable to load native library: /tmp/OraInstall2003-10-25_03-14-57PM/jre/lib/i386
/libjava.so symbol _libc_wait, version GLIBC_2.0 not
defined in file libc.so.6 with link time reference
为了解决 _libc_wait 符号问题,从 http://metalink.oracle.com/ 下载补丁 p3006854_
9204_LINUX.zip。查看 bug 3006854,可以得到详细信息。
第 13 页
为了应用这个补丁,可以运行:
$su – root
#unzip p3006854_9204_LINUX.zip
Archive:p3006854_9204_LINUX.zip
creating:3006854/
inflating:3006854/rhel3_pre_install.sh
inflating:3006854/README.txt
#cd 3006854
#sh rhel_pre_install.sh
Applying patch…
Patch successfully applied
#
注意:如果在运行 rhel3_pre_install.sh 时,提示如下错误:
rhel3_pre_install.sh :line 36 :gcc :command not found
这可能是忘记安装和链接 gcc 。你将不能运行任何二进制执行文件:
#ls
ls:error while loading shared libraries :/etc/libcwait.so :cannot open shared object file
#
为了修正这个错误,运行如下命令:
#echo “” > /etc/ld.so.preload
rm /etc/ld.so.preload
重新运行。
现在可以从光盘上运行 runInstaller:
#su – oracle
$echo $LD_ASSUME_KERNEL # it is important that this variable is set!
2.4.1
$/mnt/cdrom/runInstaller
- Welcome Screen: Click Next
- Inventory Location: Click Next
- Unix Group Name: Use “oinstall” and click Next
When asked to run /tmp/orainstRoot.sh, run it before
you click continue
- File Locations: Use default value
- Available Products: Select “Oracle 9i Database 9.2.0.1.0”
- Installation Types: Select Custom since we only want to install the software
for now
- Available Products: Click Next or add some more components
第 14 页
- Components Locations: Accept default values and click Next
- Privileged Operating System Groups:
I used the default values:OSDBA Group = dba, OSOPER
= dba
- Oracle Managent Server Repository:
I used the default choice
- Create database: Select NO since we first have to patch Oracle before a
database can be created!
- Summary: Start the Install
- Configuration tools: Tools won’t come up. Simply ignore it
- At the end of the installation, exit runInstaller.
可能得到以下错误:
? Error in invoking target install of makefile /opt/oracle/product/9.2.0/network/
lib/ins_oemagent.mk
文件 /opt/oracle/product/9.2.0/install/make.log 中存在以下信息:
/opt/oracle/product/9.2.0/network/lib/libnmi.a (snmitcln.o) (.text+0xa4e):In
function ‘Nls_FormatCmd’:undefined reference to ‘_ctype_b’
/opt/oracle/product/9.2.0/network/lib/libnmi.a (snmitcln.o) (.text+0x159d):In
function ‘Nls_ScanCmd’:undefined reference to ‘_ctype_b’
/opt/oracle/product/9.2.0/network/lib/libnmi.a (snmitcln.o) (.text+0x1603):more
undefined references to ‘__ctype_b’ follow
collect2:ld returned 1 exit status
make:*** [dbsnmp] Error 1
点击忽略,这个错误将在 9.2.0.4 补丁包被应用之后,由补丁 3119415 修正。你不能在这
时应用补丁 3119415,因为文件 /opt/oracle/oraInventory/ContentsXML/comps.xml 仍
然不存在。
? Error in invoking target install of makefile /opt/oracle/product/9.2.0/ctx/lib/ins_
ctx.mk
文件 /opt/oracle/product/9.2.0/install/make.log 中存在以下信息:
/usr/bin/ld:ctxhx:hidden symbol ‘stat’ in /usr/lib/libc_nonshared.a (stat.oS) is
referenced by DSO
collect2:ld return 1 exit status
make:*** [ctxhx] Error 1
点击忽略,这个错误将被 9.2.0.4 补丁包修正。
2.修补 Oracle 9iR2
为了修补 Oracle 9iR2,从 http://metalink.oracle.com/ 下载针对 Linux x86 的 Oracle
9i 第二版补丁集 3 版本 9.2.0.4.0 (Oracle 9i Release 2 Patch Set 3 Version 9.2.0.4.0)。
第 15 页
将下载的 p3095277_9204_LINUX.zip 文件拷贝到如 /tmp 目录下,并运行如下命令:
#su – oracle
$cp p3095277_9204_LINUX.zip /tmp
$cd /tmp
$unzip p3095277_9204_LINUX.zip
Archive:p3095277_9204_LINUX.zip
inflating:9204_lnx32_release.cpio
inflating:README.html
inflating:patchnote.css
$
$cpio –idmv < 9204_lnx32_release.cpio
…
为了修补 runInstaller,可以运行:
#su – oracle
$echo $LD_ASSUME_KERNEL # it is important that this variable is set!
2.4.1
$cd /tmp/Disk1
$./runInstaller
- Welcome Screen: Click Next
- File Locations: Use default values
- Available Products: Select “Oracle Universal Installer 2.2.0.18.0 !”
- Components Locations: Accept default values and click Next
- Summary: Start the Install
- At the end of the installation, exit runInstaller!
为了修补 Oracle 9iR2,可以运行:
#su – oracle
$echo $LD_ASSUME_KERNEL # it is important that this variable is set!
2.4.1
$cd $ORACLE_HOME/bin
$./runInstaller
- Welcome Screen: Click Next
- File Locations: Use default values
- Available Products: Select “Oracle 9iR2 Patch Set 3 9.2.0.4.0 !”
- Summary: Start the Install
- At the end of the installation, exit runInstaller!
可能得到以下错误:
Error in invoking target install of makefile /opt/oracle/product/9.2.0/network/
lib/ins_oemagent.mk
第 16 页
文件 /opt/oracle/product/9.2.0/install/make.log 中存在以下信息:
/opt/oracle/product/9.2.0/network/lib/libnmi.a (snmitcln.o) (.text+0xa4e):In
function ‘get_ora_stmt_handle’:undefined reference to ‘_ctype_b’
/opt/oracle/product/9.2.0/network/lib/libnmi.a (snmitcln.o) (.text+0x159d):In
function ‘OraProcess_Oid’:undefined reference to ‘_ctype_b’
/opt/oracle/product/9.2.0/network/lib/libnmi.a (snmitcln.o) (.text+0x1603):more
undefined references to ‘__ctype_b’ follow
collect2:ld returned 1 exit status
make:*** [dbsnmp] Error 1
点击忽略,这个错误将在 9.2.0.4 补丁包被应用之后,由补丁 3119415 修正。当补丁集
9.2.0.4 正在运行时,不能应用补丁 3119415。
在应用 9.2.0.4 补丁集之后, 从 http://metalink.oracle.com/ 上下载补丁
p3119415_9204_LINUX.zip 。查看 bug 3119415 , 可以得到详细信息。同时, 从
http://metalink.oracle.com/ 上下载 opatch 2.2.0 发行版工具包。查看 bug 2617419,可
以得到详细信息。
为了安装 opatch,可以运行:
#su – oracle
$cp p2617419_210_GENERIC.zip /tmp
$cd /tmp
$unzip p2617419_210_GENERIC.zip
在应用补丁 3119415 之前,请确信 oracle 用户可以访问fuser。否则,补丁不能被应用,
因为 opatch 要使用 fuser。
为了应用补丁 3119415,可以运行:
#su – oracle
$unzip p3119415_9204_LINUX.zip
$ cd 3119415
$export PATH=$PATH:/tmp/OPatch
$export PATH=$PATH:/sbin # the patch needs “fuser” which is located in /sbin
$which opatch
/tmp/OPatch/opatch
$opatch apply
现在你可以使用 dbca 创建数据库:
$su = oracle
#dbca
最后,如果你不再需要 /usr/bin/gcc 和 /usr/bin/g++,请不要忘记取消改变。也不要忘
记 /etc/ld.so.preload 文件。
第 17 页
启动和停止 Oracle 9i 数据库 (Startup and
Shutdown of the Oracle 9i Database)
1.sqlplus:
Oracle 9i (9.0.1 & 9.2.0) 不再使用 svrmgrl,而改用 sqlplus。
例如,启动数据库,可以运行下面的命令:
#su – oracle
$sqlplus /nolog
SQL>connect / as sysdba
SQL>startup
斜杠 (/ -- slash) 使用 SYS 连接到方案 (schema)。本例中,将使用 SYS 数据库用户以
SYSDBA 身份连接到方案。SYSDBA 赋予用户如下特权:
- sysoper privileges WITH ADMIN OPTION
- create database
- recover database until
立即停止数据库,可以运行下面的命令:
#su – oracle
$sqlplus /nolog
SQL>connect / as sysdba
SQL>shutdown –immediate
2.$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 文件中第 3 个字段的
值由 N 改为 Y。
例如,Oracle SID 是 test,/etc/oratab 相关行由
test:/opt/oracle/product/9.2.0:N
变为
test:/opt/oracle/product/9.2.0:Y
在一些情况下,为了使 dbstart 和 dbshut 正常工作,不得不将 SID test 的初始化文件从
/opt/oracle/admin/test/pfile 拷贝到 $ORACLE_HOME/dbs 目录:
cp /opt/oracle/admin/test/pfile/inittest.ora.643 $ORACLE_HOME/dbs/inittest.ora
但是,在拷贝之前,先确认初始化文件是否已经在 $ORACLE_HOME/dbs 中存在!
第 18 页
为了完全整合 Oracle 9i 到 Red Hat 8 Sys V 初始化进程,请查看 http://www.gurulabs.
com。“Oracle 9i RHL Run Package” 是基于 Suse 提供的 GPLd RPM,但做了很多尽可能
与 Red Hat 的无缝连接的修改。
Oracle 安装问题,技巧和提示 (Oracle Installation
Problems, Tips and Hits)
这里列出的问题一些仅出现于 9.0.1!
? 不要切换目录至 /mnt/cdrom,运行 ./runInstaller
如果这样做了,安装过程将因为不能更换光盘而失败。
? 如果忘记了设置 DISPLAY 环境变量(如 export DISPLAY=oracleserver:0.0),或者忘
记了授权给远程控制台 -- Oracle 服务器 -- 在桌面 PC 上显示 X 信息(如 xhost
+oracleserver),那么将出现如下错误:
Xlib:connection to “:0.0” refused by server
Xlib:Client is not authorized to connect to Server
这种情况下,不得不杀死仍然在后台运行的 runInstaller 进程。如果不这样做,
runInstaller 将不再提示错误,也不出现安装界面。还要清除 /tmp/OraInstall 目录。
? 当 runInstaller 开始配置工具 (“Configuration Tools”),Oracle Net Configuration
Assistant 有时会挂起。可以停止该步再重新运行;或继续安装,当安装完成,再重试
Oracle Net Configuration Assistant。
? 当系统在安装过程中停止响应,尤其是在数据库创建过程中,这可能是由于没有足够的
内存或交换空间。当没有足够的交换空间,我遇到了几分钟响应迟钝或“挂起”。如果
出现这种情况,等待直到系统再次响应为止。
? Oracle 安装过程也运行 make 等。在生产环境下,可能没有编译器 (compiler) 或未
安装其它开发包。所以请在安装前确认 gcc, cpp, glibc-devel, compat-libstdc++,
kernel-headers (RH 7.1, 7.2, AS 2.1), glibc-kernheaders (RH 7.3, 8.0, 9), binutils 已安
装。
? 如果因为其它原因安装过程没有成功,请在再次运行之前,清除以下文件和目录:
/etc/oraInst.loc /etc/oratab /tmp/ $ORACLE_BASE/*
? 其它问题,可以查看 “Oracle on Linux Discussion Forum” (http://www.oracle.com/
forums/forum.jsp?forum=135)
Oracle 安装错误 (Oracle Installation Errors)
这里罗列了 Oracle 9i (9.0.1 & 9.2.0) 安装过程中出现的错误和问题。一些错误和问题及其
第 19 页
解决办法仅出现于 9.0.1 的安装过程中,一些 9.2.0 存在。因为我没有遇到所有的问题,
所以我不能核实所有解决办法的正确性,然而,这里列出所有出现的问题。如果你遇到了其
它问题,而且你无法解决,请发邮件通知我 (webmaster@puschitz.com),以便于我增加到
列表中。
下面列出了安装过程中可能出现的错误和问题及其解决办法:
? Log Files
当遇到问题,首先检查错误日志。9.2.0 在 /tmp/OraInstall (如 /tmp/OraInstall
2002-07-04_09-50-19PM);9.0.1 在 /tmp/OraInstall。当遇到 make 问题,检查
$ORACLE_HOME/install/make.log 文件。
? Various make Problems
确认系统中安装了 gcc:
$which gcc
/usr/bin/gcc
以下命令可以检查 /usr/bin/gcc 包名:
$rpm –qf /usr/bin/gcc
gcc-2.96-98
? Error in invoking target install of
make file /opt/oracle/product/9.2.0/ctx/lib/ins_ctx.mk
这个问题仅出现在安装 Oracle 9iR2 (9.2.0),当我在 Red Hat 8.0 上安装 Oracle
9iR2 时遇到该问题。但并不是说,在别的平台上安装时,不会遇到这个问题。
当这个问题出现时,在 $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,保存。这时完整内容是:
INSO_LINK = -LS(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)
在弹出窗口中,重试。
第 20 页
如果不能工作,请尝试下面的方法:
再次编辑文件 $ORACLE_HOME/ctx/lib/env_ctx.mk,找到 INSO_LINK = 行,取
消上面的改变,增加 ‘cat $(LIBHOME)/sysliblist’,保存。这时完整内容是:
INSO_LINK = -LS(CTXLIB) $(LDLIBFLAG)m ‘cat $(LIBHOME)/sysliblist’
$(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 9iR2 时遇到这个问题。
当数据库配置助手 (the Database Configuration Assistant) 运行时,出现这个错误。
执行以下命令临时增加最大共享内存 (the maximum shared memory):
$su – root
#cat /proc/sys/kernel/shmmax
33554432
#echo ‘expr 1024 * 1024 * 1024’ > /proc/sys/kernel/shmmax
#cat /proc/sys/kernel/shmmax
1073741824
#
重试数据库配置助手 (the Database Configuration Assistant)。
建议为了 Oracle 9i 永久增加 shmmax 设置。为了永久增加最大共享内存,在
/etc/sysctl.conf 文件中增加下面内容:
kernel.shmmax=1073741824
? ORA-03113:end-of-file on communication channel
当运行数据库配置助手和 sqlplus 时遇到了这个错误。当在 Red Hat AS 2.1 安装
Oracle 9iR2 (9.2.0),数据库配置助手出现这个错误时,使用 oracle 用户,删除共享
内存段 (the shared memory segment),并重新启动数据库配置助手 (the Database
Configuration Assistant)。我确定这是不是正确的方法,但是这个方法能解决问题,使
数据库配置助手 (the Database Configuration Assistant) 正常工作。
数据库配置助手 (the Database Configuration Assistant)
执行 ipcs 命令得到由 Oracle 分配的共享内存段 (the shared memory segment) 的
地址:
$su – root
#ipcs
第 21 页
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x00000000 0 root 600 196608 2
0x00000001 32769 root 600 655360 2
0x00000000 458755 oracle 660 4194304 0
0x00000000 491524 oracle 660 33554432 0
0x00000000 524293 oracle 660 33554432 0
0x00000000 557062 oracle 660 33554432 0
0x00000000 589831 oracle 660 33554432 0
0x00000000 622600 oracle 660 33554432 0
0x00000000 655369 oracle 660 33554432 0
0x00000000 688138 oracle 660 33554432 0
0x3ecee0b0 720907 oracle 660 4194304 0
------ Semaphore Arrays --------
key semid owner perms nsems status
------ Message Queues --------
key msqid owner perms used-bytes messages
#
在安装过程中,使用 oracle 用户删除 Oracle 分配的所有共享内存段 (the shared
memory segment):
#ipcrm shm 458755 491524 524293 557062 589831 622600 655369 688138 720907
当重新启动数据库配置助手之后,一旦安装过程继续,我也立即重新启动了数据库。
警告:我不敢保证,如果在安装过程中,这样做是否会引起其它未知的问题。但是至今
为止使用这个办法,我没有遇到任何问题。
sqlplus:
如果连接 sqlplus 时出错这个错误,那么关闭数据库和退出 sqlplus。之后,删除所有
属于 Oracle 用户的共享内存段。据我所知,这样做不会引起任何问题。
查看 “Determining Which Semaphore Sets and Shared Memory Segments Belong to
Each Oracle Database or Instance” (http://www.puschitz.com/TuningLinuxFor
Oracle.shtml#DeterminingSemaphoreSetsAndSharedMemory),可以得到关于共享内
存段的详细信息。
注意:为了永久的解决这个问题,增加内核 shmmax 值。
? Error invoking target install of makefile
/opt/oracle/product/9.0.1/plsql/lib/ins_plsql.mk
Error invoking target install of makefile
第 22 页
/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
仅在安装 Oracle 9i (9.0.1) 过程中出现该错误。有人发邮件说下面的解决办法也可工
作在 Mandrake 8.1, Mandrake 8.2 和 SuSe 8.0 平台上。
编辑 $ORACLE_HOME/bin/genclntsh 和改变下面行的内容
LD_SELF_CONTAINED=“-z defs”
为
LD_SELF_CONTAINED=“”
之后,使用 oracle 用户,而不是 root 用户,执行脚本 $ORACLE_HOME/bin/gen
clntsh,在这样做之前,请确信 Oracle 环境已正确设置。
#su – oracle
$$ORACLE_HOME/bin/genclntsh
Created /opt/oracle/product/9.0.1/lib/libclntst9.a
$
在错误对话框,重试,将正确工作。
http://otn.oracle.com/software/products/oracle9i/files/binutils_readme.html 列出
了 Red Hat Advanced Server 2.1 平台上 Oracle 9iR1 和 9iR1 iAS 的官方解决方案。
? Error in invoking target install of makefile
/opt/oracle/product/9.2.0/network/lib/ins_oemagent.mk
这个错误仅出现在 Red Hat 9 中。$ORACLE_HOME/install/make.log 文件包含以下
错误信息:
…
/opt/oracle/product/9.2.0/network/lib/libnmi.a (snmitcln.o) (.text+0x159d) : In
function “Nls_ScanCmd”:undefined reference to “_ctype_b”
/opt/oracle/product/9.2.0/network/lib/libnmi.a (snmitcln.o) (.text+0x1603):more
undefined references to `__ctype_b' follow
这个错误是由于 Red Hat 使用新的本地模式, _ctype_b() 实际上去查找
_ctype_b_loc()。然而,在 libc.so 中,_ctype_b 仍然作为兼容符号输入;至少在 RH
9 glibc-2.3.2-5 中是这样。这就是为什么有人使用 Red Hat 9 会出现这个问题,而有
些人不出现的原因。
当你从商店买来 Red Hat 9 的光盘,你可能在第一张光盘中发现 glibc-2.3.2-5.i686.
rpm,这个版本的 glibc 输出 _ctype_b():
$rpm –ql glibc-2.3.2-5 | grep libc.so
/lib/i686/libc.so.6
/lib/libc.so.6
/lib/tls/libc.so.6
第 23 页
$nm –a /lib/i686/libc.so.6 | grep _ctype_b
001315f8 D _ctype_b
00022340 T _ctype_b_loc
$nm –a /lib/libc.so.6 | grep _ctype_b
00133c58 D _ctype_b
000223a0 T _ctype_b_loc
$
但是,当你从 redhat.com 或其它镜像网站下载 Red Hat 9,你会发现在这个镜像中是
glibc-2.3.2-11.9.i686.rpm , 这个版本的 glibc 不输出 _ctype_b() 。这也是使用
glibc-devel-2.3.2-27.9.i386.rpm 的原因。
$rpm –ql glibc-2.3.2-11.9 | grep libc.so
/lib/i686/libc.so.6
/lib/libc.so.6
/lib/tls/libc.so.6
$nm –a /lib/i686/libc.so.6 | grep _ctype_b
00131718 D _ctype_b@GLIBC_2.0
000223A0 T _ctype_b_loc
$nm –a /lib/libc.so.6 | grep _ctype_b
00133d58 D _ctype_b@GLIBC_2.0
000223f0 T _ctype_b_loc
$
检查系统中的 glibc 版本:
首先,检查你的 RH 9 系统中 glibc 是否和 Oracle 安装器一起工作:
$rpm –q glibc-2.3.2-5 glibc-common-2.3.2-5 glibc-devel-2.3.2-5
如果得到以下信息:
package glibc-2.3.2-5 is not installed
package glibc-common-2.3.2-5 is not installed
package glibc-devel-2.3.2-5 is not intalled
说明系统中 glibc 没有安装,无法和 Oracle 安装器一起工作,需要从 Work Around
过程开始。
但是如果你的系统中安装了 glibc-2.3.2-5,那么可以跳过 Work Around 过程。
Work Around 过程
因为不能从网上找到可下载的 glibc-2.3.2-5,所以我将它放在我的网站上了。这些
RPM 是从商店里购买的 RH 9 的第一张光盘上拷贝过来。因为 RH 9 有一些改变,
因此不推荐使用老 Red Hat 发行版的任何 compat 包。
下面是在 RH 9 服务器上临时安装 glibc-2.3.2-5 的过程:
第 24 页
(1) 从 http://www.puschitz.com/rh9_gcs_download 下载 glibc-2.3.2-5 包
为避免有人改动过或替换过,检查下载的 RPM 包的摘要和签名。为了确保 RPM 包
的完整性,运行下面的命令:
$su – root
#rpm --import /usr/share/rhn/RPM-GPG-KEY
#rpm --checksig glibc-2.3.2-5-i686.rpm glibc-common-2.3.2-5.i386.rpm
glibc-2.3.2-5.i686.rpm:(sha1) dsa sha1 md5 gpg OK
glibc-common-2.3.2-5.i386.rpm:(sha1) dsa sha1 md5 gpg OK
#rpm --checksig glibc-devel-2.3.2-5.i386.rpm
glibc-devel-2.3.2-5.i386.rpm:(sha1) dsa sha1 md5 gpg OK
(2) 降级 glibc, glibc-common, glibc-devel
#rpm –Uvh --oldpackage glibc-2.3.2-5.i686.rpm glibc-common-2.3.2-5.i386.rpm
#rpm –Uvh --oldpackage glibc-devel-2.3.2-5.i386.rpm
如果出现如下错误:
error:Failed dependencies
glibc = 2.3.2-11.9 is needed by (installed) glibc-debug-2.3.2-11.9
glibc = 2.3.2-11.9 is needed by (installed) glibc-utils-2.3.2-11.9
glibc-devel = 2.3.2-11.9 is needed by (installed) glibc-debug-2.3.2-11.9
glibc-devel = 2.3.2-11.9 is needed by (installed) nptl-devel-2.3.2-11.9
为了解决这个问题,需要临时移除这些包,直到 Oracle 安装完成,升级 glibc 包之后,
再重新将安装这些包。
#rpm –e glibc-debug glibc-utils nptl-devel
现在,再次运行 runInstaller。
Oracle 成功安装之后,升级 glibc, glibc-common 和 glibc-devel,例如:
#rpm –Uvh glibc-2.3.2-11.9.i686.rpm glibc-common-2.3.2-11.9.i386.rpm
#rpm –Uvh glibc-devel-2.3.2-11.9.i386.rpm
在 Red Hat Linux 中,由于二进制文件和发行的共享库,因此其兼容性总是有保障的,
但不是因为 .o 和 .a 文件。然而 .o 和 .a 文件兼容性也是有保证的。因为
glibc-2.3.2-5 和 glibc-2.3.2-11.9 是从同一发行版演变而来,因此,由其生成的 .o
(Oracle 的 .o 文件是在 Oracle 安装过程中建立的) 和 .a 文件是兼容的。这意味着
在 Oracle 成功安装之后,升级 glibc,Oracle 仍能正常运行。
(According to Red Hat, binary compatibility in Red Hat Linux is always guaranteed
for binaries and shared libraries across releases, but not for .o files nor .a files.
However, compatibility is guaranteed for .o files and .a files. _within_a release. Since
glibc-2.3.2-5 and glibc-2.3.2-11.9 are from the same release, compatibility should be
guaranteed for .o files – Oracle’s .o files which have been created during the Oracle
installation) and .a files. This means that Oracle should be fine when you upgrade
glibc after the Oracle intallation.)
第 25 页
? $dbca
SIGSEGV 11* segmentation violation
stackbase=0x453da000, stackpoint=0x453d9d5c
Full thread dump:
“AWT-EventQueue-0” (TID : 0x411d1e20, sys_thread_t : 0x453d9d5c,
state:R) prio=5 * current thread*
java.lang.Object.wait (Object.java)
java.awt.EventQueue.getNextEvent (EventQueue.java:126)
…
Red Hat 8.0 和 Red Hat 9 平台上,当 dbca 崩溃时,得到上述内容。如果发生,可
以尝试下面的方法:
$su – root
#touch /etc/rac_on
现在可以重新启动 dbca。
另一个解决办法是编辑 $ORACLE_HOME/bin/dbca 文件,将下面列出的除第 3 行
外的其余行注释掉。
#if [ -f /etc/rac_on ]; then
#Run DBCA
$JRE_DIR/bin/jre –native –DORACLE_HOME=$OH……
#else
#Run DBCA
#$JRE_DIR/bin/jre –DORACLE_HOME=$OH……
#fi
重新启动 dbca。
? ./runInstaller:line 58:./runInstaller:cannot execute binary file.
这可能是在 32 位版 Linux 系统上安装 64 位版 Oracle 引起的。确信为你的 Linux
系统下载了正确的 Oracle 版本。
运行下面的命令,可以检验 runInstaller 是32 位版还是64 位版的:
$cd /mnt/cdrom
$file install/linux/runInstaller
install/linux/runInstaller:ELF 32-bit LSB executable, Intel 80386, version 1(SYSV),
for GNU/Linux 2.0.0, dynamically linked (uses shared libs), not stripped
运行下面的命令,可以检验 Linux 系统是32 位版还是64 位版的:
$file /sbin/init
/sbin/init:ELF 32-bit LSB execute, Intel 80386, version 1 (SYSV) for GNU/Linux
2.2.5, dynamically linked (uses shared libs), not stripped
第 26 页
? The Oracle installer runInstaller hangs at:Installing Java Runtime
Environment... Link pending... Copying README...
这个问题仅在 RH 9 中出现,没有设置环境变量 LD_ASSUME_KERNEL = 2.4.1。
运行下面的命令,并重新运行 runInstaller,可以修正这个错误:
$export LD_ASSUME_KERNEL=2.4.1
? Can’t find init file for Database “SID”
当我使用 dbstart 启动数据库时,出现这个错误。
将 SID(如 test)的初始化文件,从 /opt/oracle/admin/test/pfile 目录拷贝至
$ORACLE_HOME/dbs 目录,以使 dbstart 和 dbshut 能够正常工作:
cp /opt/oracle/admin/test/pfile/inittest.ora.642 $ORACLE_HOME/dbs/inittest.ora
? Error in setting permissions of file/directory
/opt/oracle/jre/1.1.8/bin/i686/native_threads/.extract_args
如果没有刻录光盘,可能会产生该问题。
刻录光盘或者从镜像文件中拷贝 .extract_args 文件至 runInstaller 报错的位置。
? jre was not found in /tmp/OraInstall/jre/bin/i586/green_threads/jre
可能运行在一台 586 机器或与 586 兼容 AMD CPU (如 AMD K6-III-400)。可以运
行 uname –m 命令检查机器(硬件)类型。如果不是运行在 586 或 AMD 机器上,
试着链接 jre 至 java,以解决该问题。
为在 586 或 AMD CPU 的机器上调整该问题,为 lib 和 bin 建立一个从 i586 到
i686 的链接,并将 i686 设置为只读。例如:
ln –s /tmp/OraInstall/jre/bin/i686 /tmp/OraInstall/jre/bin/i586
ln –s /tmp/OraInstall/jre/lib/i686 /tmp/OraInstall/jre/lib/i686
chmod u-w /tmp/OraInstall/jre/bin/i686 /tmp/Oracle/jre/lib/i686
现在重新启动 runInstaller。
? ../jre/bin/i386/native_threads/java:error while loading shared libraries:
libstdc++-libc6.1-1.so.2:cannot open shared object file:No such file or directory
没有安装 compat-libstdc++ 包,该包保证了标准 C++ 库 (Standard C++ libraries)
对 Red Hat 6.2 的向下兼容性。为了修正这个问题,可以安装 compat-libstdc++ 包。
rpm –ivh compat-libstdc++-7.3-2.96.118.i386.rpm
? /opt/oracle/jre/1.1.8/bin/../lib/i686/green_threads/libzip.so:symbol errno,
version GLIBC_2.0 not defined in file libc.so.6 with link time reference (libzip.so)
Unable to initialize threads:cannot find class java/lang/Thread
Count not create Java VM
在没有设置 LD_ASSUME_KERNEL 环境变量的 Red Hat 9 系统上运行数据库配置
第 27 页
助手 (the Database Configuration Assistant)时,出现这个问题。
为了修正这个问题,可以运行下面的命令,并重新运行 dbca:
$export LD_ASSUME_KERNEL=2.4.1
? Other Errors
查看 “Oracle on Linux Discussion Forum” (http://www.oracle.com/forums/
forum.jsp?forum=135),可以得到更多错误和问题的解决办法。
在这篇文章介绍了怎样在我的服务器和发行的 AS 上安装 Oracle 数据库。在这里,每一项工作都尽可能
精确的列出了。使用在这里描述的内容是你的职责,你可以在你自己的环境中使用它,但后果自负。
(The information provided in this article shows how I installed Oracle on my Server(s) and is distributed
AS IS. Every effort has been made to provide the information as accurate as possible, but no warranty or
fitness is implied. The use of this information described herein is your responsibility, and to use it in
your own environments do so at your own risk.)
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/72654/viewspace-778743/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/72654/viewspace-778743/