一,近期对数据库里面100G大小的单表进行expdp备份,备份的过程中报错ORA-01555
二,因为该表是个历史数据表,没有任何DML操作,因此怀疑快照过旧和撤销段关系不大。在MOS上搜索相关文档发现可能是由于错误lob字段导致,执行下述脚本,排查是否有错误的lob字段:
create table corrupted_lob_data (corrupted_rowid rowid);
set concat off
declare
error_1555 exception;
pragma exception_init(error_1555,-1555);
num number;
begin
for cursor_lob in (select rowid r, MEMO from scqerp.TB_SYS_OPLOGINFO20180623) loop
begin
num := dbms_lob.instr (cursor_lob.MEMO, hextoraw ('889911')) ;
exception
when error_1555 then
insert into corrupted_lob_data values (cursor_lob.r);
commit;
end;
end loop;
end;
/
执行完成后发现确实有error的lob字段:
将问题的JOB字段置空处理:
三、重新尝试导出,可正常导出