Oracle数据库远程连接无响应

阅读更多
   故障现象:
  服务器本机使用sqlplus / as sysdba可以登录,数据库可以正常使用;但使用sqlplus sys/密码@orcl无法登录,长时间无响应,不显示成功,也不显示失败,卡住不动,各种WEB应用、TOAD/sqldeveloper等工具都无法连接。
  使用lsnrctl status查看监听状态,也是长时间不响应。
  使用Windows的服务管理功能,启动、关闭监听,都能顺利完成,很有迷惑性。
  注:Windows平台、Oracle92

   解决过程:
  明显属于监听的问题,在服务管理里重启监听,故障依旧。看一下Oracle的告警日志,没有发现问题,再看一下监听的日志(%ORACLE_HOME%\network\log目录中),Oracle使用多年,发现日志已经超过2G了,应该是日志过大的缘故。关闭监听、数据库服务,删除监听日志,重启服务,问题解决。

  网上查了一下原因,这个问题似乎是Oracle的一个BUG,当服务器设置了IP鉴权,Oracle存在内存泄露的BUG,会引发这个问题。参见:http://www.oracleblog.org/working-case/lsnr-hang-after-set-validnode_checking/

  以上描述确实跟我的情况一致,我在sqlnet.ora中设置了tcp.validnode_checking=yes,并设置了几个允许的IP;查看一下listener.log内容,日志是积累了较多的TNS-00516拒绝许可后,密集出现海量的TNS-01168错误(无法分配内存),导致日志迅速超过2G,两个角度验证。可以确认问题的原因就是BUG导致。

  似乎用这样一个方法可以关闭监听日志,本人没有验证。
  启动lsnrctl,进行交互模式,输入以下命令:
  LSNRCTL>set log_status OFF
  LSNRCTL>save_config

你可能感兴趣的:(oracle)