应关闭不必要的sql跟踪、修正diag_dest路径、清除冲突的background_dump_dest参数、用adrci按策略清理旧trace,并优先排查rman失败根源。
rman备份时trace文件暴增,diag_dest磁盘快满了怎么办
直接停rman不是办法,trace文件是oracle自动写入的诊断日志,根源在rman会话启用sql跟踪(比如隐式触发dbms_backup_restore内部调用),而diag_dest没做空间管控或归档清理策略。
关键动作不是删文件,而是关掉不必要的跟踪 + 控制日志生命周期:
-
ALTER SYSTEM SET EVENTS '10046 trace name context off';—— 确保全局SQL跟踪关闭(RMAN默认不开启,但某些自定义脚本或第三方工具可能打开) - 检查RMAN命令里是否含
debug参数,如run { debug on; backup database; },这类显式调试必须去掉 - 确认
DIAG_DEST指向的是独立小分区(常见坑:误设为$ORACLE_HOME/log或根分区),应指向专用大容量路径,例如/u01/app/oracle/diag
DIAG_DEST配置后Trace仍堆积,看ADR_BASE和BACKGROUND_DUMP_DEST是否冲突
Oracle 11g+用ADR统一管理诊断文件,但老配置项如BACKGROUND_DUMP_DEST若还存在,可能让部分Trace绕过DIAG_DEST规则写到别处,造成“明明改了DIAG_DEST却还是满”的错觉。
查清实际落盘位置:
- 运行
SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME IN ('diagnostic_dest', 'background_dump_dest'); - 对比两者值:如果
BACKGROUND_DUMP_DEST非空且路径不同,说明有双日志路径,必须清空该参数(ALTER SYSTEM RESET background_dump_dest SCOPE=SPFILE;)并重启实例 -
DIAG_DEST生效后,所有Trace都落在$DIAG_DEST/rdbms/<dbname>/<instance>/trace/</instance></dbname>下,子目录按进程名(如rman_ora_12345.trc)区分
自动清理Trace文件,靠ADRCI而不是手动rm -rf
手动删.trc文件风险高:可能删到正在写的活跃Trace,导致Oracle报ORA-48192;更糟的是破坏ADR目录结构,后续ADRCI命令失效。
正确做法是用Oracle原生工具按策略清理:
- 进
ADRCI:adrci→set base /u01/app/oracle/diag→show homes找到对应RDBMS home - 清理7天前的Trace:
purge -age 1008 -type TRACE(单位是分钟,1008=7×24×60) - 加
-home限定范围,避免误清其他组件日志:purge -age 1008 -type TRACE -home odiag_rdbms_orcl_orcl - 把清理做成定时任务:写shell脚本调用
adrci -script purge_adr.rsp,purge_adr.rsp里只放两行命令(set base ...+purge ...)
RMAN频繁出错导致Trace爆炸,先查V$RMAN_OUTPUT和ALERT.log再动手
Trace暴增往往不是RMAN本身问题,而是它反复失败重试(比如归档日志缺失、磁盘不可写、TNS连不上介质管理器),每次失败都生成新Trace,几小时就能占几十GB。
别急着清理,先定位根本原因:
- 查最近RMAN错误:
SELECT * FROM V$RMAN_OUTPUT WHERE RMAN_COMMAND_ID IN (SELECT RMAN_COMMAND_ID FROM V$RMAN_STATUS WHERE STATUS = 'FAILED') ORDER BY START_TIME DESC; - 同步扫
ALERT.log里紧挨着RMAN失败时间点的ORA-错误,常见如ORA-19504(无法创建备份片)、ORA-19809(超过DB_RECOVERY_FILE_DEST_SIZE) - 确认RMAN通道是否卡住:
SELECT * FROM V$SESSION WHERE PROGRAM LIKE '%rman%';,长时间ACTIVE但无进展的会话可考虑ALTER SYSTEM KILL SESSION
Trace只是症状,磁盘爆满是结果,真正要盯住的是RMAN失败循环。一旦底层问题修复,Trace增长自然回落,清理压力就小多了。










