现象:Windows 操作系统的Oracle 数据库,使用sqlplus 连接(不指定实例名)连接很快,程序连接或使用连接工具或在Net Manager 中测试连接都需要花费约三四十秒的时间(程序连接可能失败)。
通过tsping localhost 测试,亦花费三四十秒。
查看监听警告日志(所在位置在文章后面介绍),有信息如下:
<msg time=\'2017-05-16T16:57:51.811+08:00\' org_id=\'oracle\' comp_id=\'tnslsnr\' type=\'UNKNOWN\' level=\'16\' host_id=\'WIN-79C9VV1DM36\' host_addr=\'fe80::716b:a2ff:1445:5753%11\'> <txt>TNS-12560: TNS:protocol adapter error TNS-00530: Protocol adapter error 64-bit Windows Error: 53: Unknown error TNS-12518: TNS:listener could not hand off client connection TNS-12571: TNS:packet writer failure TNS-12560: TNS:protocol adapter error TNS-00530: Protocol adapter error 64-bit Windows Error: 54: Unknown error </txt> </msg>
可能原因是监听日志过大(超过4G)。
停止监听,删除监听日志(需要删除4个目录的日志),开启监听,连接很慢问题解决。
Oracle 11g 监听日志目录位置如下:
alert 日志目录:%ORACLE_HOME%\diag\rdbms\%sid%\%sid%\alert,%ORACLE_HOME%\diag\tnslsnr\%机器名%\listenrt\alert
trace 日志目录:%ORACLE_HOME%\diag\rdbms\%sid%\%sid%\trace,%ORACLE_HOME%\diag\tnslsnr\%机器名%\listenrt\trace