Oracle-清理监听日志文件 listener.log

Posted 小宝大人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle-清理监听日志文件 listener.log相关的知识,希望对你有一定的参考价值。

监听日志文件listener.log在哪?

单机(集群)都看这里,只不过,集群是在grid用户下,而单机则是在oracle用户下。那么,怎么快速的找到它呢?

##就是这样。这里说的是 log.xml 监听日志文件
cd $ORACLE_BASE/diag/tnslsnr/$HOSTNAME/listener/alert

下图中,显示的是监听日志文件​log.xml​的目录位置。

Oracle-清理监听日志文件

监听日志文件listener.log在这里!

Oracle-清理监听日志文件

如何查看监听日志文件的大小呢?

一般我们是进入监听日志文件所在目录,使用du -sh或者du -sh *或者du -sh listener.log查看其大小。但是,假如有数十上百个库,你也要一个一个进入目录,去查看吗?快捷命令来了。这样一定速度提高了效率。

cd $ORACLE_BASE/diag/tnslsnr/$HOSTNAME/listener && du -sh *

有图有真相!我们只需要关注这两个文件夹的大小,即可决定是否需要清理。

Oracle-清理监听日志文件

如何清理呢?

首先,不需要停止监听服务。

其次,备份监听服务,以免带来不必要的麻烦,你懂的。

一般,我们这样操作。

echo /dev/null listener.log

或者

> listener.log

或者

cat /dev/null > listener.log

监听日志文件log.xml如何清理呢?

##找到过去30日以前的文件,并删除它
[root@b19c01 ~]# su - grid
Last login: Wed Sep 14 23:23:47 CST 2022 on pts/3
[grid@b19c01:/home/grid]$ find $ORACLE_BASE/diag/tnslsnr/$HOSTNAME/listener/alert -mtime +30 -name "log_*.xml" | xargs rm -rf
[grid@b19c01:/home/grid]$ cd $ORACLE_BASE/diag/tnslsnr/$HOSTNAME/listener/alert
[grid@b19c01:/u01/app/grid/diag/tnslsnr/b19c01/listener/alert]$ ls
log.xml
[grid@b19c01:/u01/app/grid/diag/tnslsnr/b19c01/listener/alert]$

find ​​Linux find 命令 | 菜鸟教程 (runoob.com)​

xargs ​​Linux xargs 命令 | 菜鸟教程 (runoob.com)​

使用定时任务crontab定期自动清理

##新建并编辑定时任务,找到30日以前的所有 log_*.xml,并删除
vi oracle_log_xml_clear.sh

#!/bin/sh
find $ORACLE_BASE/diag/tnslsnr/$HOSTNAME/listener/alert -mtime +30 -name "log_*.xml" | xargs rm -rf

##设置定时任务每天23点执行
##注意:当程序在你所指定的时间执行后,
##系统会发一封邮件给当前的用户,
##显示该程序执行的内容,
##若是你不希望收到这样的邮件,
##请在每一行空一格之后加上 > /dev/null 2>&1 即可
crontab -e
0 23 * * * /home/oracle/scirpt/oracle_log_xml_clear.sh > /dev/null 2>&1

​Linux crontab 命令 | 菜鸟教程 (runoob.com)​

以上是关于Oracle-清理监听日志文件 listener.log的主要内容,如果未能解决你的问题,请参考以下文章

『ORACLE』 清理监听日志(11g)

Oracle数据库运维:要对监听日志文件(listener.log)进行定期清理,如果不定期清理,会遇到下面一些麻烦

Oracle listener.log 清理

Oracle11g监听器日志 listener.log文件过大处理

如何删除oracle监听日志

oracle rac 监听日志在啥位置