当前所在位置:珠峰网资料 >> 计算机 >> Oracle认证 >> 正文
Oracle认证综合辅导:Oracle数据库错误ORA-01591
发布时间:2012/9/5 22:34:57 来源:城市网学院 编辑:admin
   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;
    #mit 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;
    #mit;
    生成批量语句:
    begin
    for r in (select local_tran_id   from dba_2pc_pending t
    where t.state = 'collecting‘) loop
    --dbms_output.put_line('#mit 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(‘#mit;’);
    end;
    4.执行失败,还一种情况可以尝试下重起一下Oracle服务,这种情况我遇到过一次,重新启动后该锁自动解除(因为对删除数据字典比较担心,所以胡乱试了一次重启数据库,前提是执行了#mit force LOCAL_TRAN_ID;失败之后重新启动)。
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved