Oracleのメモリ管理は、バージョンによって大きく異なる!

【この記事の所要時間 : 約 3 分

oracle_11g_00.jpg
Oracleは、バージョンが上がるごとに、データベース管理者が行うメモリ管理が楽になってきている。Oracle 8iまでは、以下でやっているような共有プールやバッファ・キャッシュなどの設定を手動で行わなければならなかった。
Oracle 8i のパラメータチューニング
これは、SGAだけでなく、PGA内のsort_area_sizeやhash_area_sizeでも同様である。しかし、oracle 9i からは、PGAに関しては、pga_aggregate_targetというPGA全体のメモリ量を設定してやるだけで、中身の各種メモリ量は自動で割り当ててくれるようになり、oracle 10gからは、SGAは、sga_targetで総量を指定すれば、そのほかは自動的に適切なメモリ量を割り当ててくれるようになった。
そして、oracle 11gになると、SGAとPGAを合わせたoracleのメモリ全体である memory_targetを指定すれば、あとは適切なメモリ量を自動で割り当ててくれるようになった。 oracle 11gでももちろん手動でメモリ管理を行うことはできるが、自動メモリ管理にしておけば、細かな調整が必要なくなったわけである。
oracle 11gでは、最大メモリサイズ(memory_max_target)と合計メモリサイズ(memory_target)があり、最大メモリサイズ(memory_max_target)を上限として、SGAとPGAの合計である合計メモリサイズ(memory_target)が自動的に伸縮するようになっている。つまり oracle database自身が、最大メモリサイズ(memory_max_target)を上限として、SGAやPGA内の各種パラメータを自動チューニングしてくれるわけである。
サーバをデータベース専用としていれば、OSに割り当てられているメモリの2/3のメモリをOracleに割り当てるのがだいたいの目安であるので、最大メモリサイズ(memory_max_target)をOSメモリの2/3にしておけば、あとはoracleが勝手にやってくれるという楽ちん設計である。
データベースの負荷の応じて、自動的にSGAとPGAの間でメモリの再割り当てを行ってくれるので、特別な仕様のデータベースでない限りは、自動メモリ管理を使うのがいいと思われる。
また、Oracle Database Enterprise Managerには、メモリ・アドバイザーがついていて、適切なメモリ設定のアドバイスもEnterprise Manager上で得られる。
もちろん、いざという時は、コマンドラインを駆使し、各種ログをチェックしながら調査、分析を行った上でのチューニングということになるが、自動メモリ管理を使うことによって、データベース管理の効率化をはかることができる。











Oracleは、Oracleエンジニアのために、技術資料やマニュアル、セミナー動画などをオラクルエンジニア通信というサイトにUPしているので、Oracleのデータベース管理者は目を通しておくことをおススメする。
oracle11g.jpg
より詳しく知りたい方はこちらへ

スポンサーリンク
レクタングル(大)広告
  • このエントリーをはてなブックマークに追加
スポンサーリンク
レクタングル(大)広告

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です