ORA-39806: The attempt to lock string parent table string string string failed. ORACLE 报错 故障修复 远程处理
文档解释
ORA-39806: The attempt to lock string parent table string string string failed.
Cause: While loading the child table of a partitioning referential constraint, the parent table must be locked in SHARE mode.
Action: Determine why the parent table could not be locked and retry.
ORA-39806错误指出,数据库尝试锁定某个父表时失败了。
官方解释
常见案例
一般处理方法及步骤
1.查看表中是否有行锁竞争,可以通过执行以下查询来检查:
“`
SELECT e.sid, e.serial#, o.Object_name, o.object_type, e.row_wait_obj#
FROM V$SESSION e, DBA_OBJECTS o
WHERE e.row_wait_obj# = o.Object_id
and e.row_wait_file# = o.Data_object_id;
“`
2.降低当前会话的行锁争用,可以采用以下操作:a.增加锁等待,b.扩大更新或 delete 语句的范围以一次处理多个行,c.尽量避免使用多次更新语句。
3.如果没有行锁争用,则可能是由于数据库本身的问题导致的,此时检查正在执行更新操作的会话。可以通过执行以下查询来检查正在执行操作的会话:
“`
select SID,serial#,pstate,sql_id
from v$session
where blocking_session is not null;
“`
4.停止会话并重启数据库:若以上方法无效,可以停止检查出的会话,并重启数据库,以释放锁定的行。