データベースのインストールおよび構成時に自動メモリー管理を有効化しなかった場合は、熟練したDBAが明確な理由によりメモリー・サイズを手動でチューニングする場合を除き、インストール後に有効化することをお薦めします。自動メモリー管理では、Oracleインスタンスがすべてのメモリー・コンポーネントを動的にチューニングし、ワークロードの変化に合わせてパフォーマンスを最適化します。
自動メモリー管理を有効にするには、次の手順を実行します。
SQL*Plusを起動して、SYSDBA
ユーザーとしてデータベースに接続します。
MEMORY_TARGET
の最小値を次の方法で計算します。
次の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とともにパラメータ名に表示できます。
次の問合せを実行して、データベースの起動以降に割り当てられた最大インスタンス・プログラム・グローバル領域(PGA)を確認します。
SQL> select value from v$pgastat where name='maximum PGA allocated'; VALUE ---------- 246844416
246844416バイトは約235Mです。
手順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)以上にする必要があります。
使用するMEMORY_TARGET
の値を選択します。
この値は、手順2で計算した最小値にするか、または使用可能な物理メモリーが十分ある場合はこれより大きい値を使用できます。
MEMORY_MAX_TARGET
初期化パラメータについては、予測可能な範囲で、データベースに割り当てる予定の最大メモリー量に決定します。つまり、システム・グローバル領域(SGA)とインスタンスPGAのサイズの合計の最大値を確認します。この値は、前述の手順で選択したMEMORY_TARGET
の値以上に設定できます。
次のいずれかを行います:
Oracle Databaseインスタンスをサーバー・パラメータ・ファイルを使用して起動(Database Configuration Assistant (DBCA)を使用してデータベースを作成した場合のデフォルト)した場合は、次のSQL*Plusコマンドを入力します。
ALTER SYSTEM SET MEMORY_MAX_TARGET = n
M SCOPE = SPFILE;
nは手順4で計算した値です。
SCOPE = SPFILE
句を指定すると、サーバー・パラメータ・ファイル内の値のみが設定され、実行中のインスタンスに対する値は設定されません。MEMORY_MAX_TARGET
は動的な初期化パラメータではないため、このSCOPE
句を組み込む必要があります。
または、「初期化パラメータの表示と変更」の説明のとおり、EM Expressの「初期化パラメータ」ページでMEMORY_MAX_TARGET
初期化パラメータを選択して、「設定」をクリックし、SPFileの「有効範囲」を指定して新しい値を設定できます。
インスタンスをテキスト形式の初期化パラメータ・ファイルを使用して起動した場合は、ファイルを手動で編集して次の文を組み込みます。
memory_max_target =n
M (650M for this example) memory_target =m
M (591M for this example)
注意:
テキスト形式の初期化パラメータ・ファイルでは、MEMORY_MAX_TARGET
の行を省略してMEMORY_TARGET
の値を指定した場合、データベースによって、MEMORY_MAX_TARGET
はMEMORY_TARGET
の値に自動的に設定されます。MEMORY_TARGET
の行を省略してMEMORY_MAX_TARGET
の値を含める場合、MEMORY_TARGET
パラメータのデフォルトは0になります。起動後、MEMORY_MAX_TARGET
の値を超えないかぎり、MEMORY_TARGET
を0以外の値に動的に変更できます。
データベースを停止して再起動します。
「Oracleインスタンスの停止および起動」を参照してください。
EM Expressの「構成」メニューから「メモリー」を選択します。
メモリー管理ページが表示されます。「メモリー設定」セクションの「メモリー管理」の値は「自動」です。これは、自動メモリー管理がデータベースに対して有効であることを示しています。このページに表示される初期化パラメータは、MEMORY_MAX_TARGET
に加え指定された値です。
Oracle Databaseインスタンスをサーバー・パラメータ・ファイルを使用して起動した場合は、次の初期化パラメータ値にこれらの変更を加えます。
MEMORY_TARGET = n
M; (591M for this example)
SGA_TARGET = 0;
PGA_AGGREGATE_TARGET = 0;
これらの初期化パラメータの値は、EM Expressの「初期化パラメータ」ページでSPFileの範囲を指定して設定することも可能です。詳細は、「初期化パラメータの表示と変更」を参照してください。
注意:
この手順では、SGAとインスタンスPGAのサイズが必要に応じて制限なくチューニングされるように、SGA_TARGET
とPGA_AGGREGATE_TARGET
を0(ゼロ)に設定するように指示しています。これらのパラメータ値を0(ゼロ)に設定する文を削除し、いずれかまたは両方の値を正数にしておくことができます。この場合、値はSGAまたはインスタンスPGAのサイズの最小値として機能します。
関連項目: