我尝试清除 oracle 中的一些文件。我用adrci。我想清除侦听器文件中的跟踪文件。但这是行不通的。我不知道为什么。
[grid@orcl1 app]$ adrci
adrci> set homepath diag/tnslsnr/orcl1/listener
adrci> purge -age 360 -type alert
adrci> purge -age 60 -type trace
adrci> purge -age 1 -type trace
adrci> exit
Tracefile 仍然充满 4.9 GB。
[root@orcl1 trace]# ls -alh
total 4.9G
drwxr-xr-x 2 grid oinstall 4.0K Nov 2 12:43 .
drwxr-xr-x 14 grid oinstall 4.0K May 7 14:48 ..
-rw-r----- 1 grid oinstall 43M Aug 28 2014 listener_backup_20140828.log.bz2
-rw-r----- 1 grid oinstall 4.8G Nov 2 12:43 listener.log
[root@orcl1 trace]# pwd
/u01/app/grid/diag/tnslsnr/orcl1/listener/trace
ADRCI 会删除 XML 文件,但不会删除纯文本日志,这很麻烦。
一个简单但肮脏的解决方案是用空内容覆盖文件,例如:
由于 Linux/UNIX 平台上的文件处理实现,在侦听器运行并启用日志记录时删除文件可能不会导致预期结果。
另一种解决方案是暂时禁用日志记录,删除(或移动或压缩)listener.log,然后再次启用日志记录:
显然,如果您愿意,您可以停止监听器,处理监听器日志,然后再次启动监听器。
adrci purge 将根据您的命令删除文件,但不会删除跟踪或日志文件的内容。
即使您的 listener.log 的内容可以追溯到数周/数月/数年,但如果侦听器已启动并接受连接,它今天已被修改。对于警报日志清除也是如此,如果数据库在线并且今天更新了文件,则不会执行清除。
如果我遇到一个巨大的旧警报或侦听器日志,我将复制它们,压缩副本,然后执行 >listener.log 它将截断日志但允许正在运行的进程继续更新它。