ヘッダーをスキップ

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

戻る | 次へ |

# 1 WindowsでのOracle Databaseアーキテクチャ

この章では、Oracle DatabaseアーキテクチャでWindowsオペレーティング・システムのより高度なサービスがどのように利用されているかを説明します。

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

- WindowsアーキテクチャでのOracle Database

- WindowsでのOracle Databaseのスケーラビリティ

- Oracle DatabaseとWindowsとの統合

- その他の参考資料

## WindowsアーキテクチャでのOracle Database

Windows上のOracle Databaseは、アプリケーションを構築するシステムとして、安定性、信頼性および高いパフォーマンスを提供します。データベースの各リリースでは、Windowsでのパフォーマンスを高めるために、プラットフォーム固有の新しい機能が提供されています。

Oracle Databaseは、Windows上でも他のプラットフォームと同じように動作します。このアーキテクチャは、Windowsで次のような利点を提供します。

- 自動ストレージ管理

- スレッドベースのアーキテクチャ

- ファイルI/Oの拡張

- RAWファイルのサポート

### 自動ストレージ管理

自動ストレージ管理（ASM）は、Oracle Databaseファイル用として作成された統合ファイル・システムおよびボリューム・マネージャです。ASMでは、ファイル・システムの管理を容易にすることで、RAW I/Oのパフォーマンスを高めます。何千にもなる可能性のあるOracle Databaseファイルを直接管理する必要がなくなり、データベース管理が単純化されます。これを実現するために、使用可能なすべての記憶域をディスク・グループに分割する機能を備えています。ユーザーは少ないディスク・グループを監視し、ASMがこれらのディスク・グループに各データベース・ファイルを自動的に配置します。

関連項目: 『Oracle Database管理者ガイド』の「自動ストレージ管理の使用」

### スレッドベースのアーキテクチャ

Oracle Databaseの内部プロセスのアーキテクチャは、スレッドベースです。スレッドは、プロセス内のプログラム命令を実行するオブジェクトです。スレッドにより、1つのプロセス内での同時処理が可能になり、プロセスが、異なるプロセッサ上でプログラムの異なる部分を同時に実行できます。スレッドベースのアーキテクチャには、次の利点があります。

- コンテキストのスイッチングが高速

- 共有メモリーを使用する必要がないため、システム・グローバル領域割当てルーチンがシンプル

- スレッドはプロセスよりも速く作成できるため、新規接続の高速な作成が可能

- スレッドはプロセスよりも多くのデータ構造を共有するため、メモリー使用量が減少

内部的には、スレッド・モデルを実装するコードはコンパクトで、Oracle Databaseコードの本体から分離されています。例外ハンドラおよびルーチンは、リソースを追跡し、割当てを解除します。これにより、リソース・リークまたはプログラムの誤動作による停止時間が生じず、堅牢性が増します。

Oracle Databaseは、一般的なWindowsプロセスではありません。Windowsでは、Oracle Databaseまたは自動ストレージ管理インスタンス（スレッドおよびメモリー構造）はWindowsのサービス、つまりオペレーティング・システムに登録されるバックグラウンド・プロセスです。サービスはWindowsによって起動されるため、ユーザーによる起動操作は必要ありません。このため、コンピュータの起動時にデータベースを自動的にオープンできます。

Windows上で複数のOracle Databaseまたは自動ストレージ管理インスタンスを実行する場合、各インスタンスでは、複数のコンポーネント・スレッドを持つ独自のWindowsサービスを実行します。スレッドには、データベースの使用に必須のスレッドと、特定のプラットフォームに固有のオプションのスレッドがあります。バックグラウンド・プロセスは、構成に応じて様々なデータファイルから読取りおよび書込みを行います。WindowsでのOracle Databaseアーキテクチャを図1-1に示します。WindowsでのOracle Databaseに必須のスレッドの例を表1-1に示します。

図1-1 WindowsでのOracle Databaseアーキテクチャ

「図1-1 WindowsでのOracle Databaseアーキテクチャ」の説明

表1-1 Oracle Databaseスレッド

Oracle Databaseスレッド | 説明 | 必須/オプション
--- | --- | ---
`DBW0` | データベース・ライター | 必須
`LGWR` | ログ・ライター | 必須
`MMAN` | メモリー・マネージャ・プロセス | 必須
`PMON` | プロセス・モニター | 必須
`PSPO` | プロセス起動プロセス | 必須
`SMON` | システム・モニター | 必須
`CKPT` | Windows上でデフォルトで動作するチェックポイント・プロセス（Windowsのスレッド） | 必須
`ARCH0` | アーカイブ・プロセス（またはWindowsのスレッド） | 必須
`RECO` | 分散リカバリ・バックグラウンド・プロセス | 必須

注意: 次の問合せを発行して、実行中のバックグラウンド・プロセスを表示できます。
    SQL> select * from v$bgprocess where paddr <> '00';

Oracle Database for Windowsは、一連の実行可能ファイルおよびDynamic Link Library（DLL）として提供されます。`ORASTACK`を使用して実行可能ファイルのイメージを変更し、Oracle Databaseプロセスのスレッドで使用されるスタックのサイズを変更できます。このツールは、必ずOracleサポート・サービスの指示に従って使用してください。

### ファイルI/Oの拡張

Oracle Databaseでは、64ビットのファイルI/Oをサポートするため、4GBを超えるサイズのファイルを使用できます。さらに、Windows上でOracle Real Application Clusters（Oracle RAC）をサポートし、最大限のパフォーマンスが必要な場合に備え、データファイル、ログ・ファイルおよび制御ファイルとして物理および論理RAWファイルがサポートされています。

Oracle Database 11gリリース1（11.1）では、オペレーティング・システム・カーネルのNFSクライアントを使用するかわりに、Oracle Databaseを構成し、Oracle内部のダイレクトNFSクライアントを直接使用してNFS V3サーバーにアクセスできます。この統合を通じて、OracleとNFSサーバー間のI/Oパスが最適化されるため、パフォーマンスが大幅に向上します。また、ダイレクトNFSクライアントにより、データベース・ワークロード用のNFSクライアント構成が簡素化および最適化されます。

現在、OracleのダイレクトNFSクライアントでは、スケーラビリティと高可用性を実現するために最大4つのパラレル・ネットワーク・パスがサポートされます。ダイレクトNFSクライアントにより、指定したすべてのパスでリクエストが自動的に負荷分散され、パフォーマンスが最適化されます。いずれかのネットワーク・パスに障害が発生すると、ダイレクトNFSクライアントにより残りのパスを通じてコマンドが再発行されるため、フォルト・トレランスと高可用性が保証されます。

関連項目: NFSの構成とマウントの詳細は、各ベンダーのドキュメントを参照。

### RAWファイルのサポート

RAWファイルではなく、自動ストレージ管理を使用することをお薦めします。それにより、RAWファイルのパフォーマンスが向上し、管理性を高めることができます。自動ストレージ管理は、単一インスタンスおよびOracle RACデータベースの両方で使用できます。

RAWファイルとは、1つの大きなファイルとして使用できるフォーマットされていないディスク・パーティションです。フォーマットされていないパーティションであるため、RAWファイルにはファイル・システムのオーバーヘッドがないという利点があります。Windowsでは、UNIXと同様、RAWファイルがサポートされています。データベース・ファイルまたはログ・ファイルにRAWファイルを使用すると、パフォーマンスが向上することがあります。Windows 2000以上には、全ボリュームを管理するディスク・マネージャ（`diskmgmt.msc`）があります。Windows 2003以上には、RAWを含むボリュームを管理するコマンドライン・ユーティリティ（`diskpart.exe`）もあります。RAWボリュームのアドレッシングにはWindowsのボリューム・マウント・ポイントを使用することをお薦めします。

Oracle Databaseでは、RAWファイルは他のOracle Databaseファイルと変わりありません。これらのファイルは、Oracle Databaseでは他のファイルと同様に扱われ、Recovery Managerまたは`OCOPY`を使用してバックアップおよびリストアできます。

注意: 管理者としてログオンするか、管理者グループのメンバーであるユーザー名を使用してログオンする必要があります。 ディスク管理コンソールを起動するには、「スタート」→「ファイル名を指定して実行」をクリックし、diskmgmt.mscと入力します。

関連項目: 付録A「RAWパーティションへの表領域の格納」 『Oracle Database管理者ガイド』の「自動ストレージ管理の使用」

## WindowsでのOracle Databaseのスケーラビリティ

Oracle Databaseの機能とWindowsオペレーティングシステムの機能が連携することで、スケーラビリティ、スループットおよびデータベースの容量が向上します。この機能には、次のものがあります。

- Very Large Memory（VLM）構成のサポート

- Windowsの4GB RAM Tuning（4GT）

- 多数のユーザーのサポート

### Very Large Memory（VLM）構成のサポート

Oracle Database for Windows（32-bit）は、Very Large Memory（VLM）構成をサポートしています。これにより、Oracle Databaseは、Windowsアプリケーションで以前から使用可能である4GBを超えるRAMにアクセスできるようになります。具体的には、Oracle Databaseは、Address Windowing Extensions（AWE）を使用して4GBを超えるRAMにアクセスします。

注意: この機能は、Intel Pentium II以上のプロセッサを搭載したWindowsで使用できます。 VLM構成は、Windows（x64）ではサポートされません。

このサポートを利用するための要件は、次のとおりです。

1. Oracle Databaseがインストールされているコンピュータに4GBを超えるメモリーが搭載されている必要があります。

2. `boot.ini`に/PAEスイッチを追加して、Physical Address Extensions（PAE）を利用できるようにオペレーティングシステムが構成されている必要があります。PAEを有効にするために`boot.ini`を変更する方法は、Microsoft Knowledge Baseの文書番号268363を参照してください。

3. /3GBパラメータを`boot.ini`に追加して4GTサポートを有効にすることをお薦めします（ただし、必須ではありません）。`boot.ini`を変更して4GTを有効にするための追加の要件と方法は、Microsoft Knowledge Baseの文書番号Q171793を参照してください。

4. Oracle Databaseを実行するユーザー・アカウント（通常は`LocalSystem`アカウント）には、Windows 2000およびWindows XPの「Lock pages in memory」権限が必要です。

5. VLMサポートを使用するデータベース・インスタンスの初期化パラメータ・ファイルに`USE_INDIRECT_DATA_BUFFERS=TRUE`が指定されている必要があります。このパラメータが設定されていない場合、Oracle Database 10gリリース1（10.1）以上は以前のリリースと同じように動作します。

6. 初期化パラメータ`DB_BLOCK_BUFFERS`および`DB_BLOCK_SIZE`は、Oracle Database用に選択した値に設定する必要があります。

   注意: データベース・バッファの合計バイト数（`DB_BLOCK_BUFFERS`に`DB_BLOCK_SIZE`を掛けた値）に対する3GBの制限はなくなりました。 VLMでは動的SGAおよびマルチ・ブロック・サイズはサポートされません。VLMが有効である場合、次の新しいバッファ・キャッシュ・パラメータはサポートされません。 `DB_CACHE_SIZE` `DB_2K_CACHE_SIZE` `DB_4K_CACHE_SIZE` `DB_8K_CACHE_SIZE` `DB_16K_CACHE_SIZE` `DB_32K_CACHE_SIZE` インスタンスのブロック・サイズを選択するには、初期化パラメータ`DB_BLOCK_SIZE`を使用します。バッファ・キャッシュ・サイズは、初期化パラメータ`DB_BLOCK_BUFFERS`によって設定されます。

7. レジストリ・パラメータ`AWE_WINDOW_MEMORY`は、Oracleホームに対して、該当するキーで作成および設定する必要があります。このパラメータはバイト単位で指定され、デフォルト値は1GBです。`AWE_WINDOW_MEMORY`は、2GB（4GTを有効化している場合は3GB）のアドレス空間のうち、データベース・バッファへのマッピング用として確保する量をOracle Databaseに指示します。

   このメモリーはOracle Databaseの2GB（4GTを有効化している場合は3GB）の仮想アドレス空間のものであるため、その値は3GB未満にする必要があります。このパラメータの値を大きくすると、アドレス空間の多くがバッファ用に使用され、バッファ用に使用されるAWEメモリーの使用量が減る効果があります。ただし、AWEバッファへのアクセス速度は仮想アドレス空間のバッファへのアクセス速度より若干遅いため、データベース操作に悪影響を及ぼさない範囲でできるだけ大きな値をこれらのパラメータに設定することをお薦めします。

   通常、`AWE_WINDOW_MEMORY`の設定値を高くするほど、Oracle Databaseで可能な接続数およびメモリー割当て量が少なくなります。`AWE_WINDOW_MEMORY`の設定値を低くするほど、パフォーマンスは低下します。

8. このパラメータを設定した後、Oracle Databaseを起動できます。Oracle Databaseは以前と同じように動作しますが、インスタンスに使用可能なデータベース・バッファの量が増えます。また、システム・グローバル領域（SGA）でキャッシュ可能なOracle Databaseデータ・ブロックが増えるため、ディスクI/Oを減らすことができます。

   注意: 以前のリリースでVLM構成の有効化に使用していたレジストリ・パラメータ`VLM_BUFFER_MEMORY`は、Oracle Database 10gリリース1（10.1）以上ではサポートされません。

VLMインスタンスのチューニング

VLM構成では、メモリーにキャッシュするデータベース・バッファを増やすことで、データベースのパフォーマンスが向上します。これにより、VLMを使用しない構成と比較してディスクI/Oが減少します。Oracle Database 10gリリース1（10.1）以上でのVLMサポートは、Windowsとの統合がさらに緊密になるように変更されています。VLMユーザーにとって、新しい実装では、Oracle8iリリース2（8.1.6）と比較してパフォーマンスが向上しています。

VLMのチューニングは、VLMを使用しない構成のチューニングと同じです。`DB_BLOCK_SIZE`および`DB_BLOCK_BUFFERS`初期化パラメータの選択を繰り返し、サポートされているアプリケーションに適切な値を見つけます。

注意: VLM構成では、複数のデータベース・ブロック・サイズをサポートしていません。

VLMに固有の新しいレジストリ・パラメータである`AWE_WINDOW_MEMORY`は、アドレス空間のうちデータベース・バッファへのマッピング用として確保する量をOracle Databaseに指示します。デフォルト値は、ほとんどのインストールに適した1GBです。ただし、`DB_BLOCK_SIZE`が大きい場合、`AWE_WINDOW_MEMORY`のデフォルト値の1GBでは、データベースを起動するために十分ではない場合があります。

`AWE_WINDOW_MEMORY`の値を大きくするとパフォーマンスは向上しますが、その他のOracle Databaseスレッド（フォアグラウンド・スレッドなど）に使用できるメモリー量が制限を受けます。この値を大きく設定しすぎると、メモリー不足エラーがクライアントに表示される場合があります。一般的な基準としては、`AWE_WINDOW_MEMORY`レジストリ値を20%増やします。

たとえば、`DB_BLOCK_SIZE`を8KB、`AWE_WINDOW_MEMORY`を1GB、LRUラッチの数を32（16プロセッサ・コンピュータ）に設定すると、メモリー不足エラー27102および34でデータベースの起動が失敗します。`AWE_WINDOW_MEMORY`の値を1.2GBまで大きくすると、この問題を解決できます。

VLM構成で大容量のキャッシュを使用する場合も、データベース・ライター（`DBWR`）スレッドが遅くなります。より多くの`DBWR`スレッドを使用すると、バッファを識別してディスクに書き込むために必要な処理が分散され、I/O負荷がスレッド間で分散されます。初期化パラメータ`DB_WRITER_PROCESSES`を使用すると、複数のデータベース・ライター・スレッドを構成できます。

また、大容量のキャッシュを使用すると、最低使用頻度（LRU）ラッチについて競合が発生します。対称型マルチプロセッサ（SMP）システムの場合、Oracle Databaseは、LRUラッチの数をシステム上のプロセッサ数の半分に設定します。このような構成の場合は、LRUラッチの数をシステム上のプロセッサ数の2倍（または4倍）に増やすことにより、競合を軽減できます。

関連項目: インスタンスのチューニングの詳細は、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照

### Windowsの 4GB RAM Tuning（4GT）

次のWindows（32-bit）オペレーティング・システムには、4GB RAM Tuning（4GT）と呼ばれる機能が組み込まれています。

- Windows Server 2003 R2

- Windows Server 2003

- Windows 2000 Advanced Server

- Windows 2000 Datacenter Server

- Windows Vista

注意: 4GTは、Windows（x64）ではサポートされません。

この機能により、Oracle Database Enterprise Editionで動作するメモリー集中型のアプリケーションは、旧バージョンのオペレーティング・システムの標準だった2GBではなく最大3GBのメモリーにアクセスできます。4GTを使用すると、データベース用として50%多いメモリーが使用可能になり、SGAサイズや接続数が増えるという、非常に大きな利点があります。

### 多数のユーザーのサポート

いくつかの新機能により、Oracle Databaseは、Windows上でより多くのデータベース接続をサポートできます。

- Oracle Database共有サーバー・プロセスは、Oracle Databaseプロセスで必要なスレッド数を制限しますが、1つのデータベース・インスタンスに対して10,000を超える同時接続をサポートします。

- Oracle Netの多重化および接続プーリング機能により、大規模構成でより多くのユーザーを1つのデータベース・インスタンスに接続できます。

- Oracle RACは、スループットを向上させるとともに、複数のサーバー・コンピュータが同じデータベース・ファイルにアクセスできるようにしてユーザー接続数を数万単位で増やし、接続数を大幅に増大します。

  注意: Oracle RACは、Windows XPとWindows Vistaではサポートされません。

## Oracle DatabaseとWindowsとの統合

Oracle DatabaseはWindowsとの統合を強化することにより、メンテナンスを容易にし、セキュリティ、ディレクトリ、トランザクション・サービスにおけるエンタープライズレベルでのデプロイメントを改善しています。Oracle Databaseの統合機能は次のとおりです。

- Oracle PKIとWindowsとの統合

- Oracle Services for Microsoft Transaction Server

- Oracle Fail SafeとWindowsとの統合

- Oracle RACとWindowsとの統合

### Oracle PKIとWindowsとの統合

Oracle Advanced Securityには、認証およびシングル・サインオンのためのOracle PKI（公開鍵インフラストラクチャ）が統合されています。Oracle Wallet Managerを使用して、OracleベースのアプリケーションとPKI認証および暗号化フレームワークを統合できます。

### Oracle Services for Microsoft Transaction Server

Microsoft Transaction Server（MTS）は、分散環境のCOM/COM+オブジェクトおよびトランザクション用のアプリケーション・サーバーとして中間層で使用されます。Windows 2000およびWindows XPでは、COM+の構成要素です。Oracle Services for Microsoft Transaction Serverを使用すると、Oracle DatabaseをMicrosoft Transaction Serverによって調整されるトランザクションのリソース・マネージャとして使用し、OracleソリューションとMicrosoft Transaction Serverを緊密に統合できます。Oracle Services for Microsoft Transaction Serverは、任意のオペレーティング・システムで実行されるOracle Databaseとともに実行できます。

Oracle Databaseではシステム固有の実装を利用し、リカバリ情報をOracle Databaseそのものに格納します。Oracle Services for Microsoft Transaction Serverにより、Oracle Objects for OLE（OO4O）、Oracle Call Interface（OCI）、ActiveX Data Objects（ADO）、OLE DB、Open Database Connectivity（ODBC）など、業界全体で使用されているすべてのデータ・アクセス・インタフェースでの開発が可能になります。Oracle API、OO4OおよびOCIは、効率的に最も優れています。

注意: Microsoft Transaction Serverは、Windows VistaにおけるCOM+の構成要素です。ただし、Oracle Services for Microsoft Transaction Serverは、Windows Vistaではサポートされません。 Oracle Objects for OLE（OO4O）は、Oracle Database 11gリリース1（11.1）for Windows（64-bit）ではサポートされません。

### Oracle Fail SafeとWindowsとの統合

Oracle Fail Safeを使用すると、Oracle Database（および他のOracleアプリケーションとサード・パーティ・アプリケーション）を、Windowsクラスタで高可用性を提供できるように構成および管理できます。インスタンスは、一度に1つのノードでのみ実行されます。

クラスタは、1つの仮想システムとして機能する独立したコンピュータ・システムのグループで、障害の発生箇所となった個々のホスト・システムを排除します。Oracle Fail Safeは、Microsoft Cluster Serverと連動して、1つのクラスタ・システムで障害が発生した場合に、そのシステムで動作しているワークロードを正常なシステムへ、迅速かつ自動的にフェイルオーバーします。Windowsクラスタ上でOracle DatabaseとOracle Fail Safeを組み合せることにより、ハードウェアおよびソフトウェア双方の障害からシステムを保護できます。

優れたソリューションにより、Oracle Fail Safeは、使用頻度の高いデータベースの場合も正常なシステムを即座に使用できるようにしています。

注意: Windows（32-bit）システム、Windows XPおよびWindows Vistaでは、Microsoft Cluster Serverで使用されているクラスタリング技術はサポートされていません。このため、Microsoft Cluster Serverと統合されるOracle Fail Safe Serverは、Windows XPとWindows Vistaではサポートされません。Oracle Fail Safe Managerコンソールはサポートされます。 Windows（x64）では、Oracle Fail Safe Managerはサポートされません。

関連項目: ご使用のOracle Fail Safeのドキュメント・セット（Oracle Databaseメディア・パックの個別のメディアで提供）

### Oracle RACとWindowsとの統合

Oracle RACは、クラスタ化をサポートするすべてのWindowsオペレーティング・システムにデプロイされたMicrosoft Cluster Serverクラスタと統合されます。次の機能を提供することにより、Oracle RACの高可用性機能を拡張します。

- クラスタ内で障害が発生したインスタンスまたはリスナーの自動再起動（オプション）

- インスタンスのハングアップの検出および解決

- 新規接続要求の接続時フェイルオーバーTCP/IPタイムアウト遅延の解消

- データベースの状態（オンライン/オフライン）が変更された後のユーザー作成スクリプトの使用

## その他の参考資料

追加情報は、次のドキュメントを参照してください。

- 付録D「Oracle DatabaseのWindowsとUNIXでの相違点」

- Oracle DatabaseとWindowsツールとの統合については、第2章「Windowsでのデータベース・ツール」を参照

- Oracle DatabaseとWindows機能との統合については、第16章「Windows用アプリケーションの開発」を参照