AIX 上 ora-600 [unable to load XDB library] 解决方法一则
Ken 在 QQ 上说,碰到 drop user 时返回 “ORA-03113 通信通道的文件结束”的错误。ORA-03113 被戏称为经典错误,引起该错误的原因很多,没有一个固定的解决办法,Fenng 做过一个总结:Ora-03113 错误分析
由于不在现场,我只是让他把 alert 文件传过来看了下,里面有如下一些类似的错误:
Errors in file /home/oracle/app/oracle/admin/txcz/udump/txcz_ora_340454.trc:
ORA-07445: exception encountered: core dump [] [] [] [] [] []
ORA-00600: internal error code, arguments: [unable to load XDB library], [], [], [], [], [], [], []
再看看 txcz_ora_340454.trc 中,开头包含这样的错误:
/home/oracle/app/oracle/admin/txcz/udump/txcz_ora_340454.trc
Oracle9i Enterprise Edition Release 9.2.0.7.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.7.0 - Production
ORACLE_HOME = /home/oracle/app/oracle/product/920
System name: AIX
Node name: p570a_lp1
Release: 3
Version: 5
Machine: 00C7E23A4C00
Instance name: txcz
Redo thread mounted by this instance: 1
Oracle process number: 14
Unix process pid: 340454, image: oracle@p570a_lp1 (TNS V1-V3)
*** 2006-08-02 17:52:43.961
*** SESSION ID:(37.58704) 2006-08-02 17:52:43.957
Dynamic link error: 0509-022 Cannot load module /home/oracle/app/oracle/product/920/lib32/libxdb.so.
0509-103 The module has an invalid magic number.
*** 2006-08-02 17:52:43.961
ksedmp: internal or fatal error
ORA-00600: internal error code, arguments: [unable to load XDB library], [], [], [], [], [], [], []
Google 了下 ORA-600 [unable to load XDB library],大部分结果是要正确设置 LD_LIBRARY_PATH 和 LIBPATH 环境变量,metalink 文档号 351650.1 中提到(225897.1 中也有环境变量的设置方法):
Cause
These errors may be the result if the database was started and the environment variable LD_LIBRARY_PATH was not set, or was set to an incorrect version of $ORACLE_HOME/lib (e.g. to a different $ORACLE_HOME). If during the user level or full database export we are unable to locate the correct version of the libxdb.so / libxdb.sl library, the internal errors may occur.
Solution
1. Stop the database and stop the listener.
2. Set LD_LIBRARY_PATH so the first directory referenced is $ORACLE_HOME/lib
Example (replace $ORACLE_HOME with the full path of the Oracle home directory):
csh:$ setenv LD_LIBRARY_PATH=$ORACLE_HOME/lib$ setenv LIBPATH=$ORACLE_HOME/lib
ksh:$ export LD_LIBRARY_PATH=$ORACLE_HOME/lib$ export LIBPATH=$ORACLE_HOME/lib
For Oracle9i and Oracle10g on AIX: set environment variable LIBPATH and afterwards, run /usr/sbin/slibclean as root
For Oracle9i and Oracle10g on HP-UX, Linux, Solaris, and Tru64: set environment variable LD_LIBRARY_PATH
3. Re-start the database and the listener.
0509-103 The module has an invalid magic number.
只是这个 0509-13 错误是什么意思呢?继续 google,在 itpub 上找到下文:
http://www.itpub.net/546629,2.html
其中提到 32 位和 64 位数据库上环境变量应指向不同的 lib 文件夹(全文在 metalink 上,文档号:109621.1):
-----------------------------------------------
A 64 bit install of Oracle includes both 32 bit executables (such as svrmgrl
and sqlplus) and 64 bit executables (such as oracle).
The installation contains two 'lib' areas:
Prior to 9i:
$ORACLE_HOME/lib - 32 bit libs
$ORACLE_HOME/lib64 - 64 bit libs
9i onwards:
$ORACLE_HOME/lib32 - 32 bit libs
$ORACLE_HOME/lib - 64 bit libs
Both of these directories contain libraries of the same name. To ensure
that 32 bit executables search the 32 bit dir, and 64 bit executables
search the 64 bit dir, set the following:
Prior to 9i:
$LD_LIBRARY_PATH - includes $ORACLE_HOME/lib64, but not $ORACLE_HOME/lib
$SHLIB_PATH - includes $ORACLE_HOME/lib, but not $ORACLE_HOME/lib64
9i onwards:
$LD_LIBRARY_PATH - includes $ORACLE_HOME/lib, but not $ORACLE_HOME/lib32
$SHLIB_PATH - includes $ORACLE_HOME/lib32, but not $ORACLE_HOME/lib
再看了下 trc 文件中提到的版本信息:
Posted by Sky at 09:32 PM | Permalink | comments(0) | Edit | Database