DBAtlas · 数据库运维图谱

ORA-04021: timeout occurred while waiting to lock object(等待锁定对象时超时)

Oracle

含义

在等待获取对象(包、过程、类型等)上的 library cache lock/pin 时发生超时。通常在试图编译或修改正被另一会话执行或锁定的 PL/SQL 对象时出现。

原因

要修改/编译的对象正在另一个会话中执行,或被另一个 DDL 锁定,因此无法获取排他的 library cache 锁。长时间运行的过程调用或挂起的会话可能正持有该锁。

解决方法

找出锁定该对象的会话:SELECT * FROM dba_kgllock WHERE kgllkhdl IN (SELECT p1raw FROM v$session WHERE event LIKE 'library cache%'); 或用 v$access 和 v$session 找出正在使用该对象的会话。在负载较低的维护窗口内重试 DDL/编译。必要时安全地终止该会话。短暂停止应用可以更容易地获取锁。

在 DBAtlas 中打开 →

同一数据库的其他条目