0509-130 Symbol resolution failed for /usr/lib/libc.a[aio_64.o]

hurp_oracle發表於2016-06-14

客戶說執行sqlplus時報錯,詳細見下:

$ sqlplus 'sys/ligle as sysdba'

SQL*Plus: Release 10.2.0.4.0 - Production on Wed Jun 22 08:56:29 2011

Copyright (c) 1982, 2007, Oracle. All Rights Reserved.

exec(): 0509-036 Cannot load program oraclebcrm because of the following errors:
0509-130 Symbol resolution failed for /usr/lib/libc.a[aio_64.o] because:
0509-136 Symbol kaio_rdwr64 (number 1) is not exported from
dependent module /unix.
0509-136 Symbol listio64 (number 2) is not exported from
dependent module /unix.
0509-136 Symbol acancel64 (number 3) is not exported from
dependent module /unix.
0509-136 Symbol iosuspend64 (number 4) is not exported from
dependent module /unix.
0509-136 Symbol aio_nwait (number 5) is not exported from
dependent module /unix.
0509-136 Symbol aio_nwait64 (number 6) is not exported from
dependent module /unix.
0509-136 Symbol aio_nwait_timeout (number 7) is not exported from
dependent module /unix.
0509-136 Symbol aio_nwait_timeout64 (number 8) is not exported from
dependent module /unix.
0509-026 System error: Error 0
0509-192 Examine .loader section symbols with the
'dump -Tv' command.
ERROR:
ORA-12547: TNS:lost contact

看資訊知道是可能跟aio有關係,查詢aio是否開啟?

root@hiuset_bas1:/>lsattr -El aio0

autoconfig defined STATE to be configured at system restart True
fastpath enable State of fast path True
kprocprio 39 Server PRIORITY True
maxreqs 4096 Maximum number of REQUESTS True
maxservers 80 MAXIMUM number of servers per cpu True
minservers 1 MINIMUM number of servers True

開啟aio

root@hiuset_bas1:/>chdev -P -l aio0 -a autoconfig='available'
aio0 changed
root@hiuset_bas1:/>lsattr -El aio0
autoconfig available STATE to be configured at system restart True
fastpath enable State of fast path True
kprocprio 39 Server PRIORITY True
maxreqs 4096 Maximum number of REQUESTS True
maxservers 80 MAXIMUM number of servers per cpu True
minservers 1 MINIMUM number of servers True

在執行sqlplus登陸db,沒有問題了~

注:如果上面這些執行後仍然存在問題,需要relink all一下軟體

介紹一下relink方法的使用。
  
1.以oracle使用者登入作業系統
[root@secdb ~]# su - oracle
/home/oracle$

2.確定$ORACLE_HOME環境變數設定正確
/home/oracle$ echo $ORACLE_HOME
/oracle/ora11gR2/product/11.2.0/dbhome_1

3.確定作業系統的環境變數設定正確
主要涉及一下幾個引數:LIBPATH、LD_LIBRARY_PATH和SHLIB_PATH
以我的環境中LD_LIBRARY_PATH環境變數設定為例:
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/usr/X11R6/lib64/

這裡需要注意的是:“$ORACLE_HOME/lib”內容要放在最前面,使其能夠最先被檢索到。

4.使用env命令驗證作業系統環境變數是否設定正確

5.確定umask為022
/home/oracle$ umask
0022

如果返回的不是022可以使用下面的方法來調整。
/home/oracle$ umask 022
/home/oracle$ umask
0022

6.執行relink命令
1)停止監聽和資料庫例項
/home/oracle$ lsnrctl stop

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 28-DEC-2010 20:30:09

Copyright (c) 1991, 2009, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
The command completed successfully

停止資料庫例項。
> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

2)執行relink命令
本文以11gR2版本為例進行演示。
在11g這個版本中在relink過程中將不在螢幕上不斷的輸出relink的結果,取而代之的是將所有的輸出內容都自動重定向到了relink.log日誌中。如果是自其它版本中完成relink,建議將這些輸出的資訊都手工的重定向到一個檔案中,方便對繁雜的內容進行檢查。
/home/oracle$ relink all
writing relink log to: /oracle/ora11gR2/product/11.2.0/dbhome_1/install/relink.log

對relink都做了些什麼的朋友可以仔細看一下這個輸出日誌內的資訊。

7.小結
可以說使用relink的場景不是很多。除了遇到本文開始處提到的場景時需要使用relink外,如果遇到個別或大量可執行程式無法正常使用時也可以考慮使用relink重新初始化Oracle軟體。

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29446986/viewspace-2119909/,如需轉載,請註明出處,否則將追究法律責任。

相關文章