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)