sqlplus/RMAN/lsnrctl 等工具連線緩慢

還不算暈發表於2015-10-30
AIX上sqlplus /as sysdba    rman target / 或者lsnrctl start時或者通過sqlplus system/oracle@orcl這樣通過監聽連線等方式來登陸時非常慢(LINUX/HP-UX也存在此問題),甚至要5分鐘、10分鐘左右才能進入。
這種問題在排除系統資源如CPU/IO/記憶體、網路等資源緊張外;經常是因為hostname與/etc/resolve.conf  /etc/hosts中不符導致登陸時查詢主機名引起緩慢(LINUX中 /etc/nsswitch.conf定義優化使用DNS/HOSTS檔案);也可能是DNS配置錯誤導致在DNS解析過程中花費太多時間。

常用解決方法就是註釋掉/etc/resolve.conf 中DNS伺服器的地址,或者使用正確的DNS地址/配置,或者不需要使用DNS的話直接刪除或改名/etc/resolve.conf;同時在/etc/hosts中配置正確資訊即可。

對於此類問題,如果有興趣,可以通過作業系統層面的跟蹤來排查此問題,在TRACE檔案中搜尋關鍵字/etc/resolv.conf或者/etc/hosts可以看到在其附近的一些函式呼叫過程。
常用作業系統平臺OS層面跟蹤工具有如LINUX的strace、AIX的truss等,具體使用方法是:

LINUX:
$ strace -fo <output file> <executable>
strace -rf-o /home/oracle//lsnr.log -p 5487


AIX 5L及以上:
$ truss -aefo <output file> <executable>
 truss -aefo /home/oracle/sqlplus_trace1.log  sqlplus / as sysdba
 truss -aefo /home/oracle/rman_trace1.log  rman target /
 
HP-UX:
$ tusc -afpo <output file> <pid> <executable>


Solaris:
$ truss -aefo <output file> <executable>
$ truss -rall -wall -p <PID>
參考MOS文件:
How to Trace Unix System Calls (文件 ID 110888.1)
Listener Startup or Connections Hang in 11g (文件 ID 803838.1)


相關文章