共计 2055 个字符,预计需要花费 6 分钟才能阅读完成。
–// 生产零碎昨天呈现 /u01 磁盘空间有余的状况, 清理出 40g 磁盘空间后, 查看日志利用共事发现有点慢, 次要这台机器还运行 ogg.
–// 感觉有点慢是失常的. 另外查看发现存在大量 logrotate 过程以及后续 awk 命令过程. 会不会是这些过程导致的迟缓.
–// 我先革除这些过程.
service crond stop
ps -ef | grep logrotate
pkill -9 logrotate
pkill -9 awk
service crond start
–// 看看我写的 logrotate 配置:
cat /etc/logrotate.d/oracle
/u01/app/oracle/diag/tnslsnr/dbcndg2/listener/trace/listener.log {
weekly
rotate 5
copytruncate
compress
notifempty
missingok
}
/u01/app/oracle/admin/dbcndg2/adump/dbcndg2_ora_*.aud
{
monthly
rotate 0
notifempty
missingok
maxage 32
postrotate
find /u01/app/oracle/admin/dbcndg2/adump/ -name "dbcndg_ora_*.aud" -size 0 -exec rm {} \+
endscript
}
–// 我一下子没想明确为什么我要执行 find … -size 0 这样的操作.
–// 看以前的工作笔记, 其实开始并没有 postrotate..www.pizei.com.endscript, 我才忽然想明确以前也呈现相似磁盘满这样的状况下.
–// 这样就会呈现大量 size=0 的 aud 文件, 预计过后就是为了这样的状况设计的, 革除 size= 0 的 aud 文件.
–// 为什么慢呢? 实际上这个问题我以前遇到过, 治理的机器切实太多, 脱漏一些机器要改. 只不过过后仅仅做了记录, 并没有发表进去.
–//11g 下扭转了 aud 的文件命名格局退出工夫戳, 这样每个生成的文件是惟一的, 这样 logrotate 的 state file(缺省是
–///var/lib/logrotate.status) 会越滚越大. 这样每次执行越来越慢.10g 下没有工夫戳, 也就是最大 65XXX 个文件(尽管可能也很慢, 但至
–// 少这是一个定数, 另外如同最大过程号 linux 当初也能够批改, 能够设置更大不止 65XXX, 我没有这方面的教训以及测试).
–// 查看 /var/lib/logrotate.status 曾经达到 129M. 革除文件.
>| /var/lib/logrotate.status
–// 另外查看:
ls -ltrh
total 108M
drwxr-xr-x 2 oracle oinstall 4.0K 2015-03-16 17:34:35 dpdump
drwxr-xr-x 2 oracle oinstall 4.0K 2015-03-16 17:34:43 hdump
drwxr-xr-x 2 oracle oinstall 4.0K 2015-03-16 17:34:49 pfile
drwxr-xr-x 2 oracle oinstall 107M 2021-06-22 10:14:06 adump
–// 看看 adump 页游的目录大小 107M, 就晓得即便革除了 /var/lib/logrotate.status 文件, 也是不可能实现的操作.
–// 如果你应用如下命令调试也能够发现执行很慢.
logrotate -dv /etc/logrotate.d/oracle
–// 为什么 adump 目录占用空间这个大呢?
$ mv adump adump.xxx
$ mkdir adump
$ cd adump
–// 等上一小会, 发现每分钟根本发动 10 个连贯. 我预计不晓得那个变态公司开发的无聊的监测软件. 我感觉对方的开发不会写程序,
–// 齐全能够连上不断开连接, 每次执行语句前监测连贯是否失常就 ok 了.
–// 这样 admup 目录达到这个数量级别就很失常了.
–// 1 个月产生 246010*30 = 432000 个文件.
–// 10710241024/432000 = 259.71, 每个文件在目录占用 25X 字节?, 不相熟也没有看过 linux 的目录构造. 先放一下.
–// 也就是我不能再应用 logrotate 革除 oracle aud 文件的形式来保护数据库 aud 日志, 要么应用 find+cron 的形式, 要么应用链接
–
–// 我有一些服务器曾经采纳 find+cron 形式, 有机会再整顿把, 先注解如下内容:
/u01/app/oracle/admin/dbcndg2/adump/dbcndg2_ora_*.aud
{
monthly
rotate 0
notifempty
missingok
maxage 32
postrotate
find /u01/app/oracle/admin/dbcndg2/adump/ -name “dbcndg_ora_*.aud” -size 0 -exec rm {} +
endscript
}