2013-06-06 今天系统报了文件系统使用率过80% 的警告,进过分析后
/opt/app/oracle/product/10.2.0/db_1/network/log 目录下 listener_testdb1.log 这个文件非常大
[root@testdb1:/opt/app/oracle/product/10.2.0/db_1/network/log]# ls -l
total 16018840
-rw-r----- 1 oracle oinstall 4294967311 Apr 14 2012 listener_testdb1.log
-rw-r----- 1 oracle oinstall 3903163381 Feb 20 2012 listener_testdb1.log.20120220
-rw-r----- 1 oracle oinstall 3370281 Jun 6 06:50 sqlnet.log
listener_testdb1.log 该日志文件大小正好为 4G ,且有一年多没有更新了,
正常情况下,该文件几乎一秒钟至少更新一次。
这时可能会想到将当前的日志文件备份一下,然后重新创建一个新的日志文件,
但Oracle的监听器在运行时是不允许对其日志文件做删除,重命名操作,于是只有停止监听器。
重命名后,再启动监听器,启动时会自动创建一个新的监听器日志文件,但这样客户端连接就会断开,
但也有一种方法在不停止监听器的情况下,重命名监听器日志文件。
监听器命令(WINDOWS在命令行下操作,LINUX和AIX均同命令)
lsnrctl set log_status off
lsnrctl set log_status on
*****此次具体操作步骤 :
lsnrctl set log_status off ### 先把日志状态停掉,这样就不会写监听器日志
现在就可以把 监听器日志文件备份mv 或是 删掉rm
lsnrctl set log_status on ### 重新打开日志,开始记录监听器日志。该文件会自动创建
可以执行 lsnrctl status ,检查监听器日志文件
切记 : 不能直接 cat /dev/null > listener_testdb1.log 除非在监听器关闭的情况下。
否则,即便文件已经被清空,监听器还是无法执行写入日志的。
另外也可以指定监听器日志文件的名字,而不需要系统生成的文件名:
LSNRCTL> set log_file
Parameter Value: a.log
疑问 :
为什么该文件(listener_testdb1.log)物理空间到了 4G 后,就无法增长了呢 ?
且导致监听器日志无法更新。
而且还有很多关于该文件大于 4G 后,导致数据库监听器无法启动,
也有人说会导致客户端连接的速度。
暂没有找到官方答案,下面是针对该问题几个网友的见解 :
1. Bug 9497965 - Win: Listener Startup Fails Due to listener.log Size is Greater Than 4GB [ID 9497965.8]
2. 看一下listener.log文件,突然发现这个文件大小有4GB了。不再写如新的内容进来了。
会不会是日志文件满了,监听器就不工作了。于是,清理掉该文件,一切恢复正常。
我记得,在linux下oracle 10g中,该日志文件一旦满了,就会不记录日志但监听器正常。没想到在windows下,11g就因此而挂了。
3. I leave listener_log status in the off position. Unless I need to debug something (or some folks have
a need for auditing connections), this is a useless file, and it's just
one more thing that needs to be managed.
阅读(7241) | 评论(0) | 转发(0) |