L
o
a
d
i
n
g
.
.
.

ホーム

お知らせ

製品・ソリューション

サービス

導入事例・パートナー

EXEM Academy・ブログ

会社情報

採用情報

2018.12.12

OPTIMIZER INVALIDATION PERIOD

目次

  • 1. 基本情報
  • 2. 注意
  • 3. 関連情報


  • 基本情報


    パラメータ情報

    Syntax   : _OPTIMIZER_INVALIDATION_PERIOD
    設定方法  : ・Parameter File
          ・ALTER SYSTEM SET “_OPTIMIZER_INVALIDATION_PERIOD” = 18000
          ・ALTER SESSION SET “_OPTIMIZER_INVALIDATION_PERIOD” = 18000
    

    バージョンとデフォルト
    9iR2 : -
    10gR1: 18000
    10gR2: 18000
    11g: ?
    


    説明

    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動作は以下の通りです。

    ・NO_INVALIDATE= False:統計情報の変更時に関連するSQL Cursorがすぐにinvalidationされます。
                 9iからのデフォルトです。
    
    ・NO_INVALIDATE= True:統計情報の変更時に関連するSQL Cursorをinvalidationしません。
                SQL CursorがShared PoolからFlushされた後、Reloadされる変更された統計情報が
                反映されます。
    
    ・NO_INVALIDATE= DBMS_STATS.AUTO_INVALIDATE:統計情報の変更時に関連するSQL Cursorを一定時間
              (_OPTIMIZER_INVALIDATION_PERIOD)にかけて均等に(ランダムに)invalidationします。
              10gでのデフォルトです。厳密に言えば、既存SQL Cursorをinvalidationさせるのではなく、
              新しいChild Cursorを生成します。生成されたChild CursorをV$ SQL_SHARED_CURSORビューで
              照会してみるとroll_invalid_mismatchによってMismatchが発生したものとして処理されることを
             確認することができます。
    


    注意


    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パラメータの値を減らすことです。

    alter system set "_optimizer_invalidation_period" = 1;
    


    関連情報

    1. DBMS_STATSパッケージ
    

PHP Code Snippets Powered By : XYZScripts.com