Oracle 11gR2 からメモリ管理がほとんど自動になっている!
Oracle11gR2のメモリ管理について
Oracleはバージョンアップする度にメモリ管理を自動してきましたが、11gR2になって遂にほぼ自動化といえるレベルになってきました。
11gR2のメモリ管理
Oracle 11gR2 でメモリ管理の初期化パラメターが追加されました。
- MEMORY_TARGET
- MEMORY_MAX_TARGET
MEMORY_TARGETには、Oracleシステム全体の使用可能なメモリーを指定します。
MEMORY_MAX_TARGETには、DBAがMEMORY_TARGET初期化パラメータを設定できる最大値を指定します。
つまり、MEMORY_TARGETでOracleに割り当てるメモリサイズを指定すれば、Oracle Database がSGAやPGAの割り当てを負荷に応じて自動的に伸縮して調整してくれるようになっています。
SGAの使われ方
→ 読み込んだデータをキャッシュして、ユーザー間で共有
PGAの使われ方
→ プログラム毎の情報をキャッシュして、共有はされない
専門知識を有する技術者のチューニングが不要になってきており、データベース管理がますます効率化されてきています。メモリ使用状況はEM(Enterprise Manager)で確認することができ、管理の負荷も大幅に軽減されてます。
もちろん、「自動管理は使いません!」っていうことも可能で、その場合はSGAとPGAに割り当てたいメモリサイズを初期化パラメータにセットすればいいです。
SGA → SGA_TARGET
PGA → PGA_AGGREGATE_TARGET
ちなみに10g のメモリ管理では、SGAとPGAのサイズを指定するようになっていました。
Oracle 10g のメモリ管理
メモリパラメータの変更方法
メモリパラメータの変更方法は他の初期化パラメータと同じです。以下の例は自動管理設定です。
SQL> ALTER SYSTEM SET MEMORY_TARGET = 10240M SCOPE = SPFILE; SQL> ALTER SYSTEM SET MEMORY_MAX_TARGET = 10240M SCOPE = SPFILE; SQL> ALTER SYSTEM SET SGA_TARGET = 0 SCOPE = SPFILE; SQL> ALTER SYSTEM SET PGA_AGGREGATE_TARGET = 0 SCOPE = SPFILE;
メモリ管理を変更する場合はインスタンスを再起動する必要があります。
[oracle@server01:/home/oracle] srvctl stop database -d db01 [oracle@server01:/home/oracle] srvctl start database -d db01
タグ:11gR2, memory_max_target, memory_target, PGA, SGA