ORA-01555: snapshot too old: rollback segment number with name "" too small
ORA-22924: snapshot too old
能是大字段的段中数据发生了损坏,可以根据以下步骤测试一下:
1、先可以使用如下方法定位损坏的LOB值所在记录的rowid:
create table tbl_corrupted_lob_tmp(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, ATTACHMENT_CONTENT from TOP_ATTACHMENT_CONTENT) loop
begin
num := dbms_lob.instr(cursor_lob.ATTACHMENT_CONTENT, hextoraw ('889911')) ;
exception
when error_1555 then
insert into tbl_corrupted_lob_tmp values (cursor_lob.r);
commit;
end;
end loop;
end;
/
2、根据tbl_corrupted_lob_tmp表中存储的rowid值找到出错记录的rowid
3、将对应rowid的记录删除:
delete top_attachment_content where rowid='xxxxxxx';
4、重新导出数据。