当前位置:  数据库>oracle

处理Oracle的分布式事务故障

    来源: 互联网  发布时间:2017-06-27

    本文导语: 最近两天生产数据库一直在报ORA-24756错误,查了MOS上的文档,看到一篇类似的,说是BUG(Bug 19201866 - RECO reports ORA-24756 repeatedly into trace file (文档 ID 19201866.8)),但是HP-UX上的11.2.0.4没有解决需要升级到12.2版本,文档中还说重启实例...

最近两天生产数据库一直在报ORA-24756错误,查了MOS上的文档,看到一篇类似的,说是BUG(Bug 19201866 - RECO reports ORA-24756 repeatedly into trace file (文档 ID 19201866.8)),但是HP-UX上的11.2.0.4没有解决需要升级到12.2版本,文档中还说重启实例也可以解决,但是不现实。

于是查报错时的trace文件都是如下的内容

1
2
3
4
*** 2017-02-04 09:17:56.058
ERROR, tran=42.13.2709343, ose=0:
ORA-24756:
......

看到tran=42.13.2709343,印象中是分布式事务,于是查DBA_2PC_PENDINGS视图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
SYS@db1> COL LOCAL_TRAN_ID FORMAT A13
SYS@db1> COL GLOBAL_TRAN_ID FORMAT A90
SYS@db1> COL STATE FORMAT A10
SYS@db1> COL MIXED FORMAT A3
SYS@db1> COL HOST FORMAT A10
SYS@db1> COL COMMIT# FORMAT A15
SYS@db1> SET LINESIZE 240
SYS@db1> SELECT LOCAL_TRAN_ID, GLOBAL_TRAN_ID, STATE,FAIL_TIME,FORCE_TIME,RETRY_TIME, MIXED, HOST, COMMIT#
  2     FROM DBA_2PC_PENDING
  3  /
 
LOCAL_TRAN_ID GLOBAL_TRAN_ID                                                                             STATE      FAIL_TIME         FORCE_TIME        RETRY_TIME        MIX HOST       COMMIT#
------------- ------------------------------------------------------------------------------------------ ---------- ----------------- ----------------- ----------------- --- ---------- ---------------
42.13.2709343 1096044365.31302E3235352E3233322E32332E746D313438363137313036383638333230333633            collecting 20170204 09:17:55                   20170206 01:12:41 no  bosbpm4s   764631398601

看到LOCAL_TRAN_ID和trace文件中的tran一致,刚开始的设想是正确的。其中FAIL_TIME是20170204 09:17:55对应到后台的alert日志中,看到这个时间前后的报错信息

1
2
3
4
5
6
7
8
9
10
11
12
13
Sat Feb 04 09:17:50 2017
Error 22 trapped in 2PC on transaction 42.13.2709343. Cleaning up.
Error stack returned to user:
ORA-02050: transaction 42.13.2709343 rolled back, some remote DBs may be in-doubt
ORA-00022: invalid session ID; access denied
ORA-02063: preceding line from LINK_DB2
Sat Feb 04 09:17:56 2017
DISTRIB TRAN 41544f4d.31302E3235352E3233322E32332E746D313438363137313036383638333230333633
  is local tran 42.13.2709343 (hex=2a.0d.29575f)
  insert pending collecting tran, scn=764631398601 (hex=b2.079538c9)
Sat Feb 04 09:17:56 2017
Errors in file /Oracle11g/app/oracle/diag/rdbms/db1/db1/trace/db1_reco_23402.trc:
ORA-24756:

这种分布式事务故障可能会锁定数据导致其他事务报ORA-01591报错或者一直占用UNDO段不能被别的事务重用。需要手工处理这种故障。

1
2
3
4
5
6
7
8
9
10
11
12
13
SYS@db1> EXECUTE DBMS_TRANSACTION.PURGE_LOST_DB_ENTRY('42.13.2709343');
 
PL/SQL procedure successfully completed.
 
SYS@db1> commit;
 
Commit complete.
 
SYS@db1> SELECT LOCAL_TRAN_ID, GLOBAL_TRAN_ID, STATE,FAIL_TIME,FORCE_TIME,RETRY_TIME, MIXED, HOST, COMMIT#
  2     FROM DBA_2PC_PENDING
  3  /
 
no rows selected

清理完毕。

管理分布式事务的官方文档:http://docs.oracle.com/cd/E11882_01/server.112/e25494/ds_txnman.htm#ADMIN12252

MOS文档:How to Purge a Distributed Transaction from a Database (文档 ID 159377.1) ORA-30019 When Executing Dbms_transaction.Purge_lost_db_entry (文档 ID 290405.1)


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 解析mysql二进制日志处理事务与非事务性语句的区别
  • EJB中如何处理事务
  • 在jsp或javaBean中如何实现事务处理
  • 事务处理工具 Atomikos
  • MySQL C API中有没有事务处理的函数啊?
  • JBoss事务处理 JBossTS
  • jsp中的如何能像asp中那样进行事务处理?
  • 浅析SQL存储过程和事务处理
  • 求救!有关Ejb中的事务处理!
  • 深入Android SQLite 事务处理详解
  • php事务处理实例详解
  • 有谁在java中做过事务处理(不是在EJB中)?
  • C#事务处理(Execute Transaction)实例解析
  • 在j2ee环境下,如何处理多用户并发活动,是不是用事务来处理,请那位大侠详细说明一下??
  • 为mysql数据库添加添加事务处理的方法
  • c#实现sqlserver事务处理示例
  • mysql 事务处理及表锁定深入简析
  • mysql 锁表锁行语句分享(MySQL事务处理)
  • 经常用到的SQL Server事务处理
  • MySQL事务处理与应用简析
  • c/c++预处理命令预#error介绍
  • 关于linux内核中信号处理的问题?(信号处理的时间)
  • c/c++预处理命令预#undef介绍
  • 如何让批处理文件执行完毕后窗口不关闭,批处理文件直接点击执行
  • c/c++预处理命令预#pragma介绍
  • 视频处理问题,用批处理对视频进行打码
  • c/c++预处理命令预#line介绍
  • 请问如何在unix批处理中得到批处理参数!read吗?急在线等待!
  • c/c++预处理命令预#include介绍
  • 在linux上怎么编写一个模块来提供某个中断的中断处理程序呢?而且有哪些中断可以自己添加中断处理程序呢?
  • Python 3 Tkinter教程之事件Event绑定处理代码实例


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3