ヘッダーをスキップ

Oracle Databaseプラットフォーム・ガイド 11gリリース1（11.1） for Microsoft Windows E05885-05 |
| 目次 | 索引

戻る | 次へ |

# 7 Oracle Databaseを最適化するためのWindowsのチューニング

この章では、Oracle Databaseが最善の環境で実行されるように、Windows Serverオペレーティング・システムをチューニングする方法について説明します。

この章の項目は次のとおりです。

- Windowsのチューニングの概要

- ラージ・ページのサポート

- サーバー・コンソールでフォアグラウンド・アプリケーションの優先度を低く設定

- アプリケーション・サーバーとしてWindows Serverを構成

- 不要なサービスを無効に設定

- 使用しないネットワーク・プロトコルを削除

- ネットワーク・プロトコルのバインド順序をリセット

- 複数のネットワーク・インタフェース・カードの順序を設定

- 最新の信頼性の高いWindows Server Service Packを適用

- ハードウェアまたはオペレーティング・システムのストライプ化を使用

- Windows Serverの仮想メモリー・ページング・ファイルの多重化

- 不要なフォアグラウンド・アプリケーションをすべて閉じる

  注意: 説明を簡潔にするため、記載内容がサポートされるすべてのWindowsオペレーティング・システムに当てはまる場合、これらをまとめてWindows Serverと呼びます。

## Windowsのチューニングの概要

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バッファにより高速にアクセスできるようになります。4KBの増分でバッファをアドレッシングするかわりに、CPUはデータベース・バッファをアドレッシングする際にPhysical Address Extension（PAE）モードでは2MBのページ・サイズ、非PAEモードでは4MBのページ・サイズを使用するように指示されます。

関連項目: PAEモードの設定方法については、「Very Large Memory（VLM）構成のサポート」を参照

この機能は、Oracleバッファ・キャッシュが数GBである場合に特に役立ちます。これより小さいサイズの構成でも、ラージ・ページを使用する効果はありますが、データベースが大量のメモリーにアクセスしている場合ほど効果は大きくありません。

ラージ・ページ・サポートを有効にするには、Windows Server 2003レジストリのOracleキーで`ORA_LPENABLE`を`1`に設定します。

デフォルトの`SYSTEM`ユーザー以外のユーザーでサービスが実行される場合、管理者はそのユーザーに「Lock pages in memory」権限を付与する必要があります。この権限は、Windowsのインストール時にデフォルトで有効化されません。この権限を付与するには、次のようにします。

1. 「スタート」メニュー→「設定」→「コントロール パネル」を選択します。

   「コントロール パネル」ウィンドウが開きます。

2. 「管理ツール」をダブルクリックします。

   「管理ツール」ウィンドウが開きます。

3. 「ローカル セキュリティ ポリシー」をダブルクリックします。

   「ローカル セキュリティ設定」ウィンドウが開きます。

4. 「ローカル セキュリティ設定」ウィンドウの左側のペインで、「ローカル ポリシー」を開いて「ユーザー権利の割り当て」を選択します。

5. 「ローカル セキュリティ設定」ウィンドウの右側のペインで、「メモリ内のページのロック」を選択し、「操作」→「セキュリティ」を選択します。

   「ローカル セキュリティ ポリシーの設定」ダイアログが開きます。

6. 「追加」をクリックします。

   「ユーザーまたはグループの選択」ダイアログが開きます。

7. 「名前」リストから`oracle`ユーザーを選択します。

8. 「追加」をクリックします。

9. 「OK」をクリックして「ユーザーまたはグループの選択」ダイアログを閉じます。

10. 「OK」をクリックして「ローカル セキュリティ ポリシーの設定」ダイアログを閉じます。

Windows Server 2003でラージ・ページを利用するには、物理メモリーの容量が、パラメータ・ファイルに指定されたシステム・グローバル領域（SGA）の容量より大きい必要があります。

ラージ・ページは、インスタンスの起動時に常に割り当てられるわけではありません。すべてのSGAが、ラージ・ページを使用して割り当てられるか、または通常のページを使用して割り当てられます。

注意: ラージ・ページの使用により、SGA全体が物理メモリーにロックされます。物理メモリーは、縮小操作中は解放されません。

関連項目: ラージ・ページの割当ての制限事項は、オペレーティング・システムのドキュメントを参照。

ラージ・ページのサポートを有効化するには、次のようにします。

1. `ORACLE_BASE``\``ORACLE_HOME``\bin\oracle.key`に移動します。

2. テキスト・エディタで`oracle.key`を開き、記載されている値を記録します。この値は、Oracle Universal Installerにより設定されます。デフォルト値は次のとおりです。

       SOFTWARE\ORACLE\KEY_HOME_NAME

3. コマンド・プロンプトでレジストリ エディタを起動します。

       C:\> regedit

   注意: レジストリ エディタを使用すると、レジストリ・キーおよびパラメータ値を表示し、変更できますが、通常その必要はありません。実際、変更が適切でないとシステムが使用できなくなることがあります。したがって上級ユーザー以外は、レジストリを編集しないでください。レジストリに変更を加える場合は、その前にシステムをバックアップしてください。

4. `HKEY_LOCAL_MACHINE`に移動します。

   `oracle.key`に記載されていた値に対応するキーを検索します。デフォルトの環境では、次のキーを検索します。

       HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_HOME_NAME

5. ラージ・ページのサポートを有効化する対象に応じて、次のいずれか1つを作成します。

   - `ORA_LPENABLE=1`: すべてのインスタンスでラージ・ページのサポートを有効化します。

   - `ORA_``SID``_LPENABLE=1`: 特定のインスタンスでラージ・ページのサポートを有効化します。

6. レジストリ エディタを終了します。

デフォルトでは、ラージ・ページの使用時に、使用可能な最小限のラージ・ページ・サイズがOracleによって割り当てられます。使用可能な最小限のラージ・ページ・サイズ（16MB）は、`GetLargePageMinumum`ファンクションの使用により取得されます。

注意: ラージ・ページを有効化する場合は、初期化パラメータ`lock_sga`を設定しないでください。ラージ・ページの使用により、SGA全体が物理メモリーにロックされます。この状態で`lock_sga`パラメータを使用すると、オペレーティング・システムが自動的にロックするため、データベースの起動はエラーとともに失敗します。つまり、この設定では、ラージ・ページがリクエストされたときにメモリーをディスクにページングできません。物理メモリーは、縮小操作中は解放されません。

## サーバー・コンソールでフォアグラウンド・アプリケーションの優先度を低く設定

Windows Serverのインストール時にデフォルトで提供される設定の1つに、対話型のフォアグラウンド・アプリケーションに、各バックグラウンド・プロセスよりも高い優先度を与えるものがあります。サーバー・コンソール上のフォアグラウンド・アプリケーションがOracle Databaseのプロセッサ時間を取りすぎないように、フォアグラウンド・アプリケーションの優先度を低くできます。

関連項目: フォアグラウンド・アプリケーションの優先度を低くする方法は、オペレーティング・システムのドキュメントを参照

## アプリケーション・サーバーとしてWindows Serverを構成

Windowsのメモリー・マネージャは、システム・メモリーを表7-1で説明する3つの異なるプールに分割します。

表7-1 Windows Serverのメモリー共有

プール | 合計メモリーに対する割合
--- | ---
カーネルとその他のシステム・サービス | 9%
ファイル・キャッシュ | 41%
ページングされたメモリー | 50%

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`をコールするとしても、この非パブリック・ネットワーク情報から生じる構成または接続の問題があります。

Windows 2000コンピュータ上で、次のように、NICの現在の順序を確認し、必要に応じて変更できます。

1. 「スタート」メニュー→「設定」→「ネットワークとダイヤルアップ接続」を選択します。

2. 「詳細設定」→「詳細設定」を選択します。

3. 「接続」フィールドにパブリックおよびプライベートのローカル・エリア接続が一覧表示されます。Windowsによるアクセス順序を変更するには、いずれかを選択して矢印ボタンをクリックし、上または下に移動します。

4. パブリックまたはプライベートのNICの順序を必要に応じて変更した後、「OK」をクリックします。

5. 優先順位の変更はすぐに反映されます。コンピュータを再起動する必要はありません。

## 最新の信頼性の高いWindows Server Service Packを適用

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のインストールで最も一般的な3つの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つの論理ドライブ（たとえば、Windows 2000 Serverのストライプ・ボリューム）に集約されます。論理ボリュームに対するデータ操作は、配列化された物理ドライブと同じ数のチャンクに分割され、すべてのディスクが同時に使用されます。同一のハード・ディスクを使用した際に、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つの論理ボリュームとして複数のハード・ディスクが集約されますが、各ドライブにはパリティ情報が含まれていて、ドライブの1つに障害が発生してもフォルト・トレランスが機能します。障害の発生したドライブが1つあっても、RAID-5システムではデータへのアクセスを続けられます。ただし、パリティ情報からその場でバイトが再構築されるため、アクセス時間はかなり長くなります。通常、RAID-5ソリューションでは、障害のあるドライブを新しいドライブとホットスワップすることができます。ホットスワップにより、パリティ情報から障害のあるドライブのデータが新しいドライブに再構築されます。

4:1という書込み時のペナルティは、パリティ計算中の2回の読込みと2回の書込みから生じます。

### 順次アクセスおよびランダム・アクセス用の複数のストライプ化ボリューム

Windows Serverに十分な数の物理ディスクがある場合は、（オペレーティング・システム用のスタンドアロン・ハード・ディスクまたはストライプ化ボリュームの他に）少なくとも2つのストライプ化ボリュームを作成します。ストライプ化ボリュームの1つは順次データ・アクセスに、もう1つはランダム・データ・アクセスに使用できます。

たとえば、Oracle DatabaseのREDOログおよびアーカイブREDOログは、順次書き込まれます。ヘッドの移動が減るため、ハード・ディスクのパフォーマンスは、順次データの読込みまたは書込みのときに一番よくなります。

ただし、Oracle Databaseのデータファイルは通常はランダムな順序でアクセスされます。ハード・ディスクでのランダム・アクセスは、ヘッドの移動がかなり多くなり、データ・アクセス速度は低下します。

REDOログ・ファイルが（物理デバイス・レベルで）データファイルと分離されていないかぎり、UNDOファイルのI/O競合が発生し、両方のファイルのアクセス時間が増加する可能性があります。

## Windows Serverの仮想メモリー・ページング・ファイルの多重化

Windows Serverのメモリー・マネージャはあまり使用されないページをディスクに移動してホット・ページ用にさらに多くの物理メモリーを解放しようとするため、Oracle DatabaseがWindows Server上で実行される唯一のネットワーク・アプリケーションである場合でも、仮想メモリー・ページングが発生する可能性はあります。

Windows Serverの仮想メモリー・ページング・ファイルの多重化は、システム全体のパフォーマンスを上げる優れた方法です。ページング・ファイルを最低2つの異なる物理ボリューム（または、基になる物理ボリュームが重複しない場合は、論理ボリューム）に分割すると、仮想メモリーのスワップ操作のパフォーマンスが著しく向上します。

これは、仮想メモリー・ページングの高速化の手法としては優れていますが、ページング・アクティビティが多すぎる場合はそれでもパフォーマンスに影響があるため、サーバーにRAMを追加する必要があります。

ページング・ファイル・サイズに関する一般的なヒント

ページング・ファイルの合計サイズは、コンピュータ上の物理RAMの容量と少なくとも同じサイズにすることをお薦めします。合計サイズが物理RAMのサイズの2〜4倍という構成も珍しくはありません。ページングはできるだけ最小化してください。ただし、オペレーティング・システムのページング領域が不足したり少なくなったりするような状況は、何があっても避ける必要があります。適切にサイズ設定されたページング・ファイルが複数の物理ディスクにまたがり適正に分散されている場合は、I/Oの分散が最も効率的になります。これは、オペレーティング・システムがページング・ファイルにわたって公平に分散してページングするからです。

注意: Windowsの内部読取り/書込みバッチ・サイズは4KBです。

## 不要なフォアグラウンド・アプリケーションをすべて閉じる

前述の項にある手順を行った後は、不要なフォアグラウンド・アプリケーションを閉じることを忘れないでください。最初に、Windows Serverのコンソール・オペレータの「Startup」フォルダから、すべてのアプリケーションを削除します。次に、長時間実行されるスクリプトをコマンド・プロンプトから実行する場合は、Windows Serverが操作に集中でき、大量のウィンドウ再描画メッセージを処理する必要がないように、ウィンドウを最小化しておきます。さらに、スクリーン・セーバーを無効にします。スクリーン・セーバーは、すぐにCPUを飽和状態にすることがあります。スクリーン・セーバーを実行する必要がある場合は、処理時間の最も短い「模様なし」を選択します。