AMM自動メモリ管理(11g)

1. 自動メモリ管理に関する新規パラメータ

1.1 MEMORY_TARGET
  • データベースはMEMORY_TARGETに対するメモリーをチューニングして、必要に応じてSGAおよびPGAを削減または増大する。
  • 動的にMEMORY_MAX_TARGETまでに調整できる。
1.2 MEMORY_MAX_TARGET
  • DBAがMEMORY_TARGET初期化パラメータを設定できる最大値を指定する。
1.3 MEMORY_TARGETとMEMORY_MAX_TARGETの関係
  • MEMORY_MAX_TARGET >= MEMORY_TARGET
  • MEMORY_TARGETが設定されているが、MEMORY_MAX_TARGETが設定されていなければ、OracleはデフォルトでMEMORY_MAX_TARGET=MEMORY_TARGETに設定する。
  • MEMORY_TARGETとMEMORY_MAX_TARGETが両方設定していなければ、OracleはMEMORY_MAX_TARGETに「0」を設定する。
  • MEMORY_MAX_TARGET > 0 且つMEMORY_TARGETが設定されていない場合、DBAが動的にMEMORY_TARGETの値を変更できる。
1.4 注意事項
  • LOCK_SGAが設定されていた場合、MEMORY_MAX_TARGETとMEMORY_TARGETが無効になる。
  • LinuxのHuge Pagesが実装されている場合、MEMORY_MAX_TARGETとMEMORY_TARGETが無効になる。
  • Linuxの場合、/dev/shm >= MEMORY_TARGETを保証できなければ、ORA-00845が出る恐れがある。

2. MEMORY_TARGETとSGA_TARGETとPGA_AGGREGATE_TARGETの関係

2.1 関係図
Oracle_11g_memory.JPG
2.2 自動メモリ管理パラメータの関係

MEMORY_TARGET = 0
10gのメモリ管理仕様になる。

MEMORY_TARGET > 0 AND SGA_TARGET > 0 AND PAG_AGGREGATE_TARGET > 0
SGA_TARGET + PAG_AGGREGATE_TARGET <= MEMORY_TARGET <= MEMORY_MAX_TARGET

MEMORY_TARGET > 0 AND SGA_TARGET > 0 AND PAG_AGGREGATE_TARGET = 0
PAG_AGGREGATE_TARGET = MEMORY_TARGET - SGA_TARGET

MEMORY_TARGET > 0 AND SGA_TARGET = 0 AND PAG_AGGREGATE_TARGET > 0
SGA_TARGET = min(MEMORY_TARGET - PAG_AGGREGATE_TARGET , SGA_MAX_SIZE)

MEMORY_TARGET > 0 AND SGA_TARGET = 0 AND PAG_AGGREGATE_TARGET = 0
SGA_TARGET = MEMORY_TARGET*60%
PAG_AGGREGATE_TARGET = MEMORY_TARGET*40%

以上のMEMORY_TARGET > 0 の場合は必要に応じてSGAおよびPGAを削減または増大する。

3. メモリアドバイザー新機能

3.1 V$MEMORY_TARGET_ADVICE

AWRのスナップショットによってMEMORY_TARGETの設定推奨が表示される。
↑MEMORY_TARGETが設定されていない場合、アドバイザー情報が表示されない。

PROD(SYS)> select * from v$memory_target_advice order by memory_size_factor;
 
no rows selected
 
PROD(SYS)> show parameter memory_target
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
memory_target                        big integer 0
PROD(SYS)>

MEMORY_TARGETを有効にした場合は、推奨情報が表示される。SIZE_FACTOR=1の列は現行の設定となる。

PROD(SYS)> show parameter memory_target;
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
memory_target                        big integer 400M
PROD(SYS)> select * from v$memory_target_advice order by memory_size_factor;
 
MEMORY_SIZE MEMORY_SIZE_FACTOR ESTD_DB_TIME ESTD_DB_TIME_FACTOR    VERSION
----------- ------------------ ------------ ------------------- ----------
        400                  1           24                   1          2
        500               1.25           24                   1          2
        600                1.5           26                   1          2
        700               1.75           26                   1          2
 
PROD(SYS)>
3.2 V$MEMORY_DYNAMIC_COMPONENTS

メモリ自動管理機能によって管理されているメモリコンポーネントの一覧が表示される。

SQL> col component format a20
SQL> select component, current_size curr_size, min_size, max_size,user_specified_size uss, granule_size gs 
from v$memory_dynamic_components where current_size > 0;
 
COMPONENT             CURR_SIZE   MIN_SIZE   MAX_SIZE        USS         GS
-------------------- ---------- ---------- ---------- ---------- ----------
shared pool           113246208  113246208  113246208          0    4194304
large pool              4194304    4194304    4194304          0    4194304
java pool               4194304    4194304    4194304          0    4194304
SGA Target            285212672  285212672  301989888          0    4194304
DEFAULT buffer cache  155189248  155189248  171966464          0    4194304
PGA Target            134217728  117440512  134217728          0    4194304
 
6 rows selected.
 
SQL>
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License