ORA-25351: transaction is currently in use

文档解释

ORA-25351: transaction is currently in use

Cause: The transaction is currently used by a different session.

Action: Do not switch to a transaction attached to some other session.

ORA-25351 错误表明当前正在使用的事务正在被另一个事务占用或延续。

官方解释

ORA-25351被触发时,说明其他 session 正在使用此事务。

常见案例

有时候,程序会在一个会话中启动事务,但忘记关闭事务。如果该会话在没有明确关闭事务之前意外断开连接,则这个事务会始终是激活状态。在这种情况下,其他会话尝试使用该事务时,会触发ORA-25351。

一般处理方法及步骤

1. 找到当前正在使用的事务的会话 ID,使用以下语句:

SELECT SI.USERNAME, SI.SID, SI.SERIAL#,

SUB.XIDUSN, SUB.XIDSQN, SUB.FLAG,

SUB.REFERENCE_ADDRESS

FROM V$SESSION SI, V$TRANSACTION SUB

WHERE SI.SID = SUB.SES_ADDR;

2. 将查看到的会话 ID 关闭:

ALTER SYSTEM KILL SESSION ‘sid, serial#’;

3. 验证事务是否仍处于激活状态,使用:

SELECT SI.USERNAME, SI.SID, SI.SERIAL#,

SUB.XIDUSN, SUB.XIDSQN, SUB.FLAG,

SUB.REFERENCE_ADDRESS

FROM V$SESSION SI, V$TRANSACTION SUB

WHERE SI.SID = SUB.SES_ADDR;

如果当前事务已完成,则不会再显示出当前异常情况,应该可以正常使用事务了。

你可能感兴趣的