プライマリ・コンテンツに移動
Oracle® Database 2日でデータベース管理者
12c リリース1 (12.1)
B71307-08
目次へ移動
目次
索引へ移動
索引

前
次

5.4.2 自動メモリー管理の有効化

データベースのインストールおよび構成時に自動メモリー管理を有効化しなかった場合は、熟練したDBAが明確な理由によりメモリー・サイズを手動でチューニングする場合を除き、インストール後に有効化することをお薦めします。自動メモリー管理では、Oracleインスタンスがすべてのメモリー・コンポーネントを動的にチューニングし、ワークロードの変化に合わせてパフォーマンスを最適化します。

自動メモリー管理を有効にするには、次の手順を実行します。

  1. SQL*Plusを起動して、SYSDBAユーザーとしてデータベースに接続します。

  2. MEMORY_TARGETの最小値を次の方法で計算します。

    1. 次のSQL*Plusコマンドを入力して、SGA_TARGETおよびPGA_AGGREGATE_TARGETの現行サイズを確認します。

      SHOW PARAMETER TARGET
      

      SQL*Plusによって、すべての初期化パラメータの値が、パラメータ名にTARGETが付加されて表示されます。

      NAME                          TYPE        VALUE
      ------------------------------ ----------- ----------------
      archive_lag_target             integer     0
      db_flashback_retention_target  integer     1440
      fast_start_io_target           integer     0
      fast_start_mttr_target         integer     0
      memory_max_target              big integer 0
      memory_target                  big integer 0
      parallel_servers_target        integer     32
      pga_aggregate_target           big integer 29M
      sga_target                     big integer 356M
      

      または、初期化パラメータの表示と変更の説明のとおり、Oracle Enterprise Manager Database Express (EM Express)の「初期化パラメータ」ページの「検索」フィールドにTARGETと入力し、すべての初期化パラメータの値を文字列TARGETとともにパラメータ名に表示できます。

    2. 次の問合せを実行して、データベースの起動以降に割り当てられた最大インスタンス・プログラム・グローバル領域(PGA)を確認します。

      SQL> select value from v$pgastat where name='maximum PGA allocated';
            
                 VALUE
            ----------
             246844416
      

      246844416バイトは約235Mです。

    3. 手順2.bおよびPGA_AGGREGATE_TARGETの問合せの結果を比較して最大値を算定します。この値にSGA_TARGETを加算します。

      memory_target = sga_target + max(pga_aggregate_target, maximum PGA allocated)
      

      たとえば、前述のようにSGA_TARGETが356M、PGA_AGGREGATE_TARGETが29Mで、割当て済の最大PGAが235Mと確認された場合、MEMORY_TARGETは591M (356M + 235M)以上にする必要があります。

  3. 使用するMEMORY_TARGETの値を選択します。

    この値は、手順2で計算した最小値にするか、または使用可能な物理メモリーが十分ある場合はこれより大きい値を使用できます。

  4. MEMORY_MAX_TARGET初期化パラメータについては、予測可能な範囲で、データベースに割り当てる予定の最大メモリー量に決定します。つまり、システム・グローバル領域(SGA)とインスタンスPGAのサイズの合計の最大値を確認します。この値は、前述の手順で選択したMEMORY_TARGETの値以上に設定できます。

  5. 次のいずれかを行います:

    • Oracle Databaseインスタンスをサーバー・パラメータ・ファイルを使用して起動(Database Configuration Assistant (DBCA)を使用してデータベースを作成した場合のデフォルト)した場合は、次のSQL*Plusコマンドを入力します。

      ALTER SYSTEM SET MEMORY_MAX_TARGET = nM SCOPE = SPFILE;
      

      nは手順4で計算した値です。

      SCOPE = SPFILE句を指定すると、サーバー・パラメータ・ファイル内の値のみが設定され、実行中のインスタンスに対する値は設定されません。MEMORY_MAX_TARGETは動的な初期化パラメータではないため、このSCOPE句を組み込む必要があります。

      または、初期化パラメータの表示と変更の説明のとおり、EM Expressの「初期化パラメータ」ページでMEMORY_MAX_TARGET初期化パラメータを選択して、「設定」をクリックし、SPFileの「有効範囲」を指定して新しい値を設定できます。

    • インスタンスをテキスト形式の初期化パラメータ・ファイルを使用して起動した場合は、ファイルを手動で編集して次の文を組み込みます。

      memory_max_target = nM (650M for this example)
      memory_target = mM (591M for this example)
      

      nは手順4で決定した値、mは手順3で決定した値です。

      注意:

      テキスト形式の初期化パラメータ・ファイルでは、MEMORY_MAX_TARGETの行を省略してMEMORY_TARGETの値を指定した場合、データベースによって、MEMORY_MAX_TARGETMEMORY_TARGETの値に自動的に設定されます。MEMORY_TARGETの行を省略してMEMORY_MAX_TARGETの値を含める場合、MEMORY_TARGETパラメータのデフォルトは0になります。起動後、MEMORY_MAX_TARGETの値を超えないかぎり、MEMORY_TARGETを0以外の値に動的に変更できます。

  6. データベースを停止して再起動します。

    Oracleインスタンスの停止および起動を参照してください。

  7. EM Expressの「構成」メニューから「メモリー」を選択します。

    メモリー管理ページが表示されます。「メモリー設定」セクションの「メモリー管理」の値は「自動」です。これは、自動メモリー管理がデータベースに対して有効であることを示しています。このページに表示される初期化パラメータは、MEMORY_MAX_TARGETに加え指定された値です。

  8. Oracle Databaseインスタンスをサーバー・パラメータ・ファイルを使用して起動した場合は、次の初期化パラメータ値にこれらの変更を加えます。

    MEMORY_TARGET = nM; (591M for this example)
    SGA_TARGET = 0;
    PGA_AGGREGATE_TARGET = 0;
    

    これらの初期化パラメータの値は、EM Expressの「初期化パラメータ」ページでSPFileの範囲を指定して設定することも可能です。詳細は、初期化パラメータの表示と変更を参照してください。

    注意:

    この手順では、SGAとインスタンスPGAのサイズが必要に応じて制限なくチューニングされるように、SGA_TARGETPGA_AGGREGATE_TARGETを0(ゼロ)に設定するように指示しています。これらのパラメータ値を0(ゼロ)に設定する文を削除し、いずれかまたは両方の値を正数にしておくことができます。この場合、値はSGAまたはインスタンスPGAのサイズの最小値として機能します。

関連項目:

メモリー管理について