文档解释
ORA-07490: scgrcl: cannot convert lock.
Cause: lm_convert failed during lock release/cancel.
Action: Check result code in sercerrno. Possible lock manager failure.
ORA-07490: scgrcl: cannot convert lock: 这个错误意味着当试图将一个给定的普通锁转换为一个子系列(子转换)锁时出现问题,从而导致子转换锁失败。
官方解释:
ORA-07490: scgrcl: cannot convert lock “string”
Cause: An attempt was made to convert a given normal lock to a subseries (sub-enqueue) lock, and this conversion failed. This can happen when the given lock is not a normal lock or the given lock is held by a process other than the one that is making the conversion.
Commonly encountered cases:
1.在多个会话之间活动时,可能会发生此错误。例如,当一个会话已经锁定了一个对象,而另一个会话试图获取锁定此对象时,此错误可能会发生。
2.尝试重新锁定已经被锁定的对象时,也可能发生此错误。
3.在使用ALTER SYSTEM KILL SESSION命令释放其他会话时,可能会发生此错误。
正常处理方法及步骤
1.可以通过kill正在执行的进程来解决此错误。你可以在V$SESSION视图中查找正在执行的进程,然后使用ALTER SYSTEM KILL SESSION命令来关闭它,然后尝试重新锁定:
2.可以尝试使用ORA-60错误处理解决此错误。ORA-60错误指示CDB检测到会话正忙于执行操作,并且执行此操作会导致数据库损坏,因此拒绝执行该操作,并返回此错误。 你可以使用ORA-60错误处理,在1-5分钟内杀掉会话,并让它重新尝试重新锁定:
3.可以通过重启数据库来释放会话锁定的对象。但是,这是最后的解决方案,因为它会导致整个系统的停机,或者会占用大量时间并不能立即恢复(尤其是如果数据库体积大时)。