暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

记一次oracle的备份失败处理过程-sysaux表空间不足

事件起因:在周五的早上进行数据库备份巡检时发现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的备份命令。


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

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

评论