3.17.5 Oracle RACを使用したOracleへの接続

Oracle RACを使用したOracleへの接続方法は,Oracleのバージョン,または負荷分散に使用する機能によって異なります。なお,接続できるトランザクションの種類はローカルトランザクションです。

Oracleのバージョン,負荷分散に使用する機能および使用するRARファイルの対応については,「3.6.6 Oracleと接続する場合の前提条件と注意事項」を参照してください。

負荷分散に使用する機能ごとに,Oracleへの接続方法について説明します。

<この項の構成>
(1) アプリケーションサーバの機能を使用した接続
(2) Oracleの機能を使用した接続

(1) アプリケーションサーバの機能を使用した接続

アプリケーションサーバのコネクションプールのクラスタ化機能を使用して,Oracle RACに接続します。アプリケーションサーバがデータベースアクセスの負荷を分散します。コネクションプールのクラスタ化機能については,「3.17.1 クラスタコネクションプールの概要」を参照してください。

(a) 負荷分散処理の流れと設定

コネクションプールのクラスタ化機能を使用した場合の負荷分散処理の流れと設定を次の図に示します。

図3-64 コネクションプールのクラスタ化機能を使用した接続

[図データ]

この図では,3台構成のOracle RACシステムで,データベースノード1にはインスタンス1,データベースノード2にはインスタンス2,データベースノード3にはインスタンス3があります。データベースに接続するための設定を次に示します。

  1. インスタンス1,2,3に対応したメンバリソースアダプタ用DB Connector M1,M2,M3を生成します。また,メンバリソースアダプタに振り分ける機能を持つルートリソースアダプタ用DB Connector Rも生成します。
  2. J2EEアプリケーションはルートリソースアダプタ用DB Connector Rに関連づけます。

この設定によって,J2EEアプリケーション1,2からのデータベースアクセスはデータベースノード1,2,3に分散されます。

(b) データベース障害発生時と回復時の動作

データベース障害が発生した場合,アプリケーションサーバが障害を検知します。障害が発生したデータベースに対応するメンバリソースアダプタが閉塞され,残っているインスタンスで処理が続行されます。

データベース障害が回復するとアプリケーションサーバは自動で閉塞を解除します。また,手動でも閉塞を解除できます。

(2) Oracleの機能を使用した接続

DB ConnectorからOracle RACに接続し,Oracle RACの機能でデータベースアクセスの負荷を分散します。

(a) 負荷分散処理の流れと設定

Oracle RACの機能を使用した場合の負荷分散処理の流れと設定を次の図に示します。なお,この図はOracle10gの場合の図です。Oracle11gを使用している場合,図中の「サービスX」はありません。

図3-65 Oracle RACの機能を使用した接続

[図データ]

この図では,3台構成のOracle RACシステムで,データベースノード1にはインスタンス1,データベースノード2にはインスタンス2,データベースノード3にはインスタンス3があります。データベースに接続するための設定をOracle10gの場合とOracle11gの場合に分けて説明します。

Oracle10gの場合
  1. OracleにサービスXを作成します。サービスとは,Oracle10gから導入された機能です。
  2. サービスXでは,インスタンス1,2,3への接続を「優先」に設定します。なお,グローバルトランザクションは使用しないため,DTPは無効にします。
  3. サービスXに対応したDB Connector Aを生成します。
  4. DB Connector Aは,サービスXを使用するように設定します。
  5. J2EEアプリケーション1,および2をDB Connector Aに関連づけます。
Oracle11gの場合
  1. それぞれのインスタンスに分散して接続するDB Connector Aを生成します。
  2. DB Connector Aは,グローバルデータベース名またはサービス名を使用するように設定します。
  3. J2EEアプリケーション1,および2をDB Connector Aに関連づけます。

この設定によって,J2EEアプリケーション1,および2からのデータベースアクセスはデータベースノード1,2,3に分散されます。

(b) データベース障害発生時と回復時の動作

データベース障害が発生した場合,Oracle RAC機能によって障害が発生したインスタンスが切り離され,残っているインスタンスで処理が続行されます。

アプリケーションサーバのコネクションプールを使用している場合,データベース回復時には次の操作を実行してください。コネクションプールがクリアされ,これ以降のアクセスが正常に分散されます。