電子書籍の厳選無料作品が豊富!

Windows 32BitOS上で稼動するOracleのメモリの上限についての質問です。

現在、2台のクラスタで構成されたWindowsServerのOracleデータベースの移行を検討しております。

移行するサーバのスペックは以下の通りです。

OS:Windows2000 AdvancedServer(32Bit)
2台のOFSを使用したクラスタリング構成(アクティブ・スタンバイ)
DB:Oracle 9i
搭載CPU:Xeon2.80GHz ×2
搭載メモリ:2.6GB

新規に構築するサーバは以下の構成を検討しています。
OS:Windows2003Server EnterPriseEdition(32Bit)
2台のOFSを使用したクラスタリング構成(アクティブ・スタンバイ)
DB:Oracle 9i
搭載CPU:Xeon2.93GHz(4Core)
搭載メモリ:4.0GB

要件として、OracleのVersionUp、64Bitへの変更の検証が出来ないとなった為、上記構成になりました。
現在、複数のDBインスタンスをクラスタグループ化して稼動させています。


移行にあたって、DBインスタンスを増やしたいという要件が出た為、合わせて新規構築するサーバのメモリの増強を検討しております。

そこで、32BitOS上での4GB以上のメモリの搭載について質問させて下さい。


Windows2003Server EnterPriseEdition(32Bit)では、最大64GBまでメモリを搭載できますが、32Bitで作成されたアプリケーションでは、1プロセスあたり最大2GBまでしか使用出来ないという点までは認識しております。

この、最大2GBという制約はOS上のプロセス一つ一つが2GB以上メモリを使用出来ないという認識であっていますでしょうか。
Oracleサーバ上で複数のDBインスタンスを稼動させた場合、プロセス:Oracle.exeが複数起動することになりそれぞれのメモリの使用量が2GBまでと考えております。

その為、1インスタンスで2GB以上のメモリを消費するようなアプリケーションの構築は32Bitのアプリケーションという時点で不可能だと思いますが、複数のインスタンスを稼動させる(=複数のOracleプロセスを立ち上げる)場合、4GBを超えて大量のメモリを搭載することは意味があると考えています。
※この場合、4GBという数字自体は意味が無いと思います。


CPU、DiskI/O等、Networkその他が、システムのボトルネックにはならないという前提で考えた場合、この観点で32BitOSでメモリの増強を検討するという認識は合っていますでしょうか。

以上、宜しくお願いいたします。

A 回答 (2件)

このあたり、私もMSのKB等で見聞きしただけなので、間違っているかもですが…



まずAWEについては、先の回答で紹介したページの以下の部分を見ていただければ概要がわかるかと思います。

----
AWE は、メモリ マネージャ機能を利用するための一連の API (アプリケーション プログラミング インターフェイス) です。プログラムで AWE を使用することにより、標準の 32 ビットのアドレス指定によって使用可能な 4 GB を超えるメモリをアドレス指定することができます。
----
----
AWE は、プログラムが大きなメモリ範囲を予約するための API です。
----
----
4 GB を超えるメモリの範囲は、PAE によってメモリ マネージャと AWE 機能に公開されます。PAE がなければ、AWE は 4 GB を超えるメモリを予約できません。
----

つまり、PAEにてOSが4GB超のメモリを管理できる様にし、AWEでプロセスが2GB(カーネル空間含めると4GB)のプロセス空間を超えてメモリを確保できるようにする、という物です。

AWEがAPIである以上、これに対応しているかどうかはアプリケーションに依存します。
Oracle9iがAWEに対応しているかどうかは、Oracleに聞けば教えてくれるかと思います。


余談ですが、x64版OS上で32bitアプリケーションを実行する場合、アプリケーションには4GBの「実メモリ空間」が割り当てられるそうです。
http://itpro.nikkeibp.co.jp/article/COLUMN/20051 …
    • good
    • 0
この回答へのお礼

>Toshi0230さん
ご回答有難うございます。

やはりそういうことなんですね。
PAEとOracleのAWEを使用するのであれば、当然その機能の検証も必要になり・・・・・・。
結局64Bitの検証を含めて提案したほうが良さそうですね。


私の認識では、プロセスが要求したメモリに対して、実メモリ(もしくは仮想メモリ)のどの部分を割り当てるのかはOSの仕事という認識があった為、OSさえ4GB以上を認識していれば複数の個々のプロセスは4GBを超えたアドレス範囲のメモリ空間に配置できる、と思ってました。

実際はやはりアプリケーション自体が直接4GBを超えるアドレスを指定出来ないとユーザープロセスの合計が2GBという制約からは逃れられないといったところでしょうか。

PAEの設定のみで大丈夫なのであれば提案も出来そうだったのですが・・・。


思いつく手としては、実メモリを5GB搭載しPAEと3GBスイッチを使用しユーザープロセスは3GB、カーネルプロセスは2GBというようなことが出来ないのかな?と考えていますが、もう少し勉強してみます。






x64版OS上で32bitアプリの話は初耳でした。でも実際にそういった構成ってありえるのかな?と思います。

お礼日時:2010/08/06 09:53

>最大2GBという制約はOS上のプロセス一つ一つが2GB以上メモリを使用出来ない



その通りです。

> 複数のインスタンスを稼動させる(中略)場合、4GBを超えて大量のメモリを搭載することは意味がある

確かWindowsではOracle 1インスタンスが1つのWindows サービスとして動作していましたよね。で有れば意味はあると思います。

このあたりの情報は私の回答よりは以下のサポートページを見て頂く方が説得力有ると思います。

http://support.microsoft.com/kb/283037/ja

まぁ、個人邸には64bit OS上でOracleを動作させるとかOracleも64bit版にするとかができるのであればそうしたいと思いますが…色々あるのでしょうからこれ以上は突っ込みません:-)
    • good
    • 0
この回答へのお礼

>Toshi0230さん
回答ありがとうございます。

64bitOSにしたり、Oracleも64Bitにしたり・・・とは本当は私もやりたいのですがOracleDBを保守・運用しているのが弊社ではない為、他社の工数の言いなりになってしまうという・・・。愚痴っても仕方ありませんね。



もし、ご存知でしたら補足で質問させて下さい。

WindowsのBoot.iniのPAEスイッチをONにして、OS上で4GB以上のメモリを認識させる必要があるということまでは理解しております。

その上で改めて疑問なのですが、OS上のメモリを2GB以上で使用する為のAWE(Address Windowing Extensions)の設定とはプロセス(アプリケーション)毎の設定値なのでしょうか、それともOS全体の設定なのでしょうか。
参考資料に書かれている、アプリケーションで2GB以上のメモリを使用するにはAWEの設定を行ったアプリケーションプログラムでなくてはならないという文章をいたるところで発見するのですが、今回のように複数、大量のプロセスを使用した場合についての記述が見当たりませんでした。



例:PAEスイッチを使用して8GBのメモリをOS上に認識させた場合のプロセス
Oracle.exe(1) 使用メモリ 1.5GB
Oracle.exe(2) 使用メモリ 1.5GB
Oracle.exe(3) 使用メモリ 1.5GB
Oracle.exe(4) 使用メモリ 1.5GB

Oracleプロセスに限ったことでは無いと思うのですが、上記のようなプロセスが同時に1サーバ上で稼動すると合計は6GBを実メモリ上から使用しようとすることになります。
現時点では一つ一つのプロセスが2GBを超えていない為、AWEの特別な設定が必要では無いと認識しておりますが合っていますでしょうか。

AWE設定とはOS上にある2GB以上(ユーザースペースとして)のメモリ空間を使用する為の設定なのか、1プロセスが2GB以上のメモリ空間を使用する為の設定なのかという点について疑問が解消出来ませんでした。


もし、ご存知でしたら宜しくお願いいたします。

お礼日時:2010/08/05 10:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!