Welcome 微信登录

首页 / 数据库 / MySQL / Oracle exp导出时出现ORA-01555和ORA-22924的解决方案

现场报了一个问题,说是做逻辑备份时出现错误,导致备份的数据不完整,一张数十G数据量的表只导出了不到1G。错误信息如下:EXP-00056: 遇到 Oracle 错误 1555
ORA-01555: snapshot too old: rollback segment number  with name "" too small
ORA-22924: snapshot too old
查了MOS,官方给出如下说明:原因为LOB段损坏,使用如下方法来定位损坏的LOB值所在记录的rowid
  1. create table corrupted_lob_data (corrupted_rowid rowid);  
  2.   
  3. set concat off  
  4.   
  5. declare  
  6.   error_1555 exception;  
  7.   pragma exception_init(error_1555,-1555);  
  8.   num number;  
  9. begin  
  10.   for cursor_lob in (select rowid r, &&lob_column from &table_owner.&table_with_lob) loop  
  11.     begin  
  12.       num := dbms_lob.instr (cursor_lob.&&lob_column, hextoraw ("889911")) ;  
  13.     exception  
  14.       when error_1555 then  
  15.         insert into corrupted_lob_data values (cursor_lob.r);  
  16.         commit;  
  17.     end;  
  18.   end loop;  
  19. end;  
  20. /  
执行完以后,根据表中存储的rowid值到出错的表中查出对应的记录。如果使用PL/SQL Developer,能看到对应的LOB字段值显示value error。将该值清空或删除这条记录可以解决,比如:update TABLE1 set COL1=empty_blob() where rowid="xxxxxxx";RMAN中通过时间点不完全恢复报ORA-01841的解决办法Golden Gate配置实例:RHEL 4.7下的Oracle 10g RAC到单实例的单向同步相关资讯      Oracle基础教程 
  • Oracle块编程返回结果集详解  (11/10/2013 10:45:58)
  • Oracle基础教程之设置系统全局区  (08/22/2013 14:24:00)
  • Oracle基础教程知识点总结  (06/18/2013 07:43:32)
  • Oracle基础教程之tkprof程序详解  (10/22/2013 11:49:50)
  • Oracle基础教程之sqlplus汉字乱码  (07/18/2013 16:30:00)
  • Oracle 管理之 Linux 网络基础  (02/16/2013 18:37:35)
本文评论 查看全部评论 (1)
表情: 姓名: 字数


评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容