ORACLEのメモリ(アーキテクチャ編)www.doppo1.netORACLEのメモリ(アーキテクチャ編)oracleデータベースが使用するメモリは以下のように分類されます。area)SGAとはoracleの全てのプロセスが参照する領域で、さらに目的別に主に以下のような領域に分けられています。バッファキャッシュDISKから読み込んだデータブロックを保存している領域です。データをメモリ上に置いておくことで処理速度の向上を図っています。共有プールSQLの解析情報やディクショナリキャッシュ等を保存している領域です。ラージプール共有サーバ接続時のUGA等で利用される領域です。ログバッファREDOが最初に書き込まれる領域です。ログバッファの内容をREDOログファイルに書き出しログバッファがクリアされます。JAVAプールJAVAストアドプロシージャ実行時のJAVAの情報を保存している領域です。area)PGAとはoracleデータベースを構成する各プロセスが占有している(共有メモリのように他のプロセスからアクセスされない)メモリ領域です。プロセス毎に確保されるサイズは異なりますが、基本的に非常に大きくなるのはSQL実行時にソートやハッシュ結合を行うタイミングです。area)UGAとは主にSQLのソートや表結合などの処理で利用される領域です。UGAは専用サーバ接続であればPGA、共有サーバ接続であればラージプールの中から確保されます。SGAは初期化パラメータやOSによって実装方法が異なります。ログライター等のバックグラウンドプロセスはプロセスと名がついていますが実際にはスレッドとして実装されています。従ってインスタンス全体のメモリ使用量(SGA+PGA+OS関連の領域)=oracle.exeプロセスのメモリ使用量となります。UNIX系OSの場合インスタンス全体のメモリ使用量はインスタンスを構成する全プロセスが占有するメモリと共有メモリ(SGA)の合計値になります。自動メモリ管理機能が無効な場合SGAは作成した共有メモリを自身のプロセスのアドレス空間にmapすることで実装されます。共有メモリはOSによっては実装が異なるかもしれませんがLinuxでは通常物理メモリに読み込まれた共有メモリ領域はusedではなくcachedとして計上されます。このため、ORACLEのメモリ使用量を確認する場合はusedだけではなくcachedの領域も考慮する必要があります。ラージページ(ヒュージページ)の設定を行い1ページのメモリサイズを変更している場合はcachedではなくusedとして計上されます。oracleからみたoracleのメモリ以下のようなoracleの機能でoracleが確保したメモリ使用量を確認することができます。OSレベルではこのほかにスタックやテキスト領域等が含まれることからOSレベルの値と比較すると多少小さくなります。SGA以下のSQLで確認可能です。v$sgasqlplusで以下を実行しても同じ結果が得られます。memory)に該当するVALUEといった項目から確認します。確認することができます。Set」で確認します。Explorer」や「VMMap」で確認できます。※・・・メモリ使用量ではありません。上述の通りインスタンスは複数のプロセスによって構成されていることからインスタンス全体のメモリ使用量はSGAと各プロセス固有のメモリ使用量を合計する必要があります。auxやtopコマンドなどで表示される各プロセスのメモリサイズは複数プロセスが共有するSGA領域も合わせた値が表示され単純に合計するとSGAの領域が重複して計上されるため、メモリ使用量を確認する場合はこの重複分を差し引く必要があります。/proc/sys/vm/drop_caches)した状態です。VSZは予約されたメモリ領域(KB)で全てのプロセスのVSZが600MB程ですがこれは全プロセスが同じメモリ領域を参照している共有メモリ領域(約500MB)やテキスト領域やロードライブラリ等の領域(約100MB程度)が含まれているためです。ora_j001_ORCL102物理メモリ上に確保されたSGA(共有メモリ)の領域はcachedとして計上されています。cachedが340M程、usedが40M程減少したことから物理メモリ上にSGAは340M程、PGAは40MB程度使用していたことがわかります。(SGAを500MBで設定してもインスタンス起動直後に500MB分の物理メモリを確保するわけではありません。一般的なプログラムと同様に該当のメモリページへアクセスが必要になったタイミングでメモリが確保されます。(その予約サイズ(※)と物理メモリに乗っているサイズ)を利用する方法などがあります。コマンドで共有メモリのサイズを確認することができます。本サイトはリンクフリーです。本サイトの情報により発生した問題等については一切責任を負えません。管理人への連絡はftpsaba0123@hotmail.comまでどうぞ。