重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 873|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2023-6-9 14:58:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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内,排程周期性的执行
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-5-11 22:56 , Processed in 0.096177 second(s), 20 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表