一、出现的情况描述 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
原文链接:https://www.f2er.com/oracle/206499.html