李成笔记网

专注域名、站长SEO知识分享与实战技巧

Oracle数据库事务回退处理方式(oracle数据库的事务)

一,问题描述:

在数据库月结过程中,应用层序出现报错如下:

ORA-01591 LOCK held by in-doubt distributed transaction  54.15.22626
   Error:2147217900
   source: OraOLEDDB
   sql state:
   native error 1591
   
Context Information 
machine: TS-QUANTUN
window user: qqsysusers
database qt
SQL statements causing the error


操作系统从月初1月,上午10点后开始持续报错。

第二天发现存储网络不稳定导致两个节点之间切换,决定关闭一个节点重新执行事务月结, 查询仍然有DISTRIBTRAN,,在事务中,失败,重新执行月结功能。

总结:由于网络引起的Oracle 数据库中执行大事务,在分布式数据库中数据传输,导致失败,如果继续执行生产数据库又可能直接宕机,及时给客户说明原因,关闭数据库大事务,重新跑批月结执行。


二、问题处理


2.1.查询数据库中的事务信息:

select * from dba_2pc_pending; 

这时候看到local_tran_id='41.39.330' 的事务。


2.2强行回退

rollback force  '41.39.330'


2.3 再次查询事务状态

select * from dba_2pc_pending; 

2.4 清除此事务信息

delete from sys.pending_trans$ where local_tran_id='41.39.330';
delete from sys.pending_sessions$ where local_tran_id='41.39.330';
delete from sys.pending_sub_sessions$  where local_tran_id='41.39.330';
commit;
exec dbms_transaction.purge_lost_db_entry('41.39.330')

2.5.数据库日志回退分布式事务:

oracle 分布式事务回退处理方式

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言