listener.log过大导致Oracle数据库连接缓慢报错解决方案(c3p0连接池死锁 APPARENT DEADLOCK,druid没有反应,然后pl/sql登陆很慢)

一、出现的情况描述
1. 控制台打印信息:c3p0连接池死锁 APPARENT DEADLOCK 
2. pl/sql登陆时很慢,登陆上去后正常
3. cmd测试命令:tnsping oracl,很长时间没有反应


二、原因
在ORACLE数据库中,如果不对监听日志文件(listener.log)进行截断,那么监听日志文件(listener.log)会变得越来越大.
项目后期运维过程中,需要对监听日志文件(listener.log)进行定期清理。 
1:监听日志文件(listener.log)变得越来越大,占用额外的存储空间 
2:监听日志文件(listener.log)变得太大会带来一些问题,查找起来也相当麻烦 
3:监听日志文件(listener.log)变得太大,给写入、查看带来的一些性能问题、麻烦
4.   监听日志文件(listener.log)过大导致oracle连接访问延迟假死
5.   然后通过cmd命名测试tnsping oracl,反应很快(小于100毫秒)

三、解决方案
(Windows服务器)
1.关闭数据库实例服务OracleServiceORCL和监听服务OracleOraDb11g_home1TNSListener。
2.找到文件所在路径,一般情况listener.log路径:$ORACLE_HOME\diag\tnslsnr\机器名\listener\trace\listener.log,
事件管理平台的路径为:
复制备份 listener.log ,备份文件重名为日期格式如listener.log.2018.01.31 ,删除原文件,并新建一个listener.log空文件。
3.先启动监听服务OracleOraDb11g_home1TNSListener,再启动数据库实例服务OracleServiceORCL


(Linux服务器)
可以通过 lsnrctl status 也可以查看listener.log位置。
1:首先停止监听服务进程(tnslsnr)记录日志。


oracle@entel2:[/oracle]$lsnrctl  set log_status off


2:将监听日志文件(listener.log)复制一份,以listener.log.yyyymmdd格式命名


oracle@entel2:[/oracle]$cp listener.log listener.log.20180131


3:将监听日志文件(listener.log)清空。清空文件的方法有很多


oracle@entel2:[/oracle]$echo "" > listener.log
或者
oracle@entel2:[/oracle]$cp /dev/null listener.log
或者
oracle@entel2:[/oracle]$echo /dev/null > listener.log
或者
oracle@entel2:[/oracle]$>listener.log


4:开启监听服务进程(tnslsnr)记录日志


oracle@entel2:[/oracle]$lsnrctl set log_status on


当然也可以移走监听日志文件(listener.log),数据库实例会自动创建一个listener.log文件。


oracle@entel2:[/oracle]$ lsnrctl set log_status off


oracle@entel2:[/oracle]$mv listener.log listener.yyyymmdd


oracle@entel2:[/oracle]$lsnrctl set log_status on
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值