数据泵expdp导出遇到ORA-01555和ORA-22924问题的分析和处理
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,使用数据泵导出数据库数据时,发现如下错误提示:ORA-31693: Table data object "CAMS_CORE"."BP_EXCEPTION_LOG" failed to load/un
千家信息网最后更新 2026年11月01日数据泵expdp导出遇到ORA-01555和ORA-22924问题的分析和处理
使用数据泵导出数据库数据时,发现如下错误提示:
ORA-31693: Table data object "CAMS_CORE"."BP_EXCEPTION_LOG" failed to load/unload and is being skipped due to error:ORA-02354: error in exporting/importing dataORA-01555: snapshot too old: rollback segment number with name "" too smallORA-22924: snapshot too old
1.查看表空间使用率
SELECT UPPER(F.TABLESPACE_NAME) AS "表空间名", D.TOT_GROOTTE_MB AS "表空间大小(M)", D.TOT_GROOTTE_MB-F.TOTAL_BYTES AS "已使用空间(M)", TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') || '%' "使用比", F.TOTAL_BYTES AS "空闲空间(M)", F.MAX_BYTES AS "最大块(M)" FROM (SELECT TABLESPACE_NAME, ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES, ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES FROM SYS.DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) F, (SELECT DD.TABLESPACE_NAME, ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB FROM SYS.DBA_DATA_FILES DD GROUP BY DD.TABLESPACE_NAME) D WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAMEORDER BY 1;

2.看到ORA-01555错误,还以为是经典错误,尝试调整undo_retention参数
SYS@cams>alter system set undo_retention=30000 scope=both;
修改后再次导出,问题依旧存在,显然问题和 undo_retention没关系,再把参数改回去。
3.猜测是表空间有问题,这里尝试对 CAMS_CORE下的索引和LOB 进行表空间迁移。
(1)新建新的表空间
(2)拼接表空间迁移语句,前面已有文章写到了表空间迁移方案
(3)执行表空间迁移语句
alter table CAMS_CORE.BP_EXCEPTION_LOG move lob(EX_STACK) store as (tablespace cams_core_lob);
执行到该语句的时候提示错误:
ORA-01555: 快照过旧: 回退段号 (名称为 "") 过小ORA-22924: 快照太旧
这里,问题应该比较明显了,有部分 LOB数据有问题。
4.寻找问题解决方案(MOS)
使用关键字 "expdp ORA-01555 ORA-22924 LOB"进行查找:
Export Fails With Errors ORA-2354 ORA-1555 ORA-22924 And How To Confirm LOB Segment Corruption Using Export Utility (文档 ID 833635.1)
5.参考MOS给出的解决方案,动手处理问题
set concat off create table corrupted_lob_data (corrupted_rowid rowid); set concat offdeclare error_1555 exception; pragma exception_init(error_1555,-1555); num number; begin for cursor_lob in (select rowid r, &&lob_column from &table_owner.&table_with_lob) loop begin num := dbms_lob.instr (cursor_lob.&&lob_column, hextoraw ('889911')) ; exception when error_1555 then insert into corrupted_lob_data values (cursor_lob.r); commit; end; end loop; end; / Enter value for table_owner: EX_STACKEnter value for table_owner: CAMS_COREEnter value for table_with_lob: BP_EXCEPTION_LOGold 6: for cursor_lob in (select rowid r, &&lob_column from &table_owner.&table_with_lob) loopnew 6: for cursor_lob in (select rowid r, EX_STACK from CAMS_CORE.BP_EXCEPTION_LOG) loopold 8: num := dbms_lob.instr (cursor_lob.&&lob_column, hextoraw ('889911')) ;new 8: num := dbms_lob.instr (cursor_lob.EX_STACK, hextoraw ('889911')) ; PL/SQL procedure successfully completed.查看存在问题的数据记录:
select * from CAMS_CORE.BP_EXCEPTION_LOGwhere rowid in ( select * from CAMS_CORE.corrupted_lob_data );

确实存在 3条数据, CLOB 字段数据大小为 ,显然有问题。
MOS上给出的导出方案是将问题数据exclude掉,这里为了彻底解决问题,将3条数据导出为csv文件,然后删除。然后再次导出数据库数据,不再提示报错。
6.结合应用分析问题的由来。
根据有问题的数据,让开发人员去检查应用日志。检查时发现对应时间点的应用日志有残缺,不能继续往下分析。同时,根据问题发生的时间点,了解到当时工程师在给服务器做迁移,结果服务器强制重启(应用和数据库一起),导致了部分数据损坏。
数据
问题
空间
方案
错误
应用
数据库
语句
提示
分析
再次
参数
大小
快照
日志
时间
服务器
解决方案
部分
尝试
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技园
互联网科技图片
互联网公司 科技公司
致骋互联网科技
奇酷互联网络科技公司
互联网科技视频素材
互联网公司会议桌创意科技软装饰
蓝色互联网科技
以后互联网后是啥科技
国大互联网教育科技有限公司薪资
广东工业互联网大赛深圳学泰科技
广州千川互联网科技有限公司
西安有哪些互联网高科技企业
上海万顺科技互联网有限公司招聘
互联网金融运营模式中的金融科技
兰石爱特工业互联网科技分公司
科技互联网专业务虚会材料
伍佰万互联网科技是干嘛的
互联网科技创业有什么好项目
六子台科技互联网展会
智慧科技互联网
互联网之后的科技是什么
中国互联网有什么科技含量
辽宁互联网新科技
洛阳昕诺飞互联网科技有限公司
河南住房之家互联网科技
北京市互联网新科技
平安好医生打造互联网科技医疗
瑞安市蟠桃会互联网科技有限公司
宁波允成互联网科技有限公司