担当案件にてユーザプロセスが急増したことがありますが、その際、ユーザプロセスのIDキャッシュサイズが小さいためにenq: SQ - contentionが多発しました。
(そもそもの原因はアプリケーションでしたが、急場しのぎのために設定変更しました)
今回の例では、ユーザプロセスのID発行に関わるキャッシュのサイズを大きくします。
ただし、これは諸刃の剣なので十分注意してください。
理由は、キャッシュサイズが大きくなるということは、キャッシュを使いきってリフレッシュする時のロック時間が長くなるということです。
まず、現在の設定値CACHE_SIZEを確認します。
次のように値を10倍にします。set pages 10000 set lines 120 col SEQUENCE_OWNER for a15 col SEQUENCE_NAME for a15 select * from dba_sequences where sequence_name in ('AUDSES$','IDGEN1$'); SEQUENCE_OWNER SEQUENCE_NAME MIN_VALUE MAX_VALUE INCREMENT_BY CYC ORD CACHE_SIZE LAST_NUMBER --------------- --------------- ---------- ---------- ------------ --- --- ---------- ----------- SYS IDGEN1$ 1 1.0000E+27 50 N N 2000 3.9574E+10 SYS AUDSES$ 1 2000000000 1 Y N 2000 1448207982
SQL> ALTER SEQUENCE SYS.AUDSES$ CACHE 20000; SQL> ALTER SEQUENCE SYS.IDGEN1$ CACHE 20000;
0 件のコメント:
コメントを投稿