折雨的天空

新浪微薄腾讯微薄

最新碎语:最近霉到了住。哎。。。

您的位置:折雨的天空 >其他技术> 记录一次oracle无缘无故就无监听,报TNS-12541等错误的问题

记录一次oracle无缘无故就无监听,报TNS-12541等错误的问题

没人动服务器,无缘无故数据库连接挂了,直接报:TNS-12541: TNS: 无监听程序 TNS-12560: TNS: 协议适配器错误 TNS-00511: 无监听程序


以前遇到过两次,当时无力解决,最后通过导出数据,重装数据库,再导入数据的方式处理。

耗费时间长,出现无监听程序时,sys能够登录,能够导出数据,不存在数据丢失问题。但是耗费时间太长,

这次出现问题由于涉及数据量太大,导入需要太长时间,因此尝试解决:


找了很久看到一篇文章,很有用,原文:


https://www.cnblogs.com/david-zhang-index/p/4916770.html


核心摘录:


但这并不是问题发生原因,在继续排查过程中偶然发现监听日志大小居然为4G。然后把这现象告诉了Luocs。
过了一会儿,Luocs回应是Oracle一个BUG,BUG号为9879101 : THE CONNECT THROUGH LISTENER WAS SLOW WHEN LISTNER LOG GROWED 4GB。
 

Luocs还提供了MOS上一篇文章,ID 1319797.1 :  WINDOWS: Listener Hangs & Lsnrctl Commands Are Slow or Hang,里面给出了解决方法:

You can solve this problem by deleting the large listener in $ORACLE_BASE\diag\tnslsnr\<hostname>\listener\trace\<listener_name>.log
1)  Stop the listener process using the command line or Control Panel Service.

2) Delete the log file(s) that are at or approaching the 4G size limit at this location:
$ORACLE_BASE\diag\tnslsnr\<hostname>\listener\trace\<listener_name>.log
3)  Issue any lsnrctl command and you will see a new listener.log in its place under:
$ORACLE_BASE\diag\tnslsnr\<hostname>\listener\trace\


Since ADR Diagnostics are enabled for this listener these steps cannot be done dynamically using the lsnrctl utility. 
e.g.
LSNRCTL>set log_file mylog
Will yield:  TNS-01251: Cannot set trace/log directory under ADR.

However, it is possible to disable the flat file listener logging using the following commands:

LSNRCTL>set current_listener <listener_name>
LSNRCTL>set log_status OFF
LSNRCTL>save_config
 

我就按照以上说明如下进行:
1)LSNRCTL进入交互模式
2)执行set current_listener LISTENER
3)set log_status off
4)stop 停止监听器
5)手工删除ADR指定的监听日志路径下的listener.log文件
6)start重启监听器
7)status查看状态



按照这个文章,处理后,报错内容不一样了,报错:

ORA-12514:监听程序当前无法识别连接描述符中请求的服务


按照文章,改了配置,原文:http://blog.csdn.net/fei1502816/article/details/23170421


然后报新错误:

ORA-12518: TNS: 监听程序无法分发客户机连接 


参考文章:


http://blog.csdn.net/zhouxinhong/article/details/7396910



最后,发现是有个主服务没启动,我也不知道上面这两步,有没有作用,反正我重新启动主进程和监听了,数据库可以正常访问了,至此,事情处理完毕,作为一个程序猿,数据库太博大精深了,建个索引还行,遇到这些问题,处理起来太恼火了。

------------正 文 已 结 束, 感 谢 您 的 阅 读 (折雨的天空)--------------------

转载请注明本文标题和链接:《记录一次oracle无缘无故就无监听,报TNS-12541等错误的问题

奖励一下

取消

分享不易,烦请有多多打赏,如您也困难,点击右边关闭即可!

扫码支持
扫码打赏,5元,10元,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

-秒后自动关闭,如已打赏,或者不愿打赏,请点击右上角关闭图标。

发表评论

路人甲 表情
看不清楚?点图切换