ORA-01591解决方法

简介:  ORA-01591解决方法错误原因:使用了分布式事务,造成这个问题的原因很多时候都是由于网络问题造成的解决办法:1.
 

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;失败之后重新启动)

PS:我建了几个oracle QQ群,欢迎数据库爱好者加入。

Oracle专家QQ1群:60632593    

Oracle专家QQ2群:60618621     

Oracle专家QQ3群:23145225

 


相关文章
|
Oracle 关系型数据库 数据库
|
SQL 关系型数据库 MySQL
ORA-01948和ORA-04052错误的解决方法
一、事件背景: 业务人员在创建一个物化视图的时候,报了以下错误: SQL> CREATE MATERIALIZED VIEW MV_RETAIL_wbmout_R 2 TABLESPACE SAPDATA 3 PCTUSED 0 ...
1824 0
|
SQL Oracle 关系型数据库
【ora 错误及解决方法】ORA-01652
ORA-01652:unable to extend temp segment by num in tablespace name 产生原因:ORACLE临时段表空间不足,因为ORACLE总是尽量分配连续空间,一旦没有足够的可分配空间或者分配不连续就会出现上述的现象。
1192 0
|
关系型数据库 数据库 Windows
|
Oracle 关系型数据库 数据库
|
关系型数据库 数据库 Oracle