我們今天是要和大家一起討論的是DB2建立nickname,導致CRASH的解決方案,在對II4O進行使用時,對Wrapper, user mapping的創建可以說都是沒問題的,但是,當創建nickname時,DB2 crash。
DB2 II V8.2 for Oracle 創建nickname時導致DB2 CRASH的解決方法(Linux)
(注:DB2 II 已經改名為Websphere II)
在使用 II4O時,創建Wrapper, user mapping都沒問題,但是,當創建nickname時,DB2 crash。
在db2diag.log 中,有如下信息:
- 2005-03-13-14.22.36.412133+480 E7747G606 LEVEL: Severe
- PID : 19883 TID : 3007177376 PROC : db2agent
- (SAMPLE)
- INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
- APPHDL : 0-14 APPID: GAC80471.NE04.00F483062900
- FUNCTION: DB2 UDB, oper system services, sqloEDUCodeTrapHandler,
- probe:10
- MESSAGE : ADM0503C An unexpected internal processing error has occurred. ALL
- DB2 PROCESSES ASSOCIATED WITH THIS INSTANCE HAVE BEEN SHUTDOWN.
- Diagnostic information has been recorded. Contact IBM Support for
- further assistance.
- .
- .
- .
- 2005-03-13-14.22.36.421935+480 I16005G624 LEVEL: Severe
- PID : 19883 TID : 3007177376 PROC : db2agent
- (SAMPLE)
- INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
- APPHDL : 0-14 APPID: GAC80471.NE04.00F483062900
- MESSAGE : RDS UCINTFC: pStatementText =
- DATA #1 : Hexdump, 59 bytes
- 0xB33849E0 : 4352 4541 5445 204E 4943 4B4E 414D 4520 CREATE NICKNAME
- 0xB33849F0 : 4442 3249 4E53 5431 2E4F 5241 4C4F 4341 DB2INST1.ORALOCA
- 0xB3384A00 : 4C20 464F 5220 5453 4831 2E44 4232 494E L FOR TSH1.DB2IN
- 0xB3384A10 : 5354 312E 224C 4F43 414C 22 ST1."LOCAL"
- .
- .
- .
- 2005-03-13-14.22.36.476913+480 I39423G431 LEVEL: Severe
- PID : 19824 TID : 3007177376 PROC : db2tcpcm
- INSTANCE: db2inst1 NODE : 000
- FUNCTION: DB2 UDB, oper system services, sqloEDUSIGCHLDHandler, probe:50
- DATA #1 : String, 158 bytes
- Detected the death of an EDU with process id 19883
- The signal number that terminated this process was 11
- Look for trap files (t19883.*) in the dump directory
檢查trap文件, t19883.000, 在 call stack,會發現:
- -FRAME-- --CODE-- --LOCATION--
- BFFE8E70 83C4286A 0x0083 + A_SHAFinalCommon
- (/opt/IBM/db2/V8.1/lib/libdb2e.so.1)
- BFFE8F00 8B55E48D 0x00ae + A_X931RandomUpdate
- (/home/oracle/OraHome1/lib/libclntsh.so.9.0)
- BFFE8F60 83C40CEB 0x00d0 + ztcrseed3
- (/home/oracle/OraHome1/lib/libclntsh.so.9.0)
DB2建立nickname導致CRASH解決方法,這是DB2 II V8.2 和 Oracle 9i/10g 的一個兼容性問題.
如果是ORACLE 9i Workaround:
- 1) Back up your $ORACLE_HOME/lib/libclntsh.so and
- $ORACLE_HOME/bin/genclntsh
- 2) Add '-Wl,-Bsymbolic' to the link line of $ORACLE_HOME/bin/genclntsh:
- LD="gcc -shared -Wl,-relax -L${ORACLE_HOME}/lib -Wl,-Bsymbolic"
- # shared library link command
- 3) Run genclntsh to create libclntsh.so
- 4) Execute djxlinkOracle
- 5) Stop and Start the instance
如果是ORACLE 10g Workaround:
- 1) back up $ORACLE_HOME/bin/genclntsh,
- $ORACLE_HOME/lib/libclntsh.so.10.1, $ORACLE_HOME/lib32/libclntsh.so.10.1
- 2) cd $ORACLE_HOME/lib; mv libnnz10.so libnnz10.so.orig
- (so libnnz10.so not exist in lib)
- 3) cd $ORACLE_HOME/bin; modify the script genclntsh:
- a). Add "-Wl, -Bsymbolic" to linker line, .... make sure there is no
- spaces between the comma and -B.
- ex. LD="gcc -shared -Wl,-relax -L${ORACLE_HOME}/lib -Wl,
- -Bsymbolic" # shared library link command
- b) Change libnnz10.so ==> libnnz10.a in following line
- * -r ${OLIB}/libnnz10.so * && LNZ="-lnnz10
以上的相關內容就是對DB2建立nickname導致CRASH解決方法的介紹,望你能有所收獲。