Oracle 10g Lsnrctl没有反映 无法连接数据库
2015-02-10 20:02
363 查看
现象描述:使用的 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进程
$ ps aux |grep LISTENER
oracle 9635 10.8 0.0 204508 9512 ? Rsl Sep18 620:18 $ORACLE_HOME/bin/tnslsnr LISTENER -inherit
这个时候就会发现只存在一条LISTENER进程
到这里为止只是保证了LISTENER可以正常使用,如果不再进一步处理,则过一段时间还是会出现相同的问题。因此我们需要彻底的解决此问题
5、彻底解决
5.1:升级解决
将oracle版本升级到oracle 10.2.0.3以后的版本既可以。
Ps:在线升级线上生产数据库是存在极大的风险的,一旦升级失败将导致线上应用全部无法访问,因此在线上使用的生产数据库不建议使用此方法来解决这个问题,除非是升级完毕后才投入到线上使用。
5.2:修改listener.ora文件
在listener.ora文件中加上如下参数,SUBSCRIBE_FOR_NODE_DOWN_EVENT_<listener_name>=OFF ##这里的listener_name是配置的listener的名字,如果是默认的就是LISTENER。具体修改如下
$ vi $ORACLE_HOME/network/admin/listener.ora
SUBSCRIBE_FOR_NODE_DOWN_EVENT_LISTENER=OFF
#可以添加在最后一行
然后再重启LISTENER
$ lsnrctl stop
$ lsnrctl start
注:如果仅仅是修改这一个BUG,建议大家使用修改listener.ora文件这个方式,同时也提醒大家在ORACLE正式投入线上使用之前先升级ORACLE。
问题诊断: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进程
$ ps aux |grep LISTENER
oracle 9635 10.8 0.0 204508 9512 ? Rsl Sep18 620:18 $ORACLE_HOME/bin/tnslsnr LISTENER -inherit
这个时候就会发现只存在一条LISTENER进程
到这里为止只是保证了LISTENER可以正常使用,如果不再进一步处理,则过一段时间还是会出现相同的问题。因此我们需要彻底的解决此问题
5、彻底解决
5.1:升级解决
将oracle版本升级到oracle 10.2.0.3以后的版本既可以。
Ps:在线升级线上生产数据库是存在极大的风险的,一旦升级失败将导致线上应用全部无法访问,因此在线上使用的生产数据库不建议使用此方法来解决这个问题,除非是升级完毕后才投入到线上使用。
5.2:修改listener.ora文件
在listener.ora文件中加上如下参数,SUBSCRIBE_FOR_NODE_DOWN_EVENT_<listener_name>=OFF ##这里的listener_name是配置的listener的名字,如果是默认的就是LISTENER。具体修改如下
$ vi $ORACLE_HOME/network/admin/listener.ora
SUBSCRIBE_FOR_NODE_DOWN_EVENT_LISTENER=OFF
#可以添加在最后一行
然后再重启LISTENER
$ lsnrctl stop
$ lsnrctl start
注:如果仅仅是修改这一个BUG,建议大家使用修改listener.ora文件这个方式,同时也提醒大家在ORACLE正式投入线上使用之前先升级ORACLE。
相关文章推荐
- Oracle 10g数据库启动ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务;ora-01034:oracle not available
- 无法远程连接WindowsXp中的Oracle 10g数据库
- 刚装好oracle 10g 时,把数据库的监听端口是1522.后来把端口改成了1521了,登上em发现Enterprise Manager 无法连接到数据库实例 ,连接字符串的端口仍是1522,如何解
- 新安装的oracle 10g数据库,在机器重启后报“ORA-12505:TNS:监听程序当前无法识别连接描述符中所给出的SID”错误解决办法
- Oracle Enterprise Manager Console 无法连接数据库,提示信息:oracle.net.config.servicealiasexception: 10
- 解决使用ASP无法连接 ORACLE 9i 数据库的问题。
- Oracle9i2 Enterprise Manager Console 无法连接数据库,提示信息:oracle.net.config.servicealiasexception: 10
- Oracle 10g 异常:ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务 解决方案
- 解决使用ASP无法连接 ORACLE 9i 数据库的问题。
- 一次web 服务器无法连接上oracle 数据库的故障处理
- PowerDesigner建立与数据库的连接,以便生成数据库和从数据库生成到PD中。[Oracle 10G版]
- .net程序无法连接oracle9.2.0.1数据库解决方法
- 解决ASP.NET连接Oraclei数据库出现"无法加载DLL(oci.dll)"异常
- PowerDesigner建立与数据库的连接,以便生成数据库和从数据库生成到PD中。[Oracle 10G版]
- ORACLE 11G 无法连接到数据库实例故障排除
- 无法连接到数据库实例: ORA-01035: ORACLE only available to users with RESTRICTED SESSION privilege (D...
- Oracle 10g 异常:ORA-12518: TNS: 监听程序无法分发客户机连接 解决方案
- Oracle 10g 异常:ORA-12518: TNS: 监听程序无法分发客户机连接 解决方案
- oracle 9.2.0.1升级补丁,安装完patch set后,oracle服务启动不了,提示“1053:服务没有及时响应启动或控制请求”,sqlplus连接提示“无法定位动态连接库orageneric9.dll”
- DBProvider 连接 Oracle 10g 数据库的问题