Oracle11g监听器日志 listener.log文件过大处理
oracle 11g的监听日志和警告日志都是在/opt/oracle/app/diag/tnslsnr/机器名/listener目录
其中警告日志在alert目录下,监听日志在trace目录下。listener目录下产生的日志文件比较大,是主要清理的对象。在listener目录下监听日志是一个名为listener.log的文件,而警告日志log.xml,这个日志每到11M左右就会分割成一个log_XXXX.xml的日志,逐渐累加。 是否不需要对监听日志文件进行截断维护呢? 答案是否定的。当然要对监听日志文件(listener.log)进行定期清理,如果不定期清理,会遇到下面一些麻烦: 1、监听日志文件(listener.log)变得越来越大,占用额外的存储空间。(当然现在存储白菜价,不差那几G的空间。但是我们还是要本着工匠情怀,精益求精)。 2、监听日志文件(listener.log)变得太大会带来一些问题:LISTENER.LOG日志大小不能超过2GB,超过会导致LISTENER监听器无法处理新的连接。 3、监听日志文件(listener.log)变得太大,给写入、查看带来的一些性能问题、麻烦。 一、单机实例: LSNRCTL> show The following operations are available after show An asterisk (*) denotes a modifier or extended command: rawmode displaymode rules trc_file trc_directory trc_level log_file log_directory log_status current_listener inbound_connect_timeout startup_waittime snmp_visible save_config_on_stop dynamic_registration enable_global_dynamic_endpoint oracle_home pid LSNRCTL> show log_file Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xxxxxx)(PORT=1521))) LISTENER parameter "log_file" set to /opt/oracle/app/diag/tnslsnr/testdb/listener/alert/log.xml The command completed successfully show log_status Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xxxxxx)(PORT=1521))) LISTENER parameter "log_status" set to ON The command completed successfully show log_directory Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xxxxxx)(PORT=1521))) LISTENER parameter "log_directory" set to /opt/oracle/app/diag/tnslsnr/testdb/listener/alert The command completed successfully 监听目前处于正常状态,日志功能也打开,后来一想,原来是日志文件大小已满 处理: 1:首先 停止日志 LSNRCTL> set log_status off Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xxxxxx)(PORT=1521))) LISTENER parameter "log_status" set to OFF The command completed successfully LSNRCTL> exit 2、到目录/opt/oracle/app/diag/tnslsnr/wskjdb/listener/trace 3、开启日志 LSNRCTL> set log_status on Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xxxxxx)(PORT=1521))) LISTENER parameter "log_status" set to ON The command completed successfully 4、重新加载监听器 LSNRCTL> reload Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xxxxxx)(PORT=1521))) The command completed successfully LSNRCTL> exit LSNRCTL> show log_status Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xxxxxx)(PORT=1521))) LISTENER parameter "log_status" set to ON The command completed successfully 5、目录下重新生成新的日志,压缩保存 6、删除原有的日志: 二、在RAC环境中,需要切换到grid用户来查询监听日志 set current_listener listener_scan1 set log_status off cat /dev/null > listener_scan1.log set log_status on cat listener_scan1.log 三、通过使用crontab来定时清理: $listener_log.sh #!/bin/bash data_name=`date +‘%d%m‘` cd /opt/oracle/app/diag/tnslsnr/wskjdb/listener/trace lsnrctl set log_status off mv listener.log /tmp/listener.log.$data_name lsnrctl set log_status on lsnrctl reload 制定crontab任务: 执行时间和保留策略都是可以自己制定的,通过crontab可以摆脱手工操作,通过系统自动去执行维护操作。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |