文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>ora-01555,ORA-22924错误的可能原因

ora-01555,ORA-22924错误的可能原因

时间:2010-09-26  来源:gflei

报ora-01555,可能有三种原因造成的
1、回滚段太小导致
若报 ora-22924,则限定在与lob字段有关
2、lob字段的pctfree太小导致
3、lob字段中存储的内容corrupt,导致获取内容是报该错误。

定位方法:
1、关闭其他用户连接,仅作exp操作。 a、如果仍报该错,则说明是第3种原因导致。 b、不报错,原因可能是1or2
2、调整了回滚段大小以及保留时间。 a、若报错,则说明是第2种原因导致。 b、不报错,则原因为第1种。

快速解决的办法:
1、关闭其他用户连接,仅作exp操作,能解决1、2两种错误。这是对于exp操作。 2、对于正常的业务操作,导致该错误,需要根据错误原因调整回滚段的大小以及保留时间,或者pctfree。 3、对于因lob中的错误内容导致的错,需要清空该字段内容进行解决。

快速定位问题lob的方法:
create table corrupt_lobs (corrupt_rowid rowid);

declare error_1578 exception; error_1555 exception; error_22922 exception;  pragma exception_init(error_1578,-1578); pragma exception_init(error_1555,-1555); pragma exception_init(error_22922,-22922);  n number;  begin  for cursor_lob in (select rowid r, document from LOBDATA ) loop  begin n:=dbms_lob.instr(cursor_lob.document,hextoraw('889911'));  exception when error_1578 then  insert into corrupt_lobs values (cursor_lob.r); commit;  when error_1555 then insert into corrupt_lobs values (cursor_lob.r); commit;  when error_22922 then insert into corrupt_lobs values (cursor_lob.r); commit;  end;  end loop;  end; 
select * from corrupt_lobs;
update PRINT_TEMPLATE set TEMPLATE_VAL = empty_blob() where rowid in (select corrupt_rowid from corrupt_lobs);
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载