Oracle® Data Provider for .NET開発者ガイド ODAC 12c リリース4 (12.1.0.2) for Microsoft Windows E72575-01 |
|
前 |
次 |
この項では、次の製品の最適化について説明します。
Oracle Real Application Clusters (Oracle RAC)とは、従来のシェアード・ナッシング・アプローチや共有ディスク・アプローチの制限を克服し、ビジネス・アプリケーションに拡張性および可用性の高いデータベース・ソリューションを提供する共有キャッシュ・アーキテクチャを使用したクラスタ・データベースです。詳細は、『Oracle Real Application Clusters管理およびデプロイメント・ガイド』を参照してください。
Oracle Data Guardには、Oracleデータを障害や災害、ヒューマン・エラー、そしてデータ破損から保護し、重要なアプリケーションの高可用性を確保するために、1つ以上のスタンバイ・データベースが用意されています。『Oracle Data Guard概要および管理』を参照してください。
Oracle GoldenGateは、異機種間のデータ環境でデータをレプリケートします。これにより、運用および分析用エンタープライズ・システム間での高可用性ソリューション、リアルタイム・データ統合、トランザクション変更データの取得、データ・レプリケーション、変換および検証が可能になります。詳細は、『Oracle Database高可用性概要』を参照してください。
グローバル・データ・サービス(GDS)は、Oracle Database 12cの新機能で、Data GuardやGoldenGateなどのレプリケートされたデータベース全体でデータベース・ワークロード管理機能を実現します。
ODP.NETでは、Oracle Real Application Clusters (Oracle RAC)、Data GuardおよびGoldenGateが透過的にサポートされるため、これらのOracleコンポーネントを使用するためにODP.NETのコードを変更する必要はありません。これらのテクノロジをさらに活用するため、ODP.NETには、アプリケーションの高可用性およびパフォーマンスの向上を実現する接続プーリング最適化機能が用意されています。これを実現するには、.NETアプリケーションを対象にデータベース・ステータス・メッセージを受信、応答および送信するようにODP.NETを構成します。
これらの最適化構成には、高速アプリケーション通知(FAN)、ランタイム接続ロード・バランシング、高速接続フェイルオーバー(FCF)などの機能の使用が含まれます。
これらの接続プーリング最適化によって、Oracle Real Application Clustersおよびグローバル・データ・サービス製品の高可用性とパフォーマンスを向上できます。
高速アプリケーション通知(FAN)は、Oracle RAC、Data Guard、GoldenGateでODP.NETアプリケーションにクラスタ構成およびサービス・レベルの情報を通知するために使用される高可用性とロード・バランシングの通知メカニズムであり、この情報にはUPイベントやDOWNイベント、サーバー・ロードなどのステータスの変更が含まれます。FANのUPイベントおよびDOWNイベントは、インスタンス、サービスおよびノードに適用できます。受信した情報に従って、ODP.NETは、アプリケーションの可用性とパフォーマンスを向上するためにその接続プールを調整できます。FANの詳細は、『Oracle Real Application Clusters管理およびデプロイメント・ガイド』を参照してください。
FANでは、Oracle RAC、Data GuardおよびGoldenGateは、次の2つのOracleメッセージ交換インフラストラクチャのいずれかを使用して、ODP.NETアプリケーションに通知を送信します。
Oracle Notification Service(ONS)
Oracle Streams Advanced Queueing (AQ)
表3-4で、各メッセージ・システムの使用時期と、ODP.NET関連のクライアント構成について説明します。
表3-4 ODP.NETドライバ・タイプ別の構成
ODP.NETドライバ・タイプ | データベース・サーバーのバージョン | FANインフラストラクチャ | 構成 | 手動ONS構成の場所 |
---|---|---|---|---|
管理対象 |
12.1以上 |
ONS |
自動または手動 |
次の2つのファイルのいずれか
|
管理対象 |
11.2以下 |
ONS |
手動 |
次の2つのファイルのいずれか
|
管理対象外 |
12.1以上 |
ONS |
自動または手動 |
|
管理対象外 |
11.2以下 |
AQ |
自動 |
N/A |
.NET構成ファイルを構成するには、「onsConfigセクション」を参照してください。ONS構成ファイルを構成するには、「クライアント側のONSデーモン構成」を参照してください。oraaccess.xml
を構成するには、『Oracle Call Interfaceプログラマーズ・ガイド』を参照してください。
FAN用のAQ構成の詳細は、「データベース通知をリスニングするポートの構成」を参照してください。
自動ONS構成では、開発者は、ODP.NETがデータベースから自動的に取得するノードおよびポートに加え、ODP.NETがリスニングするための別のノードおよびポートを追加できます。
ODP.NETアプリケーションは、コードを変更することなく、AQからONS FANインフラストラクチャに移行できます。ただし、前述のとおり、ONSへの移行や、新しいデータベース・サーバーのバージョンへの移行、またはODP.NET管理対象外ドライバから管理対象ドライバへの移行時には、ODP.NETクライアント構成の変更が必要になる場合があります。
データベースのサーバー側では、FANを設定して構成する必要があります。
データベースからのFANメッセージを使用して、ODP.NETは次のことを実行できます。
ランタイム接続ロード・バランシングの機能を使用して、ODP.NETは、Oracle RACノード、サービス、サービス・メンバーおよびGDSリソース間の接続における負荷のバランスを調整できます。この機能によって、ODP.NETのレスポンスが早くなり、サーバー・リソースのリソース割当てが改善されます。詳細は、「実行時接続ロード・バランシング」を参照してください。
データベース・ノード、サービス、サービス・メンバー、データベースが停止した場合に、高速接続フェイルオーバー(FCF)の機能を使用して、Oracle RAC、Data GuardおよびGoldenGateからODP.NET接続プールに情報を伝えることができます。この停止メッセージは、プール内のどの接続が無効であり、削除する必要があるのかを示します。『Oracle Database開発ガイド』を参照してください。
ロード・バランシング・アドバイザリおよびサービス目標に応じて、Oracle Data Provider for .NETは、ランタイム接続ロード・バランシングを使用して、Oracle RACインスタンス間の作業要求のバランスを調整します。ワークロードは常に変化し続けるので、ロード・バランシングが実行されるのは、アプリケーションから新しい接続要求を受けたときです。これにより、その時点で最も負荷の少ないノードがユーザーの接続先となり、サービス・レベルがODP.NETにより最適化されます。
Oracle Database 12cでは、ランタイム接続ロード・バランシングの機能拡張により、Oracle Data GuardおよびOracle GoldenGateをサポートするようになったことで、ODP.NET 12cの接続に対して、これら2つのデータベース・サービスのロード・バランスもグローバル・データ・サービスの一部として調整されるようになりました。ランタイム接続ロード・バランシングをすでに使用している場合は、ODP.NETアプリケーションのコードを変更することなく、グローバル・データ・サービスを使用できます。
ランタイム接続ロード・バランシングを有効にした場合:
ODP.NET接続プールは、ロード・バランシング・アドバイザリおよびサービスの目的に基づき、接続を分配します。
また、ODP.NET接続プールは、ロード・バランシング・アドバイザリおよびサービスの目的に基づき、サービスを提供する各サービス・メンバーに対して接続数のバランスを調整します。
デフォルトでは、この機能は無効です。ランタイム接続ロード・バランシングを有効にするには、接続文字列に、"Load Balancing=true
"を含めます。この機能は、"pooling=true"
の場合にのみ使用できます。「Load Balancing=true
」の設定でシングルインスタンスのデータベースに接続しようとすると、「ORA-1031: 権限が不足しています
」というエラーによってOracleException
がスローされます。ランタイム接続ロード・バランシングを使用するには、特定のOracleサーバー構成を設定する必要があります。
次の例は、ランタイム接続ロード・バランシングを有効にする接続文字列です。
"user id=scott;password=tiger;data source=erp;load balancing=true;"
関連項目:
|
Oracle RACサービス、サービス・メンバー、ノードまたはData Guardデータベースに障害が発生しても、切断されたODP.NET接続オブジェクトは引き続きアプリケーションに存在する可能性があります。ユーザーがこれらの無効な接続の使用を試みると、エラーが発生します。FCFによって、ODP.NETは、事前にこれらの切断済の接続を迅速に解放できます。ユーザーは、サーバー側の障害後も、管理者による手動操作なしでアプリケーションを使用できます。
Oracle Database 12cでは、FCFの機能拡張により、グローバル・データ・サービスを通じたODP.NET 12cの接続に対して、Oracle Data GuardおよびOracle GoldenGateをサポートするようになりました。FCFをすでに使用している場合は、ODP.NETアプリケーションのコードを変更することなく、グローバル・データ・サービスを使用できます。
ODP.NETアプリケーションのFCFは、高可用性イベントの「HA Events
」という接続文字列属性を使用して有効にできます。HAイベントが有効の場合:
ODP.NET接続プールでは、グローバル・データ・サービス、Oracle RACサービス、サービス・メンバー、ノードまたはデータベースの停止時に、プールから接続が事前に削除されます。
ODP.NETでは、既存のコールを終了してハングを避けるため、停止したデータベースからのレスポンスを事前にスレッドで強制的に待機します。このような接続がプールに戻されると、その接続に関連付けられていたリソースは解放されます。
切断された接続を削除して、次の接続要求時に接続合計数が「min pool size
」を下回った場合、ODP.NETは既存のOracleインスタンスへの接続を確立します。
デフォルトでは、この機能は無効です。HAイベントを有効にするには、接続文字列に「HA Events=true
」および「pooling=true
」を含めます。
次の例は、HAイベントを有効にする接続文字列です。
"user id=scott;password=tiger;data source=erp;HA events=true;"
関連項目:
|
FCFの高可用性は、ノード障害のような計画外停止だけでなく、サーバーの修復、更新、変更などの計画済停止にも有効であるため、ODP.NETアプリケーションのユーザーに対してサービスの中断を最小限に抑えることができます。
データベース・サービスを停止または再配置するように設定した場合、計画済理由コード付きでFANメッセージが発行されます。FCF対応のODP.NET接続プール(HA Events=true
)が通知を受け取ると、アイドル接続のクローズ処理が開始されて、その特定のデータベース・サービスに対する新規接続はブロックされるようになります。そのデータベース・サービスに対してアクティブだった接続は、ユーザーが各自の作業を終えて接続をプールに返すまで、アクティブの状態が続きます。これによって、計画済停止のために、ユーザーの作業を中断せずに済みます。
最終的には、すべてのユーザーが各自の作業を終えて、そのデータベース・サービスに対する接続がなくなります。その時点で、データベース管理者はサービスを停止し、計画済停止の作業に着手できます。この機能を活用することで、エンド・ユーザーの作業を妨げず、最短の時間でデータベース・サービスを停止できます。
一般的な計画済停止のシナリオは次のとおりです。
データベース・サーバーのソフトウェアまたはハードウェアの問題に対してアップグレード、パッチ適用または修復を行う必要が発生します。インスタンスからサービスを再配置し、インスタンス上のサービスを停止します。
FAN計画済DOWNイベントにより、アイドル・セッションがODP.NET接続プールからただちにクリアされ、次のチェックインで解放されるアクティブ・セッションがマークされます。これらのFANアクションにより、ユーザーの作業を妨げずにセッションがインスタンスから排出されます。
他のインスタンスの既存の接続は使用可能なままで、これらのインスタンスに新しい接続をオープンできます。
どの場合でも、すべてのセッションが接続をプールにチェックインするわけではありません。インスタンスが強制的に停止され、残っているクライアント接続を削除するタイムアウト期間を設定するのが最適です。
アップグレード、パッチまたは修復が完了したら、元のノードでインスタンスとサービスを再起動します。これにより、ODP.NETでインスタンスを再度使用できるようになります。
シングルインスタンス・データベースに対して接続プールが作成された場合、プール・サイズ属性は単一のサービスに適用されます。同様に、Oracle RACデータベースに対して接続プールが作成された場合、プール・サイズ属性はサービスに適用され、サービス・メンバーには適用されません。たとえば、Min Pool Size
がN
に設定されている場合、ODP.NETでは各サービス・メンバーに対してN
個の接続を作成しません。かわりに、サービス全体に対して最小N
個の接続を作成し、サービス・メンバー間でN
個の接続が分散されます。
次のプール・サイズ接続文字列属性が、サービスに適用されます。
Min Pool Size
Max Pool Size
Incr Pool Size
Decr Pool Size