事件起因:在周五的早上进行数据库备份巡检时发现oracle的expdp备份失败了,内心OS:哇塞!!!这怎么会失败呢?多少年了没做过修改变动,怎么会失败了呢?超级疑惑。讨人厌的东西总是私自做变更不告诉我,怎么会有这么自私的东西。
报错信息:

报错原因分析:可能是sysaux表空间耗尽导致的expdp备份失败的报错。
解析报错信息:
ORA-39171: Job is experiencing a resumable wait.ORA-01691: unable to extend lob segment SYS.SYS_LOB0000000358C00040$$ by 1024 in tablespace SYSAUX
关键性报错:expdp在导出过程中需要在sysaux表空间创建临时LOB段,但是sysaux表空间已经没有剩余空间可以扩容了,触发了oracle的可恢复等待机制。
Resumable stmt status: SUSPENDEDResumable stmt start: 05/17/26 22:12:00 stmt suspend: 05/17/26 22:12:00ORA-39126: Worker unexpected fatal error in KUPW$WORKER.FETCH_XML_OBJECTS [ORA-30032: the suspended (resumable) statement has timed out]
后续连锁报错:等待超时后,expdp工作进程直接崩溃,整个导出任务直接终止,总耗时4小时12分。
ORA-01691: unable to extend lob segment SYS.SYS_LOB0000000358C00040$$ by 1024 in tablespace SYSAUX
重复报错循环:多次尝试扩容sysaux表空间失败,最终任务完全终止。
综上所示根本原因详细分析:
1、sysaux表空间是oracle的辅助系统表空间,用来存放AWR报告,pl/sql调试信息,审计日志,expdp导出的临时元数据,几乎所有数据库后台任务都会用到它。
2、开启了compression=all全量压缩+parallel=2并行导出,expdp会生成大量临时元数据LOB对象,快速耗尽sysaux表空间。
3、定时任务没有清理sysaux表空间的垃圾数据,导致空间被占满。
修复过程:
1、先何查sysaux表的使用情况
-- 查看SYSAUX表空间总大小、已使用、剩余空间
SELECT
tablespace_name,
round(total/1024/1024,2) total_MB,
round(used/1024/1024,2) used_MB,
round(free/1024/1024,2) free_MB,
round(used/total*100,2) used_pct
FROM (
SELECT
tablespace_name,
sum(bytes) total,
sum(bytes - decode(autoextensible, 'YES', maxbytes, bytes)) used,
sum(decode(autoextensible, 'YES', maxbytes, bytes)) free
FROM dba_data_files
WHERE tablespace_name = 'SYSAUX' GROUP BY tablespace_name
);

-- 查看SYSAUX表空间占用Top10的对象
SELECT
owner,
segment_name,
segment_type,
round(bytes/1024/1024,2) size_MB
FROM dba_segments
WHERE tablespace_name = 'SYSAUX' ORDER BY bytes DESC
FETCH FIRST 10 ROWS ONLY;
由此得出,就是sysaux表空间被占满到99.52%,占的最大的是oracle自动优化工具的历史数据,导致的expdp的失败。
2、解决吧
方法一:释放sysaux表空间占用最多的垃圾数据
占用的WRI$ADV系列表,这是oracle自动sql优化的历史日志,可以安全清理
-- 1. 清理自动优化任务的历史数据,直接释放约20G空间 TRUNCATE TABLE SYS.WRI$ADV_OBJECTS;TRUNCATE TABLE SYS.WRI$ADV_SQLT_PLANS;-- 2. 清理统计信息历史表 TRUNCATE TABLE SYS.WRI$_OPTSTAT_HISTGRM_HISTORY;TRUNCATE TABLE SYS.WRI$_OPTSTAT_HISTORY;
方法二:临时扩充SYSAUX表空间(最安全保险的)
ALTER TABLESPACE SYSAUX ADD DATAFILE '/你的数据库路径/sysaux02.dbf' SIZE 10G AUTOEXTEND ON NEXT 1G MAXSIZE UNLIMITED;
3、重新执行expdp的备份命令。

成功了成功了成功了!!!!!





