
OPTIMIZER INVALIDATION PERIOD - 日本エクセム株式会社 Oracleパラメータ
目次[非表示]
- 1.基本情報
- 1.1.Parameter情報
- 1.2.説明
- 2.注意
- 2.1.10gでの統計情報収集
- 3.関連情報
基本情報
Parameter情報
説明
Oracle10gから統計情報を収集する際に関連SQL Cursorをすぐにinvalidationさせず、一定時間が経過した後invalidationさせます。_OPTIMIZER_INVALIDATION_PERIODパラメータは、この値を決定します。デフォルト値は18000(秒)(=5時間)です。つまり、統計情報の収集によって統計情報が変更された後、約5時間かけてランダムな時点に該当Cursorが実行されるとinvalidationが発生します。これを、Auto Invalidationと呼びます。一定時間にわたってランダムにCursorをInvalidationすることにより、特定の時点でHard Parseが一度に殺到する現象を回避することができます。
DBMS_STATSパッケージを利用して統計情報を収集する際NO_INVALIDATEオプションを利用してSQL Cursorがinvalidationされる時点を指定することができます。NO_INVALIDATEオプションの値によるinvalidation動作は以下の通りです。
注意
10gでの統計情報収集
Oracle10gからno_invalidateオプションのデフォルト値がDBMS_STATS.AUTO_INVALIDATEです。つまり、統計情報を再収集しても関連するSQL Cursorがinvalidateされなません。したがって、統計情報を反映して与えるにShared PoolをFlush(alter system flush shared_pool)しなければなりません。
統計情報の収集の基本的なガイドは、Oracleの基本的な行動様式(すなわちAuto invalidation)を使用しますが、特定のSQL CursorをすぐにinvalidationするSessionレベルで_OPTIMIZER_INVALIDATION_PERIODパラメータの値を減らすことです。