文档解释
ORA-31105: User does not own lock with supplied token “string”
Cause: The lock corresponding to the supplied token is not owned by the user.
Action: Log on as correct user. Supply correct token.
ORA-31105表示用户不拥有以指定令牌指定的锁。此错误可在以下情况下发生:
1)当您试图使用DBMS_UTILITY.RELEASE_GLOBAL_LOCK函数释放全局锁时;
2)当您尝试将全局锁赋予另一用户时;
3)当您尝试将公共锁赋予另一用户时。
官方解释
ORA-31105表示用户不拥有以指定令牌指定的锁。操作失败是因为指定的用户不拥有使用指定的令牌生成的锁。
常见案例
ORA-31105错误并不常见,但是当尝试释放全局锁或转移全局/公共锁时,您仍然可能会遇到它。
一般处理方法及步骤
要解决此问题,您需要找出正在使用指定令牌持有的锁的用户。您可以使用以下语句找出持有锁的用户:
SELECT sid, owner FROM dba_lock_using_token WHERE token= ‘string’
您可使用kill session函数中断持有锁的用户的会话:
ALTER SYSTEM KILL SESSION ‘&sid, &scn’