在oracle中,如果不对监听日志文件进行截断(定期清理),那么监听日志文件会变得越来越大,由于一些老旧的OS不支持2GB以上的文件,故当listener.log文件超过2GB时,会出现无法处理新的连接,新的操作系统虽然不会出现这个问题,但我们依然需要对其进行定期清理。
查看listener.log日志文件的位置,在RAC数据库中,其位置为:
unixdev$[/grid/app/diag/tnslsnr/unixdev/listener/trace]ls listener.log
确定日志文件的大小
unixdev$[/grid/app/diag/tnslsnr/unixdev/listener/trace]du -ks listener.log 722795 listener.log
同时,通过上面的命令,我们还可以查看其他文件的大小:
unixdev$[/grid/app/diag/tnslsnr/unixdev/listener]du -ks * 1273999 alert 0 cdump 0 incident 0 incpkg 1 lck 257 metadata 0 metadata_dgif 0 metadata_pv 0 stage 0 sweep 722795 trace
如果觉得listener.log文件较大,我们可以将其清空,主要步骤为:
step1:停止监听服务进程(tnslsnr)记录日志,Oracle 11gR2监听日志存放在grid用户下
su - grid $lsnrctl set log_status off;
step2:拷贝listener.log文件
$p listener.log data_listener.log
step3:查看该副本内容是否正常
$more date_listener.log
step4:如果副本没问题,则开始清空listener.log
$echo ‘ ’ > listener.log
step5:查看日志是否被清空
$pwd ../listener/trace $du -ks *
step6:开启监听服务进程(tnslsnr)日志
$lsnrctl set log_status on;
step7:查看监听日志是否正常运行,如果不断更新,说明没问题(假如没人连接数据库,我们是看不到变化的,此时我们可以使用sqlplus连接数据库,看listener.log是否会更新
tail -f listener.log