Oracle数据库错误ORA-01591

来源:Oracle认证    发布时间:2012-11-12    Oracle认证视频    评论

Oracle数据库错误ORA-01591的解决方法详解 

  在Oracle数据库操作中遇到了ORA-01591的错误,经过分析得知错误的原因是使用了分布式事务,造成这个问题的原因很多时候都是由于网络问题造成的.

  解决办法如下:

  1.找到TRAN_ID

  Select 'Rollback force '''||LOCAL_TRAN_ID||'''' from sys.pending_trans$;

  2.将其COMMIT或ROLLBACK:

  rollback force LOCAL_TRAN_ID;

  commit force LOCAL_TRAN_ID;

  3.如果执行失败,则强行从资料字典中删除该交易记录

  set transaction use rollback segment system;

  delete from dba_2pc_pending where local_tran_id = LOCAL_TRAN_ID;

  delete from pending_sessions$ where local_tran_id = LOCAL_TRAN_ID;

  delete from pending_sub_sessions$ where local_tran_id = LOCAL_TRAN_ID;

  commit;

  生成批量语句:

  begin

  for r in (select local_tran_id   from dba_2pc_pending t

  where t.state = 'collecting') loop

  --dbms_output.put_line('commit force '''||r.local_tran_id||''';');

  dbms_output.put_line('delete from dba_2pc_pending where local_tran_id = '''||r.local_tran_id||''';');

  dbms_output.put_line('delete from pending_sessions$ where local_tran_id = '''||r.local_tran_id||''';');

  dbms_output.put_line('delete from pending_sub_sessions$ where local_tran_id = '''||r.local_tran_id||''';');

  end loop;

  dbms_output.put_line('commit;');

  end;

  4.执行失败,还一种情况可以尝试下重起一下Oracle服务,这种情况我遇到过一次,重新启动后该锁自动解除(因为对删除数据字典比较担心,所以胡乱试了一次重启数据库,前提是执行了commit force LOCAL_TRAN_ID;失败之后重新启动).

  以上就是Oracle数据库错误ORA-01591的几种详细的解决方法,希望本次的介绍能够对您有所收获!

  考试大温馨提示:本内容来源于网络,仅代表作者个人观点,与本站立场无关,仅供您学习交流使用。其中可能有部分文章经过多次转载而造成文章内容缺失、错误或文章作者不详等问题,请您谅解。如有侵犯您的权利,请联系我们,本站会立即予以处理。

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答