今天一个朋友遇到的问题,告警日志中出现如下信息: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)