内容阅读
在知识库中专注阅读,并随时返回相关工具与课程
ORA-04020严重锁
尝试锁定对象时检测到死锁
Deadlock detected while trying to lock object
错误描述
尝试获取数据库对象的库缓存锁时检测到死锁。
可能原因
- 在同一对象上的并发 DDL 操作
- 会话之间编译 PL/SQL 对象时的循环依赖
- 并发访问期间的包失效
解决方案
- 1重试操作
- 2序列化同一对象上的 DDL 操作
- 3在低活动期间编译对象
诊断命令
SELECT sid, serial#, event FROM v$session WHERE event LIKE '%library cache%';SELECT * FROM dba_ddl_locks WHERE name = '<OBJECT_NAME>';#lock#deadlock#library-cache#ddl