この章では、Oracle Databaseの環境が最善になるように、Windows Serverオペレーティング・システムをチューニングする方法について説明します。
この章の項目は次のとおりです。
注意: 説明を簡単にするために、ここでは、文の中で、サポートされているすべてのWindowsオペレーティング・システムに言及するときは、Windows Serverという総称を使用することにします。 |
Windows Serverオペレーティング・システムで提供されるチューニング調整用の設定は、UNIXよりもかなり少なくなっています。このため、システム管理者がWindows Serverのパフォーマンスの最適化のためにできることは限られますが、一方でWindows Serverは使用しやすいシステムです。
しかし、Windows ServerをOracle Database用のアプリケーション・サーバー環境として、より最適なものにする方法がいくつかあります。この章で説明しているオペレーティング・システム固有の手順を実行すると、ほとんどの場合、より多くのシステム・リソース(CPU、メモリー、ディスクI/Oなど)をOracle Databaseのために確保できます。
また、Oracle Databaseは、Windowsコンピュータのリソースを効率的に活用する高性能のデータベース管理システムであるため、次の用途で使用しないでください。
プライマリ・ドメイン・コントローラまたはバックアップ・ドメイン・コントローラ
ファイル・サーバーまたはプリント・サーバー
リモート・アクセス・サーバー
ルーター
これらの構成では、ネットワーク、メモリーおよびCPUのリソースがかなり消費されます。さらに、Oracle Databaseを実行するWindowsコンピュータでは、頻繁にローカルでアクセスしたり、ローカル・ユーザーの処理で集中的に使用したりすることは、このようなアクティビティの処理に十分なリソースがある場合以外は避けてください。
ラージ・ページのサポートは、Oracle Database 10gリリース1(10.1)以上の機能です。これは、Windows Server 2003上のメモリー集中型データベース・インスタンスのパフォーマンスを向上させます。Oracle Database 10gリリース1(10.1)以上は、新しく導入されたオペレーティング・システムのサポートを活用しているため、プロセッサ・メモリーによってアドレッシングされるリソースを効率的に使用できるようになっています。具体的には、ラージ・ページのサポートを有効にすると、システムのCPUからRAM内のOracle Databaseバッファへのアクセスが高速になります。CPUは、データベース・バッファをアドレッシングする際に、4KB単位で増分されるバッファをアドレッシングするかわりに、物理アドレス拡張(PAE)モードの2MBのページ・サイズと、非PAEモードの4MBのページ・サイズを使用するように指示されます。
この機能は、Oracleバッファ・キャッシュが数GBである場合に特に役立ちます。これより小さいサイズの構成でも、ラージ・ページを使用する効果はありますが、データベースが大量のメモリーにアクセスしている場合ほど効果は大きくありません。
ラージ・ページ・サポートを有効にするには、Windows Server 2003レジストリのOracleキーでORA_LPENABLE
を1
に設定します。
デフォルトのSYSTEM
ユーザー以外のユーザーでサービスが実行される場合、管理者はそのユーザーに「Lock pages in memory」権限を付与する必要があります。この権限は、Windowsのインストール時にデフォルトで有効化されません。この権限を付与するには、次のようにします。
「スタート」メニュー→「設定」→「コントロール パネル」を選択します。
「コントロール パネル」ウィンドウが開きます。
「管理ツール」をダブルクリックします。
「管理ツール」ウィンドウが開きます。
「ローカル セキュリティ ポリシー」をダブルクリックします。
「ローカル セキュリティ設定」ウィンドウが開きます。
「ローカル セキュリティ設定」ウィンドウの左側のペインで、「ローカル ポリシー」を開いて「ユーザー権利の割り当て」を選択します。
「ローカル セキュリティ設定」ウィンドウの右側のペインで、「メモリ内のページのロック」を選択し、「操作」→「セキュリティ」を選択します。
「ローカル セキュリティ ポリシーの設定」ダイアログが開きます。
「追加」をクリックします。
「ユーザーまたはグループの選択」ダイアログが開きます。
「名前」
リストからoracleユーザーを選択します。
「追加」をクリックします。
「OK」をクリックして「ユーザーまたはグループの選択」ダイアログを閉じます。
「OK」をクリックして「ローカル セキュリティ ポリシーの設定」ダイアログを閉じます。
Windows Server 2003でラージ・ページを利用するには、物理メモリーの容量が、パラメータ・ファイルに指定されたシステム・グローバル領域(SGA)の容量より大きい必要があります。
ラージ・ページは、インスタンスの起動時に常に割り当てられるわけではありません。すべてのSGAが、ラージ・ページを使用して割り当てられるか、または通常のページを使用して割り当てられます。
注意: ラージ・ページの使用により、SGA全体が物理メモリーにロックされます。物理メモリーは、縮小操作中は解放されません。 |
関連項目: ラージ・ページの割当ての制限事項は、オペレーティング・システムのドキュメントを参照。 |
ラージ・ページのサポートを有効化するには、次のようにします。
ORACLE_HOME
\bin\oracle.key
に移動します。
テキスト・エディタでoracle.key
を開き、その中にある値を記録します。これは、Oracle Universal Installerによって設定されたものです。デフォルトは次の値です。
SOFTWARE\ORACLE\KEY_HOME_NAME
コマンド・プロンプトでレジストリ エディタを起動します。
C:\> regedit
注意: レジストリ エディタを使用すると、レジストリ・キーおよびパラメータ値を表示し、変更できますが、通常その必要はありません。実際、変更が適切でないとシステムが使用できなくなることがあります。したがって上級ユーザー以外は、レジストリを編集しないでください。レジストリに変更を加える場合は、その前にシステムをバックアップしてください。
|
HKEY_LOCAL_MACHINE
に移動します。
oracle.key
に記載されていた値に対応するキーを検索します。デフォルトの環境では、次のキーを検索します。
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_HOME_NAME
ラージ・ページのサポートを有効にする対象に応じて、次のいずれかを作成します。
ORA_LPENABLE=1
: すべてのインスタンスでラージ・ページのサポートを有効化します。
ORA_
SID
_LPENABLE=1
: 特定のインスタンスでラージ・ページのサポートを有効化します。
レジストリ エディタを終了します。
デフォルトでは、ラージ・ページの使用時に、使用可能な最小限のラージ・ページ・サイズがOracleによって割り当てられます。使用可能な最小限のラージ・ページ・サイズ(16MB)は、GetLargePageMinumum
ファンクションの使用により取得されます。
注意: ラージ・ページを有効化する場合は、初期化パラメータlock_sga を設定しないでください。ラージ・ページの使用により、SGA全体が物理メモリーにロックされます。この状態でlock_sga パラメータを使用すると、オペレーティング・システムが自動的にロックするため、データベースの起動はエラーとともに失敗します。つまり、この設定では、ラージ・ページがリクエストされたときにメモリーをディスクにページングできません。物理メモリーは、縮小操作中は解放されません。 |
Windows Serverのインストール時にデフォルトで提供される設定の1つに、対話型のフォアグラウンド・アプリケーションに、各バックグラウンド・プロセスよりも高い優先度を与えるものがあります。サーバー・コンソール上のフォアグラウンド・アプリケーションがOracle Databaseのプロセッサ時間を取りすぎないように、フォアグラウンド・アプリケーションの優先度を低くできます。
関連項目: フォアグラウンド・アプリケーションの優先度を低くする方法は、オペレーティング・システムのドキュメントを参照 |
Windowsのメモリー・マネージャは、システム・メモリーを表7-1で説明する3つの異なるプールに分割します。
Windows Serverのメモリー・マネージャは、物理RAMと仮想メモリー・ページング・ファイルとの間で動的にメモリーをページングすることにより、各アプリケーションのメモリー使用量のバランスをとろうとします。アプリケーションのメモリー消費が特に高い場合(Oracle Databaseのように)、または多数のアプリケーションが同時に実行される場合は、各アプリケーションのメモリー要件の合計が、物理メモリーの限界を超える可能性があります。
ファイル・キャッシュ用に確保されるメモリーの割合が大きいこと(41%)は、ファイル・サーバーとプリント・サーバーにとっては非常に有益です。しかし、メモリー集中型のネットワーク・アプリケーションを頻繁に実行するアプリケーション・サーバーにとっては有益ではないことがあります。システム・グローバル領域を介して独自のキャッシュを行うOracle Databaseには、Windows Serverのファイル・キャッシュはまったく不要です。
Windows Serverのメモリー・モデルを、大きなファイル・キャッシュを持つデフォルトのファイル・サーバーおよびプリント・サーバーから、ファイル・キャッシュを減らしてOracle Databaseでより多くの物理メモリーを使用できるネットワーク・アプリケーション・モデルにリセットできます。
関連項目: 詳細は、オペレーティング・システムのドキュメントを参照してください。 |
「アプリケーション・サーバーとしてWindows Serverを構成」に説明されている方法でファイル・キャッシュのサイズを大幅に小さくした後、オペレーティング・システムのコア機能にとって不要なサービスを無効にすることにより、より多くの物理メモリーをOracle Databaseのために確保できます。不要なサービスには、次のものがあります。
License Logging Service
Plug and Play
Remote Access Autodial Manager
Remote Access Connection Manager
Remote Access Server
Telephony Service
その他の不要なサービスを識別するには、システム管理者に問い合せてください。
次のサービスのいずれも無効にしないでください。
Alerter
Computer Browser
EventLog
Messenger
OracleServiceSID
OracleHOME_NAMETNSListener
OracleStartSID
(Oracle8リリース8.0.6以下)
Remote Procedure Call(RPC)Service
Server
Spooler
TCP/IP NetBIOS Helper
Workstation
関連項目: 不要なサービスを無効に設定する方法は、オペレーティング・システムのドキュメントを参照 |
重要なプロトコルにのみ処理時間が費やされるように、Windows上の不要なネットワーク・プロトコルはすべて削除します。
関連項目: 不要なネットワーク・プロトコルを削除する方法は、オペレーティング・システムのドキュメントを参照 |
サーバー上にプロトコルを複数インストールする必要がある場合は、ネットワーク・プロトコルのバインド順序をリセットすることにより、Oracle Databaseで最も頻繁に使用されるプロトコルの優先順位を一番高く設定できます。
関連項目: ネットワーク・プロトコルのバインド順序をリセットする方法は、オペレーティング・システムのドキュメントを参照 |
1台のWindowsコンピュータ上にパブリックおよびプライベートのネットワーク・インタフェース・カード(NIC)があり、正しい順序に設定されていない場合、gethostname
を使用する構成(Oracle Enterprise Managerなど)で問題が発生する可能性があります。
WindowsでプライベートNICが最初に検出されると、gethostname
コールはプライベート相互接続のホスト名を返します。どのツールがgethostname
をコールするとしても、この非パブリック・ネットワーク情報から生じる構成または接続の問題があります。
次のように、NICの現在の順序を確認し、必要に応じて変更できます。
「スタート」メニュー→「設定」→「ネットワークとダイヤルアップ接続」を選択します。
「詳細設定」→「詳細設定」を選択します。
「接続」フィールドにパブリックおよびプライベートのローカル・エリア接続が一覧表示されます。Windowsによるアクセス順序を変更するには、いずれかを選択して矢印オプションをクリックし、上または下に移動します。
パブリックまたはプライベートのNICの順序を必要に応じて変更した後、「OK」をクリックします。
優先順位の変更はすぐに反映されます。コンピュータを再起動する必要はありません。
Microsoft社では、Service Packと呼ぶオペレーティング・システムのパッチを四半期ごとにリリースしています。Service Packは、Windows Serverの基本リリースに対する不具合の修正と製品拡張機能の集まりです。一般に、Service Packにより不具合が修正され、Windows Serverのパフォーマンスまたは機能を改善できるため、安全であることが確認されたらすぐに適用します。
Service Packは不具合を修正するためのものですが、新しい問題を引き起こす場合もあります。一般に、Service Packはリリース後2から3週間待ってから実装する方が安全です。この間に、そのSPリリースに関する問題があれば、他の現場からレポートが上がるはずです。
最新版のWindows Server Service Packは、自己解凍形式アーカイブとしてhttp://support.microsoft.com
からダウンロードできます。
Service PackがWindows Server上でエラーなしで機能することが保証されていないかぎり、Uninstall
ディレクトリを作成するようにします。これにより、Service Packを削除して元の構成に戻すことができます。
Service Packのファイルは、Windows Serverの元の構成内にある、同じ名前のファイルを上書きします。ただし、Service Packのファイルは、元のインストール・メディアからファイルをコピーするセットアップ・プログラムにより上書きされる可能性があります。
たとえば、新しいネットワーク・プロトコルやプリンタ・ドライバをインストールするには、通常、Windows Serverの元のインストール・メディアからファイルをコピーする必要があります。Service Packのファイルの全体または一部が上書きされた場合は、Service Packを再度適用する必要があります。
CPUおよびメモリーの速度と比較して、ハード・ディスク・ドライブは速度がきわめて遅くなります。ハード・ディスク・ドライブは比較的安価になっているため、Windows Serverでは、ストライプ化された物理ディスクで構成される論理ボリュームを使用することをお薦めします。データのストライプ化は、ファイルI/Oを同時に多数のハード・ディスク・ドライブに分散することにより、比較的速度の遅いハード・ディスク・ドライブの影響を少なくする効率的な手段です。
注意: オペレーティング・システムによるデータのストライプ化と、自動ストレージ管理(ASM)を併用することはできません。ASM自体がストライプ化を実行するからです。ハードウェアのストライプ化とASMを組み合せることは可能ですが、そうする必要性がありません。 |
関連項目: 『Oracle Database管理者ガイド』の「自動ストレージ管理の使用」 |
多数あるディスク間でデータをストライプ化することは、Redundant Array of Inexpensive Disks(RAID)の一例です。RAIDには様々なタイプがあり、これらのタイプはRAIDレベルとも呼ばれており、パフォーマンスの高いタイプから信頼性の高いタイプまであります。Oracle Databaseのインストール環境で最も一般的なRAIDレベルは、RAID-0、RAID-1およびRAID-5の3種類です。RAIDの各レベルの説明を表7-2に示します。この表では、各レベルの読取りと書込みのペナルティを示しています。
表7-2 Oracle DatabaseインストールのRAIDレベル
RAIDレベル | 読込み時のペナルティ注意 | 書込み時のペナルティ注意 |
---|---|---|
0(ディスクのストライプ化) |
1:1 |
1:1 |
1(ディスクのミラー化) |
1:1 |
2:1 |
0 + 1 |
1:1 |
2:1 |
5(分散データ保護) |
1:1 |
4:1 |
注意
読込み時のペナルティは、読込み要求に対するI/O操作の比率です。
注意
書込み時のペナルティは、書込み要求に対するI/O操作の比率です。
ディスクのストライプ化
RAIDレベル0は、高パフォーマンスの、フォルト・トレラントでないディスクのストライプ化を可能にします。複数の物理ハード・ディスクが、ディスク・コントローラまたはオペレーティング・システムにより論理的な1つのまとまりに集約されます。論理ボリュームに対するデータ操作は、配列化された物理ドライブと同じ数のチャンクに分割され、すべてのディスクが同時に使用されます。同一のハード・ディスクを使用した際に、1つのハード・ディスクのスループット率がDISKRATE
操作数/秒の場合、RAID-0の論理ボリュームのスループット率は、次のようになります。
(DISKRATE * [number of physical drives in array]) operations/second
RAID-0の短所は、フォルト・トレランスがないことです。論理ボリューム内のディスクの1つに障害が発生すると、論理ボリューム全体が影響され、バックアップからリストアする必要があります。
ディスクのミラー化
RAIDレベル1は、フォルト・トレラントなディスクのミラー化を使用可能にしますが、パフォーマンスが低下する可能性があります。基本的に、ミラー化されたディスクに対する書込みは、この目的専用の別ドライブ(ミラー・ドライブ)にすべて複製されます。ミラー化されたディスクに障害が発生すると、ミラー・ドライブがリアルタイムでオンラインになります。障害の発生したドライブが置き換えられた後、ミラー構成を再設定できます。
RAIDレベル1の読込み時のペナルティは、名目上は1:1ですが、コントローラによっては、分割読込みにより有利になることがあります。たとえば、最も速くアクセスできるミラーをコントローラが認識している場合は、そのディスクにI/O操作を誘導することにより、シーク時間を短縮できます。
ディスクのストライプ化+ミラー化
RAIDレベル0+1は、ストライプ化されたハード・ディスク配列のミラー化を可能にします。これはRAID-0とRAID-1の混合使用で、高性能のフォルト・トレランスを提供します。
分散データ保護
RAIDレベル5は、パリティ機構付きのディスクのストライプ化とも呼ばれ、ミラーリングに必要な価格を抑えることができます。RAID 5ではRAID 0と同様に、複数のハード・ディスクが、ストライプ化された1つの論理的なボリュームにまとめられますが、それぞれのドライブにはパリティ情報が格納されているため、いずれかのドライブで障害が発生してもシステムが稼動できるようになっています。RAID-5システムでは、1つのドライブで障害が発生したときに、パリティ情報に基づいてバイトが急ピッチで再構築されるため、アクセス・タイムは大幅に遅くなりますが、データへのアクセスを継続できます。RAID-5ソリューションを導入した場合には通常、障害の発生したドライブと交換用のドライブをホットスワップで交換し、パリティ情報に基づいて障害の発生したドライブのデータを交換用のドライブに再構築することができます。
4:1という書込み時のペナルティは、パリティ計算中の2回の読込みと2回の書込みから生じます。
Windows Serverに十分な数の物理ディスクがある場合は、(オペレーティング・システム用のスタンドアロン・ハード・ディスクまたはストライプ化ボリュームの他に)少なくとも2つのストライプ化ボリュームを作成します。ストライプ化ボリュームの1つは順次データ・アクセスに、もう1つはランダム・データ・アクセスに使用できます。
たとえば、Oracle DatabaseのREDOログおよびアーカイブREDOログは、順次書き込まれます。ヘッドの移動が減るため、ハード・ディスクのパフォーマンスは、順次データの読込みまたは書込みのときに一番よくなります。
ただし、Oracle Databaseのデータファイルは通常はランダムな順序でアクセスされます。ハード・ディスクでのランダム・アクセスは、ヘッドの移動がかなり多くなり、データ・アクセス速度は低下します。
REDOログ・ファイルが(物理デバイス・レベルで)データファイルと分離されていないかぎり、UNDOファイルのI/O競合が発生し、両方のファイルのアクセス時間が増加する可能性があります。
Windows Serverのメモリー・マネージャはあまり使用されないページをディスクに移動してホット・ページ用にさらに多くの物理メモリーを解放しようとするため、Oracle DatabaseがWindows Server上の唯一のネットワーク・アプリケーションである場合でも、仮想メモリー・ページングが発生する可能性はあります。
Windows Serverの仮想メモリー・ページング・ファイルの多重化は、システム全体のパフォーマンスを上げる優れた方法です。ページング・ファイルを最低2つの異なる物理ボリューム(または、基になる物理ボリュームが重複しない場合は、論理ボリューム)に分割すると、仮想メモリーのスワップ操作のパフォーマンスが著しく向上します。
これは、仮想メモリー・ページングの高速化の手法としては優れていますが、ページング・アクティビティが多すぎる場合はそれでもパフォーマンスに影響があるため、サーバーにRAMを追加する必要があります。
ページング・ファイル・サイズに関する一般的なヒント
ページ・ファイル全体のサイズが、少なくともコンピュータの物理RAMのサイズと同じになることをお薦めします。全体のサイズが物理RAMのサイズの2倍から4倍になるような構成は、特別な珍しいわけではありません。ページングのサイズはできるだけ小さくするようにしてください。しかし、オペレーティング・システムが使用するページング用の領域がなくなったり不足したりする事態は、何としてでも避けなければなりません。ページング・ファイルどうしの間隔を空けて物理ディスクに配置し、ファイルのサイズを十分に確保するようにすると、オペレーティング・システムがページングを複数のページング・ファイルに均等に分散できるため、I/Oの負荷が最も効率的に分散されます。
注意: Windowsの内部読取り/書込みバッチ・サイズは4KBです。 |
今までの項で説明してきた手順を適用したら、不要なフォアグラウンド・アプリケーションは閉じるようにしてください。1点目として、Windows Serverコンソール・オペレータのスタートアップ・フォルダからすべてのアプリケーションを削除してください。2点目として、コマンド・プロンプトから長いスクリプトを実行するときはウィンドウを最小化してください。そうすれば、Windows Serverの処理の中心が、大量に発生するウィンドウ再描画メッセージではなく、操作になります。3点目として、起動とともにCPUリソースを大きく消費する可能性のあるスクリーン・セーバーを無効にしてください。スクリーン・セーバーを実行する必要がある場合は、消費する処理時間が最も短いブランクの画面を選択するようにしてください。