Welcome 微信登录

首页 / 数据库 / MySQL / ORA-1591 (分布式事务处理案例)

今天一个朋友遇到的问题,告警日志中出现如下信息:ORA-1591:lockheldbyin-doubtdistributedtransaction1.92.66874查询dba_2pc的表,发现没有分布式事务信息:selectlocal_tran_id,statefromdba_2pc_pending where local_tran_id="1.92.66874";no rowsselected但是去查实际的rollback segment信息,却发现有prepared状态的分布式事务存在:SELECTKTUXEUSN,KTUXESLT,KTUXESQN,/* Transaction ID */      KTUXESTA Status,KTUXECFL FlagsFROM x$ktuxeWHERE ktuxesta!="INACTIVE"AND ktuxeusn=1;  KTUXEUSN  KTUXESLT  KTUXESQN STATUS          FLAGS---------- ---------- ---------- ---------------- ------------------------        1        92   66874 PREPARED        SCO|COL|REV|DEAD我们无法做commit force或者rollback force:rollbackforce"1.92.66874";ORA-02058:no preparedtransactionfoundwithID1.92.66874遇到这种情况,只能制造虚假数据,再模拟清理未提交的分布式事务;alter system disable distributed recovery; 
INSERT INTO PENDING_TRANS$
  (LOCAL_TRAN_ID,
 GLOBAL_TRAN_FMT,
 GLOBAL_Oracle_ID,
 STATE,
 STATUS,
 SESSION_VECTOR,
 RECO_VECTOR,
 TYPE#,
 FAIL_TIME,
 RECO_TIME)
VALUES
  ("1.92.66874", /* <== 此处为你的local tran id */
 306206, /*                                       */
 "XXXXXXX.12345.1.2.3", /*  这些值不必更改, */
 "prepared",
 "P", /*  是静态参数,可以直接 */
 HEXTORAW("00000001"), /*  在这个sql中使用                           */
 HEXTORAW("00000000"), /*                                       */
 0,
 SYSDATE,
 SYSDATE);
 
INSERT INTO PENDING_SESSIONS$
VALUES
  ("1.92.66874", /* <==此处为你的local tran id  */
 1,
 HEXTORAW("05004F003A1500000104"),
 "C",
 0,
 30258592,
 "",
 146);
commit;ORA-600[4193] 错误解决方法Oracle中的类似BIN$MrkCYT9eTTK+0sStMwn7+Q==$0 的表的作用相关资讯      Oracle错误代码  ORA-1591 
  • Oracle错误代码大全  (02/16/2015 21:31:57)
  • Oracle中登陆时报ORA-28000: the   (03/06/2013 20:06:23)
  • Oracle 11g startup时报ORA-03113  (02/21/2013 17:25:55)
  • Oracle Grid Control OUI-25031错  (03/09/2013 09:01:36)
  • ORA-04091:触发器/函数不能读  (02/25/2013 08:28:13)
  • Oracle错误 ORA-12514 解决方法  (02/18/2013 08:50:10)
本文评论 查看全部评论 (0)
表情: 姓名: 字数