暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

purgelogs—Oracle 数据库在 Linux 系统下的垃圾文件清理神器

285

大家好,我是 JiekeXu,江湖人称“强哥”,青学会MOP技术社区主席,荣获Oracle ACE Pro称号,OpenTenBase ACE,金仓社区最具价值倡导者KVA,崖山最具价值专家YVP,IvorySQL开源社区专家顾问委员会成员,KWDB社区MVP,墨天轮MVP,墨天轮连续多年度“墨力之星”,拥有Oracle OCP/OCM认证,MySQL 5.7/8.0 OCP认证以及金仓KCA、KCP、KCM、KCSM证书,TiDB PCTA/PCTP证书、PCA、OBCA、OGCA等众多国产数据库认证证书,专注于数据库技术、系统架构及大数据运维,致力于分享最纯粹、最接地气的 DBA 实战与前沿技术洞察。如果你也对数据技术充满热忱,欢迎关注我的微信公众号“JiekeXu DBA之路”点赞、转发与评论,谢谢!

前 言

是否你也长期饱受数据库服务器文件系统使用率告警的困扰?是否时常因 Oracle adump 审计日志疯狂堆积,引发 inode 耗尽、数据库异常卡顿的问题?又或是监听日志持续膨胀,最终导致监听无法正常工作、业务断连而束手无策?

日常手动清理日志不仅操作繁琐、耗时长,误删核心文件还存在极高数据库运行风险。为此,一款适配 Linux 环境的日志清理工具应运而生 —— purgelogs 命令工具,它专为 Oracle 数据库各类冗余文件设计,能够安全、高效清理审计日志、监听日志、各类监控垃圾日志,从根源解决磁盘占满、inode 耗尽、监听失效等一系列运维难题,充分体现了使用该工具清理 Oracle 垃圾文件的必要性、安全性与高效快捷性。

官方推荐清理工具 purgelogs

一键自动化归档并清理由 Oracle Grid Infrastructure、RDBMS、TFA、OSWatcher、OAK 和 DCS 在一体机 Exadata、ODA、DS、ExaCS 和 ExaC@C 上生成的跟踪信息和日志。

0707.png

purgelogs 在数据库主机本身上运行。它会自动发现您的 Oracle 主目录,遍历正确的 ADR/TFA/OSWatcher/OAK/DCS 路径,然后删除旧的跟踪文件和日志,或将它们存档到本地文件系统路径,或直接存档到OCI对象存储桶中。

每个组件的默认保留期为 30 天,purgelogs 被设计为在所有集群节点上运行(通常作为 cron 作业)。

下载安装 purgelogs

[root@JiekeXu-OGG ~]# unzip p36518442_201_Linux-x86-64.zip
Archive:  p36518442_201_Linux-x86-64.zip
  inflating: readme_purgelogs-2.0.1-18.el7.x86_64.txt
  inflating: purgelogs-2.0.1-18.el7.x86_64.rpm
[root@JiekeXu-OGG ~]# rpm -ivh purgelogs-2.0.1-18.el7.x86_64.rpm
warning: purgelogs-2.0.1-18.el7.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID bcb53dc0: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:purgelogs-2.0.1-18               ################################# [100%]

purgelogs-2.0.1.18 binary has been installed on /opt/purgelogs succesfully!

[root@JiekeXu-OGG ~]# ls -l /opt/purgelogs
total 10448
-rwxr-xr-x 1 root root 10698525 Jul  7  2025 purgelogs.bin

--升级 rpm 包
# rpm -Uvh purgelogs-2.0.1-18.el7.x86_64.rpm   --升级

新版本及版本发布时间,可在 MOS 直接搜索对应补丁号下载或者根据 KB118547 文中链接下载。 p39341353_purgelogs-401_Linux-x86-64.zip p39341345_purgelogs-401_Linux-x86-64.zip

图片.png

图片.png

使用 purgelogs

针对 Grid/RDBMS homes,清理 Oracle Alert 告警日志、Incident、Trace 跟踪日志、Cdump 日志、HM 日志、GPNP Client 日志和 ACFS 日志(从18c版本及以上开始):删除所有超过 15 天的文件。

-- 默认清理 30 天以前的日志
# Default cleanup: GI + OH + TFA + OSW + ODA, all at 30 days
/opt/purgelogs/purgelogs.bin cleanup

[root@JiekeXu-OGG purgelogs]# ./purgelogs.bin cleanup --help

│▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
 PURGELOGS - Archive & Cleanup GI/RDBMS logs and traces
 Version: 2.0.1-18
 Copyright (c) 2015-2025 Oracle and/or its affiliates.
 --------------------------------------------------------
 Author: Ruggero Citton <ruggero.citton@oracle.com>
 RAC Pack, Cloud Innovation and Solution Engineering Team
│▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│

Usage:
 purgelogs.bin cleanup [--days <days> [--aud] [--lsnr] [--noadrcilsnr]] |
                       [--orcl <days> [--aud] [--lsnr] [--noadrcilsnr]] |
                       [--tfa <days>] |
                       [--osw <days>] |
                       [--oda <days>] |
                       [--extra '<folder>':<days> | [, '<folder>':<days>]]
                       [--automigrate]
                       [--dryrun]
                       [--nosudo]

 purgeLogs cleanup OPTIONS
  --days       <days>                        Purge orcl,tfa,osw,oda components logs & traces older then # days
  --orcl       <days>                        Purge only GI/RDBMS logs & traces (Default 30 days)
  --tfa        <days>                        Purge only TFA repository older then # days (Default 30 days)
  --osw        <days>                        Purge only OSW archives older then # days (Default 30 days)
  --oda        <days>                        Purge only ODA logs and trace older then # days (Default 30 days)
  --extra      '<folder>':<days>             Purge only files in user specified folders (Default 30 days)
  --aud                                      Purge Audit logs based on '-orcl <days>' option
  --lsnr                                     It will force the cleanup of listeners log independently by the age
  --noadrcilsnr                              It will skip adrci listener alert purge
  --automigrate                              It will run the adrci schema migrate commands in case of DIA-49803
  --dryrun                                   It will show the purge commands w/o execute them
  --help                                     Display this help and exit

[root@JiekeXu-OGG purgelogs]#  ./purgelogs.bin cleanup --orcl 15
INFO: 2026-07-07 17:04:58: Please check the logfile '/opt/purgelogs/out/log/PURGELOGS_29081.log' for more details


│▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
 PURGELOGS - Archive & Cleanup GI/RDBMS logs and traces
 Version: 2.0.1-18
 Copyright (c) 2015-2025 Oracle and/or its affiliates.
 --------------------------------------------------------
 Author: Ruggero Citton <ruggero.citton@oracle.com>
 RAC Pack, Cloud Innovation and Solution Engineering Team
│▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│

INFO: 2026-07-07 17:04:58: Clusterware is not installed, skipping GI cleanup

~~~~~~~~~~~~~~~~~~~~~~adrci RDBMS purge started~~~~~~~~~~~~~~~~~~~~~~
INFO: 2026-07-07 17:04:58: Getting dbhome for 'ogg'
INFO: 2026-07-07 17:05:04: adrci RDBMS purging diagnostic destination diag/rdbms/ogg/ogg
INFO: 2026-07-07 17:05:04: ... purging ALERT older than 15 days
INFO: 2026-07-07 17:05:04: ... purging INCIDENT older than 15 days
INFO: 2026-07-07 17:05:04: ... purging TRACE older than 15 days
INFO: 2026-07-07 17:05:04: ... purging CDUMP older than 15 days
INFO: 2026-07-07 17:05:04: ... purging HM older than 15 days
INFO: 2026-07-07 17:05:04: ... purging STAGE older than 15 days
INFO: 2026-07-07 17:05:04: ... purging SWEEP older than 15 days
INFO: 2026-07-07 17:05:04: ... purging UTSCDMP older than 15 days

~~~~~~~~~~~~~~~~~~~~OH/RDBMS/log purge started~~~~~~~~~~~~~~~~~~~~~~~~
INFO: 2026-07-07 17:05:04: OH RDBMS logs purge started
INFO: 2026-07-07 17:05:04: Purging OH RDBMS logs on '/u01/app/oracle/product/19.0.0/dbhome_1/rdbms/log' older then 15 days

SUCCESS: 2026-07-07 17:05:04: Cleanup completed succesfully!

图片.png

还可以使用 “–aud” 选项清理包含 GI 和 RDBMS 的审计文件,例如:

[root@JiekeXu-Rac1 ~]# /opt/purgelogs/purgelogs.bin cleanup --orcl 15 --aud INFO: 2026-07-07 17:14:33: Please check the logfile '/opt/purgelogs/out/log/PURGELOGS_15175.log' for more details │▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│ PURGELOGS - Archive & Cleanup GI/RDBMS logs and traces Version: 2.0.1-18 Copyright (c) 2015-2025 Oracle and/or its affiliates. -------------------------------------------------------- Author: Ruggero Citton <ruggero.citton@oracle.com> RAC Pack, Cloud Innovation and Solution Engineering Team │▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│ INFO: 2026-07-07 17:14:33: GI Audit logs purge started INFO: 2026-07-07 17:14:33: ... purging GI Audit logs under '/u01/app/19.0.0/grid/rdbms/audit' older then 15 days INFO: 2026-07-07 17:14:33: ... purging GI Audit logs under '/u01/app/grid/admin/_mgmtdb/adump' older then 15 days WARNING: 2026-07-07 17:14:33: Path /u01/app/grid/admin/_mgmtdb/adump does not exist, GI Audit archive logs cleanup skipped... ~~~~~~~~~~~~~~~~~~~~~~adrci GI purge started~~~~~~~~~~~~~~~~~~~~~~~~~~ INFO: 2026-07-07 17:14:33: Checking if this is an Oracle Restart environment INFO: 2026-07-07 17:14:33: adrci GI purging diagnostic destination diag/asm/+asm/+ASM1 INFO: 2026-07-07 17:14:33: ... purging ALERT older than 15 days INFO: 2026-07-07 17:14:33: ... purging INCIDENT older than 15 days INFO: 2026-07-07 17:14:33: ... purging TRACE older than 15 days INFO: 2026-07-07 17:14:33: ... purging CDUMP older than 15 days INFO: 2026-07-07 17:14:34: ... purging STAGE older than 15 days INFO: 2026-07-07 17:14:34: ... purging SWEEP older than 15 days INFO: 2026-07-07 17:14:34: ... purging HM older than 15 days INFO: 2026-07-07 17:14:34: ... purging UTSCDMP older than 15 days INFO: 2026-07-07 17:14:34: adrci GI purging diagnostic destination diag/crs/JiekeXu-Rac1/crs INFO: 2026-07-07 17:14:51: Purging GPNP client logs older then 15 days ~~~~~~~~~~~~~~~~~~~~~~ACFS purge started~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ INFO: 2026-07-07 17:14:51: Purging ACFS logs older then 15 days ~~~~~~~~~~~~~~~~~~~~~~adrci RDBMS purge started~~~~~~~~~~~~~~~~~~~~~~ INFO: 2026-07-07 17:14:51: Getting dbhome for 'JXRUATDB' WARNING: 2026-07-07 17:14:51: No ADR homes are set ~~~~~~~~~~~~~~~~~~~~OH/RDBMS/log purge started~~~~~~~~~~~~~~~~~~~~~~~~ INFO: 2026-07-07 17:14:52: OH RDBMS logs purge started INFO: 2026-07-07 17:14:53: Purging OH RDBMS logs on '/u01/app/oracle/product/19.0.0/dbhome_1/rdbms/log' older then 15 days ~~~~~~~~~~~~~~~~~~~~RDBMS Audit logs purge started~~~~~~~~~~~~~~~~~~~~~~~~~ INFO: 2026-07-07 17:14:53: RDBMS Audit logs purge started INFO: 2026-07-07 17:14:54: Purging RDBMS Audit logs on '/u01/app/oracle/product/19.0.0/dbhome_1/rdbms/audit' older then 15 days INFO: 2026-07-07 17:14:54: Purging RDBMS Audit logs on '/u01/app/oracle/admin/Jiekedb/adump' older then 15 days readdir() attempted on invalid dirhandle $dh at (eval 320) line 505. closedir() attempted on invalid dirhandle $dh at (eval 320) line 506. SUCCESS: 2026-07-07 17:15:05: Cleanup completed succesfully! ----------------------------------------------------------------------- Above warning 'DIA-49803' could be solved executing following command: /opt/purgelogs/out/shell/migrate_schema_15175.sh -----------------------------------------------------------------------

还可以指定具体目录,清理对应目录下的文件,清理来自某些指定“额外”文件夹(如/tmp、/var/log、/opt/app)的文件/痕迹/核心数据等,并设定不同的保留期限。比如:

/opt/purgelogs/purgelogs.bin cleanup --extra '/tmp':10,'/var/log':20,'/opt/app':30

清理 OSWatcher/ExaWatcher 存档文件和 OAK 日志,删除所有超过 35 天的文件。

/opt/purgelogs/purgelogs.bin cleanup --osw 35 --oda 35

清理监听日志,使用 ‘-lsnr’ 选项,purgelogs 将强制按时间独立清理监听器日志。

/opt/purgelogs/purgelogs.bin cleanup --orcl 50 --lsnr

将 purgeLogs 设置为 crontab 作业

例如,我们正在设置 purgleogs 任务,每天凌晨 2 点执行一次,清除超过 30天 的 GI/RDBMS 跟踪日志,并保留不超过 10 天的TFA、OSWatcher 和 ODA 日志。

00 02 * * * /opt/purgelogs/purgelogs.bin cleanup --orcl 30 --tfa 10 --osw 10 --oda 10

注意事项:

  • 1、使用 root 用户安装和执行,或者配置 sudo 权限。
  • 2、不能清理归档日志,不管是 ASM 或者文件系统中的归档日志,均不能清理。
  • 3、对于单机没有 GI 的数据库,必须配置 /etc/oratab 文件。
  • 4、如果你的环境是 Oracle RAC 环境,那么可以配置 tfactl set manageLogsAutoPurge=ON 来清理日志。
# TFA 关闭自动清理,默认清理 30 天前的各种日志 tfactl set manageLogsAutoPurge=OFF # 查看自动清理开关和保留天数 tfactl print config | grep -i purge # 查看 TFA 自动清理历史记录 tfactl print purgelog # 修改日志仅保留7天 tfactl set manageLogsAutoPurgeAge=7 # 手动立即执行一次全量日志清理(不依赖定时任务) tfactl purge

purgelog 新版本还可以支持更多功能,更多使用方法和细节,请参考 MOS 官方说明。

/opt/purgelogs/purgelogs.bin cleanup --help /opt/purgelogs/purgelogs.bin archive --help /opt/purgelogs/purgelogs.bin encpass --help

图片.png

参考链接

purgeLogs: Archive & Cleanup traces, logs in one command (KB118547)
purgeLogs: Archive & Cleanup traces, logs in one command (Doc ID 2081655.1)

全文完,希望可以帮到正在阅读的你,如果觉得有帮助,可以分享给你身边的朋友,同事,你关心谁就分享给谁,一起学习共同进步~~~

欢迎关注我的公众号【JiekeXu DBA之路】,一起学习新知识!
——————————————————————————
公众号:JiekeXu DBA之路
墨天轮:https://www.modb.pro/u/4347
CSDN :https://blog.csdn.net/JiekeXu
ITPUB:https://blog.itpub.net/69968215
腾讯云:https://cloud.tencent.com/developer/user/5645107
——————————————————————————

facebook_pro_light_1920 × 1080  副本.png

最后修改时间:2026-07-08 09:43:38
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论