この章では、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の機能です。これは、Windows Serverで実行中のメモリー集中型データベース・インスタンスのパフォーマンスを向上させます。Oracle Databaseは、新しく導入されたオペレーティング・システムのサポートを活用しているため、プロセッサ・メモリーによってアドレッシングされるリソースを効率的に使用できるようになりました。具体的には、ラージ・ページのサポートを有効にすると、システムのCPUからRAM内のOracle Databaseバッファへのアクセスが高速になります。CPUは、データベース・バッファをアドレッシングする際に、4KB単位で増分されるバッファをアドレッシングするかわりに、物理アドレス拡張(PAE)モードの2MBのページ・サイズと、非PAEモードの4MBのページ・サイズを使用するように指示されます。
この機能は、Oracleバッファ・キャッシュが数GBである場合に特に役立ちます。これより小さいサイズの構成でも、ラージ・ページを使用する効果はありますが、データベースが大量のメモリーにアクセスしている場合ほど効果は大きくありません。
デフォルトのSYSTEM
ユーザー以外のユーザーでサービスが実行される場合、管理者はそのユーザーに「Lock pages in memory」権限を付与する必要があります。この権限は、Windowsのインストール時にデフォルトで有効化されません。
SeLockMemoryPrivilege
を付与するには、次の手順を実行します。
「スタート」メニューから、「コントロール パネル」を選択します。
「コントロール パネル」ウィンドウが開きます。
「管理ツール」をダブルクリックします。
「管理ツール」ウィンドウが開きます。
「ローカル セキュリティ ポリシー」をダブルクリックします。
「ローカル セキュリティ ポリシー」ウィンドウが開きます。
「ローカル セキュリティ設定」ウィンドウの左側のペインで、「ローカル ポリシー」を開いて「ユーザー権利の割り当て」を選択します。
「ローカル セキュリティ ポリシー」ウィンドウの右側のペインで、「メモリ内のページのロック」をダブルクリックします。
「メモリ内のページのロックのプロパティ」ウィンドウが開きます。
「ユーザーまたはグループの追加」をクリックします。
「ユーザーの選択」、「コンピュータ」、「サービス・アカウント」または「グループ」ダイアログ・ボックスが開きます。
「選択するオブジェクト名を入力してください」フィールドにOracleホーム・ユーザー名を入力し、「名前の確認」をクリックします。
「OK」をクリックして、「ユーザーの選択」、「コンピュータ」、「サービス アカウント」または「グループ」ダイアログ・ボックスを閉じます。
「OK」をクリックして、「メモリ内のページのロックのプロパティ」ウィンドウを閉じます。
ラージ・ページを利用するには、物理メモリーの容量が、パラメータ・ファイルに指定されたシステム・グローバル領域(SGA)の容量より大きい必要があります。
ラージ・ページは、インスタンスの起動時に常に割り当てられるわけではありません。ラージ・ページは次の2つのモードでサポートされます。
通常モード: すべてのSGAがラージ・ページで割り当てられようとします。ラージ・ページの必要量が使用できない場合、インスタンスは起動しません。
混合モード: すべてのSGAがラージ・ページで割り当てられようとします。ラージ・ページがそれ以上使用できない場合、以降の割当ては通常のページを使用して行われます。そのため、SGA割当ては、ラージ・ページと通常のページが混在したセットになります。
混合モードは時間パラメータ(msecs
単位)もサポートします。ラージ・ページの割当てがこの時間パラメータで指定したミリ秒よりもかかった場合、以降の割当ては通常のページを使用して行われます。このパラメータは、SGA全体がラージ・ページを使用して割り当てられているために、データベースの起動時間が長くなりすぎる場合に有用です。
注意: ラージ・ページの使用により、SGA全体が物理メモリーにロックされます。物理メモリーは、縮小操作中は解放されません。 |
関連項目: ラージ・ページの割当ての制限事項は、オペレーティング・システムのドキュメントを参照 |
ラージ・ページのサポートを有効化するには、次のようにします。
ORACLE_HOME
\bin\oracle.key
ディレクトリに移動します。
テキスト・エディタでoracle.key
を開き、その中にある値を記録します。これは、Oracle Universal Installerによって設定されたものです。デフォルトは次の値です。
SOFTWARE\ORACLE\KEY_HOMENAME
コマンド・プロンプトでレジストリ エディタを起動します。
C:\> regedit
注意: レジストリ エディタを使用すると、レジストリ・キーおよびパラメータ値を表示し、変更できますが、通常その必要はありません。実際、変更が適切でないとシステムが使用できなくなることがあります。したがって上級ユーザー以外は、レジストリを編集しないでください。レジストリに変更を加える場合は、その前にシステムをバックアップしてください。
|
HKEY_LOCAL_MACHINE
ファイルに移動します。
oracle.key
ファイルに記載されていた値に対応するキーを検索します。デフォルトの環境では、次のキーを検索します。
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_HOMENAME
ラージ・ページのサポートを有効にする対象に応じて、次のいずれかを作成します。
ORA_LPENABLE
: すべてのインスタンスでラージ・ページのサポートを有効化します。その値によりコンピュータ上のすべてのOracleデータベース・インスタンスに対するラージ・ページのモードが決定します。
ORA_
SID
_LPENABLE
: 特定のインスタンスでラージ・ページのサポートを有効化します。その値により特定のデータベース・インスタンスに対するラージ・ページのモードが決定します。
上記のレジストリ・エントリの値を、通常モードの場合は1
に、混合モードの場合は2
に設定します。
混合モードの時間パラメータはオプションです。インスタンス特有のこの時間パラメータを指定するには、ORA_
SID
_LPMAXTIME
を作成し、その値をミリ秒単位で設定します。
この時間パラメータがインスタンスに指定され、指定したミリ秒を超える時間がラージ・ページの割当てにかかる場合、残りのSGAは通常のページを使用して割り当てられます。
レジストリ エディタを終了します。
デフォルトでは、ラージ・ページの使用時に、使用可能な最小限のラージ・ページ・サイズがOracleによって割り当てられます。使用可能な最小限のラージ・ページ・サイズ(16MB)は、GetLargePageMinumum
ファンクションの使用により取得されます。
注意: ラージ・ページを有効化する場合は、初期化パラメータlock_sga を設定しないでください。ラージ・ページの使用により、SGA全体が物理メモリーにロックされます。この状態でlock_sga パラメータを使用すると、オペレーティング・システムが自動的にロックするため、データベースの起動はエラーとともに失敗します。つまり、この設定では、ラージ・ページがリクエストされたときにメモリーをディスクにページングできません。物理メモリーは、縮小操作中は解放されません。 |
Windows Serverのインストール時にデフォルトで提供される設定の1つに、対話型のフォアグラウンド・アプリケーションに、各バックグラウンド・プロセスよりも高い優先度を与えるものがあります。サーバー・コンソール上のフォアグラウンド・アプリケーションがOracle Databaseのプロセッサ時間を取りすぎないように、フォアグラウンド・アプリケーションの優先度を低くできます。
関連項目: フォアグラウンド・アプリケーションの優先度を低くする方法は、オペレーティング・システムのドキュメントを参照 |
Windowsのメモリー・マネージャは、システム・メモリーを表8-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
OracleService
SID
Oracle
HOMENAME
TNSListener
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 Server 2008の場合、「アダプタの設定の管理」を選択します。
Windows Server 2008 R2の場合、「アダプタの設定の変更」を選択します。
「整理」、「レイアウト」の順にクリックし、「メニュー バー」を選択します。
「詳細設定」メニューで、「詳細設定」をクリックします。「詳細設定」ウィンドウが開きます。
「アダプタとバインディング」タブの「接続」ウィンドウで、必要なネットワーク・アダプタを選択します。
上下矢印ボタンを使用して、このネットワーク・アダプタをリストの上位または下位に移動します。
「OK」をクリックします。
Microsoft社では、Service Packと呼ぶオペレーティング・システムのパッチを四半期ごとにリリースしています。Service Packは、Windows Serverの基本リリースに対する不具合の修正と製品拡張機能の集まりです。一般に、Service Packにより不具合が修正され、Windows Serverのパフォーマンスまたは機能を改善できるため、安全であることが確認されたらすぐに適用します。
Service Packは不具合を修正するためのものですが、新しい問題を引き起こす場合もあります。一般に、Service Packはリリース後2から3週間待ってから実装する方が安全です。この間に、そのサービス・パック・リリースに関する問題があれば、他の現場からレポートが上がるはずです。
最新版の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を同時に多数のハード・ディスク・ドライブに分散することにより、比較的速度の遅いハード・ディスク・ドライブの影響を少なくする効率的な手段です。
注意: オペレーティング・システムによるデータのストライプ化と、Oracle Automatic Storage Management(Oracle ASM)を併用することはできません。ASM自体がストライプ化を実行するからです。ハードウェアのストライプ化とOracle ASMを組み合せることは可能ですが、そうする必要性がありません。 |
関連項目: 『Oracle Database管理者ガイド』 |
多数あるディスク間でデータをストライプ化することは、Redundant Array of Inexpensive Disks(RAID)の一例です。RAIDには様々なタイプがあり、これらのタイプはRAIDレベルとも呼ばれており、パフォーマンスの高いタイプから信頼性の高いタイプまであります。Oracle Databaseのインストール環境で最も一般的なRAIDレベルは、RAID-0、RAID-1およびRAID-5の3種類です。RAIDの各レベルの説明を表8-2に示します。この表では、各レベルの読取りと書込みのペナルティを示しています。
表8-2 Oracle DatabaseインストールのRAIDレベル
RAIDレベル | 読込み時のペナルティ注意1 | 書込み時のペナルティ注意2 |
---|---|---|
0(ディスクのストライプ化) |
1:1 |
1:1 |
1(ディスクのミラー化) |
1:1 |
2:1 |
0 + 1 |
1:1 |
2:1 |
5(分散データ保護) |
1:1 |
4:1 |
注意1
読込み時のペナルティは、読込み要求に対するI/O操作の比率です。
注意2
書込み時のペナルティは、書込み要求に対する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を追加する必要があります。
ページング・ファイル・サイズに関する一般的なヒントについて
物理メモリーが2GBから16GBの間である場合、仮想メモリーをRAMのサイズの1倍に設定することをお薦めします。物理メモリーが16GBを超える場合は、仮想メモリーを16GBに設定してください。
全体のサイズが物理RAMのサイズの2倍から4倍になるような構成は、特別珍しいわけではありません。ページングのサイズはできるだけ小さくするようにしてください。しかし、オペレーティング・システムが使用するページング用の領域がなくなったり不足したりする事態は、何としてでも避けなければなりません。ページング・ファイルどうしの間隔を空けて物理ディスクに配置し、ファイルのサイズを十分に確保するようにすると、オペレーティング・システムがページングを複数のページング・ファイルに均等に分散できるため、I/Oの負荷が最も効率的に分散されます。
注意: Windowsの内部読取り/書込みバッチ・サイズは4KBです。 |
今までの項で説明してきた手順を適用したら、不要なフォアグラウンド・アプリケーションは閉じるようにしてください。1点目として、Windows Serverコンソール・オペレータのスタートアップ・フォルダからすべてのアプリケーションを削除してください。2点目として、コマンド・プロンプトから長時間のスクリプトを実行するときはウィンドウを最小化してください。そうすれば、Windows Serverの処理の中心が、大量に発生するウィンドウ再描画メッセージではなく、操作になります。3点目として、起動とともにCPUリソースを大きく消費する可能性のあるスクリーン・セーバーを無効にしてください。スクリーン・セーバーを実行する必要がある場合は、消費する処理時間が最も短いブランクの画面を選択するようにしてください。