在数据库的运行中,会产生很多监听日志,堆积久了会占用很大的内存。
1 监听日志位置
监听日志listener.log日志放在了$ORACLE_BASE/diag/tnslsnr/{hostname}/listener/trace目录下
同时,可以通过查看监听状态的命令,找到监听日志文件的存放位置
[grid@rac1 ~]$ lsnrctl stat
LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 30-8月 -2019 08:51:30
Copyright (c) 1991, 2013, Oracle. All rights reserved.
正在连接到 (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
LISTENER 的 STATUS
------------------------
别名 LISTENER
版本 TNSLSNR for Linux: Version 11.2.0.4.0 - Production
启动日期 27-1月 -2018 20:31:51
正常运行时间 82 天 9 小时 51 分 46 秒
跟踪级别 off
安全性 ON: Local OS Authentication
SNMP OFF
监听程序参数文件 /u01/app/11.2.0/grid/network/admin/listener.ora
监听程序日志文件 /u01/app/grid/diag/tnslsnr/rac1/listener/alert/log.xml
监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.X.XXX)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.X.XXX)(PORT=1521)))
服务摘要..
服务 "+ASM" 包含 1 个实例。
实例 "+ASM1", 状态 READY, 包含此服务的 1 个处理程序...
服务 "racdb" 包含 1 个实例。
实例 "racdb1", 状态 READY, 包含此服务的 1 个处理程序...
服务 "racdb.nsfc.gov.cn" 包含 1 个实例。
实例 "racdb1", 状态 READY, 包含此服务的 1 个处理程序...
服务 "racdbXDB" 包含 1 个实例。
实例 "racdb1", 状态 READY, 包含此服务的 1 个处理程序...
命令执行成功
[grid@rac1 alert]$ cd ..
[grid@rac1 listener]$ ls
alert/ cdump/ incident/ incpkg/ lck/ metadata/ metadata_dgif/ metadata_pv/ stage/ sweep/ trace/
[grid@rac1 listener]$ cd trace/
[grid@rac1 trace]$ ls
listener.log
[grid@rac1 trace]$ ll # trace目录下记录的日志文件更为详细
total 29077052
-rw-r----- 1 grid oinstall 29773876766 Aug 30 08:53 listener.log
[grid@rac1 trace]$ du -sh # 查看日志大小
28G .
如果是rac,还会有SCAN监听日志
SCAN监听日志放在了/u01/app/11.2.0/grid/log/diag/tnslsnr/{hostname}/listener_scan1/alert/目录下。
与监听日志一样,也可以通过查看SCAN监听状态的命令,找到日志文件的存放位置
[grid@rac1 ~]$ lsnrctl status listener_scan1
LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 30-AUG-2019 09:01:14
Copyright (c) 1991, 2013, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1)))
TNS-12541: TNS:no listener
TNS-12560: TNS:protocol adapter error
TNS-00511: No listener
Linux Error: 2: No such file or directory
[grid@rac2 ~]$ lsnrctl status listener_scan1
LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 30-AUG-2019 09:02:13
Copyright (c) 1991, 2013, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1)))
STATUS of the LISTENER
------------------------
Alias LISTENER_SCAN1
Version TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date 27-JAN-2018 10:47:23
Uptime 82 days 19 hr. 46 min. 56 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/11.2.0/grid/network/admin/listener.ora
Listener Log File /u01/app/11.2.0/grid/log/diag/tnslsnr/rac2/listener_scan1/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_SCAN1)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.X.XXX)(PORT=1521)))
Services Summary...
Service "racdb" has 2 instance(s).
Instance "racdb1", status READY, has 1 handler(s) for this service...
Instance "racdb2", status READY, has 1 handler(s) for this service...
Service "racdb.nsfc.gov.cn" has 2 instance(s).
Instance "racdb1", status READY, has 1 handler(s) for this service...
Instance "racdb2", status READY, has 1 handler(s) for this service...
Service "racdbXDB" has 2 instance(s).
Instance "racdb1", status READY, has 1 handler(s) for this service...
Instance "racdb2", status READY, has 1 handler(s) for this service...
The command completed successfully
注意,如果是rac,都必须使用grid用户登录
2 监听日志的清理
2.1 SHELL作业
一般,可以编写一个shell作业,每个月将监听日志移动至指定目录下,并删掉trace目录下的日志。
alert目录和trace目录下记录的都是监听日志,只是alert记录的更为详细。
- 创建crontab定时任务
30 1 1 * * sh /u01/app/oracle/diag/tnslsnr/XXX107/listener/tracebak/mvlistenerlog.sh
- 编写shell作业
#!/bin/bash
#mv listener log to new station
path=/u01/app/grid/diag/tnslsnr/rac1/listener/
#get date
datestring=$(date +%Y%m --date="-1 month")
cp ${path}trace/listener.log ${path}tracebak/listener_rac1_${datestring}.log
echo > ${path}trace/listener.log
2.2 手动清理
- tracebak/目录下的监听日志根据实际内存环境,可以手动每隔一段时间一清
- alert目录下可以根据需要,保留一周或一个月
find /u01/app/grid/diag/tnslsnr/rac1/listener/alert/ -mtime +7 -name "*" -exec rm -rf {} \;