Grid 使用者啟動 Listener 時拋出 PRCR-1079: Failed to start resource ora.LISTENER.lsnr,伴隨 CRS-5016、TNS-12541、Linux Error: 111 Connection refused。根因是 oraagent.bin 找不到共享庫 libocr11.so,源於環境變數 LD_LIBRARY_PATH 未設定。
[grid@rolequery ~]$ srvctl start listener
PRCR-1079 : Failed to start resource ora.LISTENER.lsnr
CRS-5016: Process "/home/U01/app/grid/11.2.3/bin/lsnrctl" spawned by agent
"/home/U01/app/grid/11.2.3/bin/oraagent.bin" for action "start" failed...
TNS-12541: TNS:no listener
TNS-12560: TNS:protocol adapter error
Linux Error: 111: Connection refused
檢視 $GRID_HOME/log/<host>/agent/ohasd/oraagent_grid/oraagent_grid.log:
[ora.LISTENER.lsnr] ... Listener failed to start.
[ AGENT] ... UserErrorException: Locale is
clsnUtils::error Exception type=2 string= CRS-5016: ...
oraagent.bin: error while loading shared libraries: libocr11.so: cannot open shared object file
[grid@rolequery ~]$ ls -l /home/U01/app/grid/11.2.3/lib/libocr11.so
-rw-r----- 1 grid oinstall 1590995 Sep 3 2011 /home/U01/app/grid/11.2.3/lib/libocr11.so
[grid@rolequery ~]$ echo $LD_LIBRARY_PATH
# 輸出為空,未設定
~/.bash_profile 或 ~/.asmprofile):
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
source ~/.bash_profile
[grid@rolequery ~]$ srvctl start listener
[grid@rolequery ~]$ srvctl status listener
Listener LISTENER is enabled
Listener LISTENER is running on node(s): rolequery
oraagent.bin 是 Clusterware 代理程式,啟動資源時需載入 $ORACLE_HOME/lib 下的共享庫(libocr11.so、libclntsh.so 等)。LD_LIBRARY_PATH,動態連結器找不到庫,導致 oraagent.bin 執行失敗,進而無法啟動 Listener 等資源。oracleasm 設定腳本、或環境變數被覆寫的場景。$GRID_HOME/crs/install/crsconfig_params 或 ~/.bash_profile 統一設定 LD_LIBRARY_PATH。crsctl setenv res ora.LISTENER.lsnr -env "LD_LIBRARY_PATH=..." 針對資源設定(不推薦,維護成本高)。ldd $ORACLE_HOME/bin/oraagent.bin 確認所有依賴庫均找到(無 not found)。| 操作 | 指令 |
|---|---|
| 檢查 Library 依賴 | ldd $ORACLE_HOME/bin/oraagent.bin |
| 查看 Agent 日誌 | tail -f $GRID_HOME/log/<host>/agent/ohasd/oraagent_grid/oraagent_grid.log |
| 設定資源環境變數 | crsctl setenv res ora.LISTENER.lsnr -env "LD_LIBRARY_PATH=..." |
| 啟動 Listener | srvctl start listener |
| 查看 Listener 狀態 | srvctl status listener |