【問題處理】處理alert警告日誌中出現無法找到libocr*.so檔案問題

secooler發表於2011-05-21
  在Linux環境下遇到“Cannot determine all dependent dynamic libraries for /proc/self/exe”這個Bug,有關此Bug的更多描述資訊請參考MOS的“Bug 4918834”。
  緊隨其後的提示資訊是,無法找到libocr10.so、libocrb10.so和libocrutl10.so檔案。記錄一下這個問題的處理方法。

1.alert中記錄的問題現象
[oracle@secdb1 bdump]$ vi alert_secdb.log
……省略其他日誌輸出內容……
Starting ORACLE instance (normal)
Cannot determine all dependent dynamic libraries for /proc/self/exe
Unable to find dynamic library libocr10.so in search paths
RPATH = /ade/aime1_build2101/oracle/has/lib/:/ade/aime1_build2101/oracle/lib/:/ade/aime1_build2101/oracle/has/lib/:
LD_LIBRARY_PATH is not set!
The default library directories are /lib and /usr/lib
Unable to find dynamic library libocrb10.so in search paths
Unable to find dynamic library libocrutl10.so in search paths
Unable to find dynamic library libocrutl10.so in search paths
……省略其他日誌輸出內容……

2.影響範圍
在Linux平臺上關於上面的錯誤對資料庫的使用沒有嚴重影響,可以暫時忽略這個報錯。

3.問題原因
這個提示資訊是Oracle在Linux平臺上的一個Bug,關於個Bug可以在MOS的“Bug 4918834”文章中得到詳細資訊。

4.處理方法
1)第一種處理方法:忽略這個報錯
因為這個提示資訊對資料庫系統的使用沒有太大的影響,因此最簡單的處理方法便是“置之不理”。

2)第二種處理方法:透過設定LD_LIBRARY_PATH環境變數解決
(1)為了保證alert檔案中記錄資訊的完美性,我們可以在Linux作業系統中,透過設定環境變數LD_LIBRARY_PATH指向“$ORACLE_HOME/lib”的方法來處理。
$ export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
可以將上面的資訊放在“.bash_profile”檔案中使之一直生效。

(2)重新啟動資料庫
sys@secdb> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
sys@secdb> startup;
ORACLE instance started.

Total System Global Area  314572800 bytes
Fixed Size                  1219184 bytes
Variable Size              92276112 bytes
Database Buffers          218103808 bytes
Redo Buffers                2973696 bytes
Database mounted.
Database opened.

(3)觀察alert日誌
相關報錯資訊已經不存在,一份暫時完美的alert輸出資訊展現在我們面前。

3)第三種處理方法:複製相關檔案到/usr/lib目錄下
既然提示找不到libocr10.so、libocrb10.so和libocrutl10.so這三個檔案(這些檔案存放在$ORACLE_HOME/lib目錄下),我們也可以透過將這三個檔案手工複製到/usr/bin目錄並調整許可權的方法來解決這個問題。
secdb@secdb1 /home/oracle$ su - root
Password:
[root@secdb1 ~]# cp /u01/app/oracle/product/10.2.0/db_1/lib/libocr* /usr/lib
[root@secdb1 ~]# chown -R oracle:oinstall /usr/lib/libocr*
[root@secdb1 ~]# chmod -R 755 /usr/lib/libocr*

透過重啟資料庫的方法驗證調整效果:成功,不再存在相關報錯。

5.小結
  建議使用Linux作為Oracle資料庫的作業系統的朋友們檢查一下alert警告日誌中是否存在“Cannot determine all dependent dynamic libraries for /proc/self/exe”關鍵字。可以依照本文提供給大家的方法進行處理。不放過alert中任何蛛絲馬跡。

Good luck.

secooler
11.05.21

-- The End --

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

相關文章