资讯详情

资讯详情

Oracle监听(LISENER LOG)日志清理

目录一、Oracle监听日志1.1.日志产生原因1.2.为什么需要清理二、清理核心原则三、手动清理整体流程实验环境-11.2.0.4.03.1.查看集群状态3.2.查看监听状态3.3.确认监听状态正常之后暂停监听记录3.4.清理备份日志文件含备份3.5.打开记录日志恢复日志写入四、自动轮转方案推荐长期使用五、关键注意事项一、Oracle监听日志1.1.日志产生原因日常生产中数据库连接会话一般都是通过监听登陆数据库pmon进程会将动态注册的信息写到监听日志文件中去这时就会向监听日志文件写日志。1.2.为什么需要清理当数据库运行长时间之后日志文件就会一直变大这时就需要定时清理如果不清理当日志大小达到 4G 左右的时候不会向监听日志文件写新的内容这时可能会导致数据库宕机无法使用故需要定期进行清理。二、清理核心原则清理 Oracle 监听日志的核心原则是不能在监听器运行时直接删除或重命名文件否则可能导致日志写入异常或空间无法释放。推荐通过“停止写入→备份/清空→恢复写入”的流程操作或配置自动轮转。三、手动清理整体流程实验环境-11.2.0.4.03.1.查看集群状态3.2.查看监听状态一般执行lsnrctl status会直接显示监听器的状态和日志配置路径如下图注意监听日志的清理不是直接给监听器直接做删除操作3.3.确认监听状态正常之后暂停监听记录进入监听器命令控制台执行以下命令暂停监听配置关闭记日志show statusset log_status off;注意此操作仅暂停日志记录不影响数据库正常连接和运行 。3.4.清理备份日志文件含备份可以根据上边的log日志路径找到目标文件也可以执行find $ORACLE_HOME -name listener找目标文件。示例# 1. 移走并备份此时建议立刻重启监听器mv listener.log listener_20231026.log.bak# 2压缩旧日志只保留源文件tar会自动加.gz后缀tar -czvf listener_20231026.log.tar.gz listener_20231026.log.bak也可以cp listener.log listener.log.bak listener.log注意使用 重定向清空而不是 rm 删除。监听器运行时持有文件句柄直接删除后磁盘空间不会立即释放。3.5.打开记录日志恢复日志写入-- 打开记录日志监听器会自动继续向清空后的文件写入日志 。LSNRCTL set log_status on-- 重新加载监听LSNRCTL reload四、自动轮转方案推荐长期使用使用 logrorate 实现按大小或按天自动切割、压缩和清理。在 /etc/logrotate.d/ 下创建配置文件/u01/app/oracle/diag/tnslsnr/主机名/listener/trace/listener.log { daily size 100M rotate 7 compress missingok notifempty copytruncate }关键选项 copytruncate先复制日志内容再清空原文件避免监听器因文件被移走而丢失写入句柄 。测试配置后强制执行一次验证效果logrotate -d /etc/logrotate.d/oracle-listener logrotate -f /etc/logrotate.d/oracle-listener五、关键注意事项不要直接rm监听日志监听器运行时持有文件句柄直接删除后磁盘空间不会释放且日志写入可能异常 。清理前先备份保留一份归档日志便于后续排查历史连接问题。在业务低峰期操作虽然 set log_status off 不影响连接但操作期间仍建议避开高峰 。检查日志异常增长根源如果日志短期内急剧膨胀应排查是否有大量连接失败或异常请求日志本身不是问题根源。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →