oracle10g lsnrctl,linux下oracle10g lsnrctl没反应 sqlplus正常 bug4518443

现象描述:使用的oracle 版本为linux版10.2.0.1.0,在命令行界面输入lsnrctl status后即没有反应,同时输入lsnrctl stop也没有任何反应。已经连接数据库的应用正常运行,但是新的应用无法连接数据库。在oracle数据库服务器使用sqlplus正常,但是在客户端使用PL/SQL以及navicat均无法连接数据库服务端。

问题诊断:oracle监听宕了

经上网查询资料,发现这是由于oracle 10.2.0.1.0中一个编号为4518443的bug导致的,这个bug会自动创建一个子监听器,当出现这种情况时,监听就会挂起。而且次BUG在任何操作系统中均存在。

解决方式:

1、查看LISTNER进程(两条语句均可以)$ ps aux |grep LISTENER

$ ps aux |grep tnslsnr

正常情况只有一个LISTENER进程,而此BUG则会出现两个LISTENER进程,因此需要关闭一个进程。

2、kill LISTENER进程(两个进程均需要kill)$ kill -9 26184

3、重启LISTENER$ lsnrctl stop

$ lsnrctl start

4、再次查看LISTNER进程

这个时候就会发现只存在一条LISTENER进程$ ps aux |grep LISTENER

oracle    9635 10.8  0.0 204508  9512 ?        Rsl  Sep18 620:18 $ORACLE_HOME/bin/tnslsnr LISTENER -inherit

到这里为止只是保证了LISTENER可以正常使用,如果不再进一步处理,则过一段时间还是会出现相同的问题。因此我们需要彻底的解决此问题

5、彻底解决

5.1:升级解决

将oracle版本升级到oracle 10.2.0.3以后的版本既可以。

Ps:在线升级线上生产数据库是存在极大的风险的,一旦升级失败将导致线上应用全部无法访问,因此在线上使用的生产数据库不建议使用此方法来解决这个问题,除非是升级完毕后才投入到线上使用。

5.2:修改listener.ora文件

在listener.ora文件中加上如下参数,SUBSCRIBE_FOR_NODE_DOWN_EVENT_=OFF ##这里的listener_name是配置的listener的名字,如果是默认的就是LISTENER。具体修改如下$ vi $ORACLE_HOME/network/admin/listener.ora

SUBSCRIBE_FOR_NODE_DOWN_EVENT_LISTENER=OFF

6、然后再重启LISTENER$ lsnrctl stop

$ lncrctl start

如果仅仅是修改这一个BUG,建议大家使用修改listener.ora文件这个方式,同时也提醒大家在ORACLE正式投入线上使用之前先升级ORACLE。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值