) 过程中出现该错误。有人发邮件说下面的解决办法也可工
作在 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.)
􀁺 $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
􀁺 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 的机器上调整该问题,为