软件包工头之临时DBA系列Oracle连接非常慢APPARENT DEADLOCK

Posted 明明如月

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件包工头之临时DBA系列Oracle连接非常慢APPARENT DEADLOCK相关的知识,希望对你有一定的参考价值。

我是一名软件包工头,哪里有问题就干哪里。


 

这次是 Oracle 出毛病了,我就临时兼了DBA的职,没办法,谁叫我是工头呢。打开百度就开干。

 

这次关键词是:APPARENT DEADLOCK!!!

丫的看这三个感叹号,Tomcat真矫情。一个Oracle跑了5年了,毛病多我可以理解,关键是原因太奇葩,我不能接受。

 

百度之后,发现是 Oracle 的  listener.log 过大引起的(见此文)。

listener.log 的路径:$ORACLE_HOME\\diag\\tnslsnr\\机器名\\listener\\trace 。

我真是日了狗了,这Orale自己不会清理么,还要人工清理。

而解决办法更是简单粗暴,直接删掉就行了!!!

 

而删掉文件也还是需要注意关闭 日志读写服务的,不然不会起作用。操作见此文

 

下面是 Linunx Shell 脚本

关闭日志
lsnrctl  set log_status off;

删除日志,或者清空日志

打开日志
lsnrctl  set log_status on;

 

 

想一想,这个文件一大,又要删除是不是,此文在Linux环境下弄了个脚本。各位Linux玩家可以用,我等low Windows只能自己造轮子或者用"任务计划"+BAT批处理命令了。

 

下面是我写的 win版,已经加入到我的 Windows Server 2008 R2/Oracle 11g 豪华午餐【任务计划】里了。

###################################
## 这是注释
## 请勿删除本文件
## 用于每周定时删除Oralce的监听日志 文件
## 皮包公司  包工头  写于一个阴沉的秋日午后
###################################

lsnrctl set log_status off
cd.>D:\\app\\Administrator\\diag\\tnslsnr\\[此处为你的主机名]\\listener\\trace\\listener.log
lsnrctl set log_status on

请勿直接拷贝,需要改动为你的 Oralcle listener.log 路径。 其中  cd.>C:\\666.log 意思是清空该文件。

 

保存为 bat 文件,然后添加至系统自带的 ”任务计划/定时计划“ 就大功告成了。

 

以上是关于软件包工头之临时DBA系列Oracle连接非常慢APPARENT DEADLOCK的主要内容,如果未能解决你的问题,请参考以下文章

ORACLE数据库连接非常慢 tnsping 后获得的结果 测试了几次 平均延迟在15-20秒之间。 监听日志已经清理过了

DBA最好的“枕边故事”丨真实世界Oracle故障诊断之一千零一夜

Oracle DBA面试突击题

DBA系列004 网站延迟请求响应慢,是谁的锅?

Oracle数据库监听非常慢,基本hang住故障处理

在循环中连接数据帧非常慢