Oracleのメモリを確認

これまで Oracle インスタンスのメモリ関連の初期化パラメータには、
(1) を使用していたが、Oracle11g より (2) のパラメータが追加された。

  • (1):sga_target、sga_max_size、pga_aggregate_target
  • (2):memory_target、memory_max_target
  • 自動調整機能が実装された

    以前は各プールサイズまで細かく設定していたものが、徐々に管理機能され
    ついに SGA と PGA の管理まで自動調整可能となったというわけ。

    Oracle11g 以降では従来通り (1) で SGA と PGA の垣根を管理しても良いし、
    (2) で全体のチューニングを任せても良し。両方がサポートされている。

    【例】Oracle 用メモリに2GB割り当て

    memory_target = 2000MB
    memory_max_target = 2000MB
    sga_max_size = 0
    sga_target = 0
    pga_aggregate_target = 0
    

    と設定されている場合、起動時には SGA に 60%(1200MB)、PGA に 40%(800MB) 割り振られ、
    その後リソースの使用状況に応じて自動チューニングされる仕様となっている。

    値の変更方法

    これまでと同様、alter system set で行う。

    SQL コマンド

    SQL> alter system set memory_target = <サイズ> scope = spfile;
    
    SQL> alter system set memory_max_target = <サイズ> scope = spfile;
    

    で変更する。この値はインスタンス再起動後に有効となる。

    ・Oracle 再起動

    SQL> shutdown immediate
    
    SQL> startup
    

    ・memory パラメータの反映を確認

    SQL> show parameter memory_
    

    以上で完了。

    メモリチューニング

    Oracle まかせの自動調整となり、以前と比べて非常に楽になった。
    しかしその反面、バッファ単位で細かく設計、チューニングが必要だった頃に
    重宝された DBA スキルも、求められる「もの」が変わってきている。

    関連記事