今天早上发现查询某些特定数据的时候发现提示“ORA-01591 锁定已被有问题的分配事务处理XXXX挂起”
1.使用SYS用户登录
2.执行语句
SELECT KTUXEUSN,
KTUXESLT,
KTUXESQN, /* Transaction ID */
KTUXESTA Status,
KTUXECFL Flags
FROM x$ktuxe
WHERE ktuxesta != 'INACTIVE'
AND ktuxeusn = xx;--比如锁是7.8.85772,xx就是7
KTUXESLT,
KTUXESQN, /* Transaction ID */
KTUXESTA Status,
KTUXECFL Flags
FROM x$ktuxe
WHERE ktuxesta != 'INACTIVE'
AND ktuxeusn = xx;--比如锁是7.8.85772,xx就是7
会发现状态为PREPARED的死事务
3.执行语句
SELECT local_tran_id, global_tran_fmt, global_oracle_id,
global_foreign_id, state, status, heuristic_dflt,
session_vector, reco_vector,
global_commit#
FROM PENDING_TRANS$;
global_foreign_id, state, status, heuristic_dflt,
session_vector, reco_vector,
global_commit#
FROM PENDING_TRANS$;
查到这个事务的信息
4.执行回滚或者提交该事务
COMMIT FORCE "8.47.144854";
或者
ROLLBACK FORCE "8.47.144854";
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/518723/viewspace-683653/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/518723/viewspace-683653/