重庆思庄Oracle、Redhat认证学习论坛
标题:
adump目录下文件太多导致ls很慢的方法
[打印本页]
作者:
jiawang
时间:
2023-6-9 14:58
标题:
adump目录下文件太多导致ls很慢的方法
本帖最后由 jiawang 于 2023-6-9 15:00 编辑
adump一般位于$ORACLE_BASE目录下,主要记录具有sysdba或者sysoper权限的用户的登录行为等,这个是强制记录的,即使设置了database audit trail (如设置AUDIT_TRAIL parameter = DB),oracle也会强制记录并产生audit file.
问题是,如果长期不删除,adump下会保留相当多的audit file,共有3590164个文件
ls -1 -f|wc -l
3590164
ls命令
执行起来非常慢,花费了18分钟之久
time ls -alh
......文件输出省略
real 18m1.764
suser 1m12.998
ssys 1m28.491s
这是因为默认情况下,“ls”命令将对其输出进行排序。
为此,它必须首先将每个文件的名称读入内存。 面对一个非常大的目录,它会一个一个的读取文件名,并占用越来越多的内存,直到最终按字母数字顺序一次列出所有文件。
我们将ls命令的参数改一下,使用如下-1、与-f参数:
-1 list one file per line
-f do not sort, enable -aU, disable -lst
time ls -1 -f
......文件输出省略
real 2m57.107
suser 0m3.448
ssys 0m13.646s
这次输出只花了近3分钟,已经较之前改善很多了
如果要删除,可以使用:
time ls -1 -f |xargs -i rm {}
或者删除指定时间段内的文件
find $ORACLE_BASE/admin/orcl/adump -mtime +2 -type f |xargs -i rm -f {}
当然,由于这些文件记录了sysdba与sysoper权限的用户的登录行为,不需要保留太久,最好将后者放到
crontab
内,排程周期性的执行
欢迎光临 重庆思庄Oracle、Redhat认证学习论坛 (http://bbs.cqsztech.com/)
Powered by Discuz! X3.2