本站中文解释
Oracle事件library cache lock用于监控当前session正在执行查询时发生锁冲突的次数。该事件是应用在 Shared Pool区域,其中存储共享SQL语句和PL/SQL块。
当某个用户session请求执行某个SQL或PL/SQL时,首先会检查当前是否以前的用户已经存在请求的SQL或PL/SQL,如果存在则会检查当前Session是否具有对该对象的 写入/读取 锁,如果存在锁定,则Oracle会记录library cache lock事件中,表示发生过锁冲突,直至该资源被释放。
为了避免因为library cache lock事件引起的数据库性能问题,用户可以通过优化SQL语句来减少library cache lock事件的发生,从而提高数据库的系统性能。
另外,用户还可以通过查询V$SESSION_WAIT视图,来获取当前正在等待获取到library cache lock的session,进而解决性能问题。
通过Oracle的 ALTER SYSTEM 命令,也可以修改某些参数,以控制library cache lock事件发生的频度,比如_zone_reclaim_threshold参数可以控制library cache lock事件发生的次数;而_shrink_blanket_segment_limit参数则可以控制library cache lock事件发生的总数。
官方英文解释
This event controls the concurrency between clients of the library cache. It acquires a lock on the object handle so that either:
-
One client can prevent other clients from accessing the same object
-
The client can maintain a dependency for a long time (for example, no other client can change the object)
This lock is also obtained to locate an object in the library cache.
Wait Time: 3 seconds (1 second for PMON)
Parameter | Description |
---|---|
handle address |
Address of the object being loaded |
lock address |
Address of the load lock being used. This is not the same thing as a latch or an enqueue, it is a State Object. |
mode |
Indicates the data pieces of the object which must be loaded |
namespace |
See “namespace” |
See Also:
-
Oracle Database
Performance Tuning Guide for more information about this wait event -
Oracle Database
Performance Tuning Guide for more information about potential causes of this wait event