ENQUEUE SQ的使用
当用户的SQL触发ORACLE需要填充或初始化SEQUENCE CACHE序列缓存时需要申请该SQ Enqueue 以便保护sequence的高水位,SEQUENCE CACHE以KGL sequence object形式存在,其通过查询row cache字典缓存数据中的元数据而获得填充,例如一个SELECT会递归地访问字典表。
减少该ENQUEUE SQ的争用
- shared pool空间的不足可能直接导致该SQ ENQUEUE的争用,因为shared pool的空间不足可能导致sequence元数据被频繁刷出共享池。
- 用户可以尝试使用dbms_shared_pool.keep()来保持该sequence保存在shared pool中
- 可以为SEQUENCE增加 cache参数,由此减少填充该KGL对象的次数,则同样的申请ENQUEUE的次数会减少
ID1/ID2
ID1 代表对应的sequence的object_id , ID2总是0