现象: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