oracleをwindows2000で使う際の注意点

※ oracle8.1.7を対象に書いています。

Windows2000では1プロセスあたりの使用メモリーの最大値が 2GB となっている。
SGA + PGA = 2GB になるとoracle.exeがこの制限に引っかかり、
サーバー側で新たなリスナーを作成できなくなる。= クライアントからみるとoracleに接続できなくなる。


SGA(System Global Area)は (db_block_size * db_block_buffers + shared_pool_size) で求められる。単位は byte。
PGA(Program Global Area)は (sort_area_size + hash_area_size * セッション数) で求められる。単位は byte。


db_block_size、db_block_buffers、shared_pool_size、sort_area_size は init.ora に書かれています。
hash_area_size は書いていない場合がほとんどです。この場合は (sort_area_size * 2 )が hash_area_size になります。
セッション数は「SELECT COUNT(*) セッション数 FROM V$SESSION」を実行することで取得できます。


SGA + PGA がoracleの使用メモリ量となる。


使用メモリ量が2GBを越えたか、越えないかは perfmon.exe を起動し、
[process] – [Virtual Byte] – [oracle](オラクルのプロセス。バージョンによって違うかも)
を選択することで表示される。値が大きいのでグラフの設定を調整する。
タスクマネージャーの oracle.exe の使用メモリは信用しない。


2GBを越えそうになっていたらoracleの設定値の調整が必要。(init.ora)
調整の順は
1.shared_pool_size を減らす。(コンパイル済みSQL文のHIT率が下がる。)
2.db_block_buffers を減らす。(データのキャッシュHIT率が下がる。)
3.sort_area_size を減らす。(ソートにかかる時間が増える。)


db_block_size の値はデータベース作成後には変更できません。
各値を変更した場合、Oracleのサービスの再起動が必要です。


以上

Posted by namahage