adump目录下文件太多导致ls很慢的方法

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.764s
user    1m12.998s
sys     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.107s
user    0m3.448s
sys     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内,排程周期性的执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值