この章では、Oracle Fusion Middlewareの高可用性を設定して、データベース接続を構成するときの考慮事項について説明します。また、よくデプロイされるデータベースの高可用性ソリューションでOracle Real Application Clusters (Oracle RAC)を使用する利点についても説明します。
Fusion Middlewareコンポーネントのほとんどでは、そのデータの永続ストアとしてデータベースが使用されます。ここでOracle Databaseを使用すると、高可用性の様々な構成が可能になります。(Oracle Databaseのオプションの詳細は、『Oracle Database高可用性概要』を参照してください。)
内容は次のとおりです。
クラスタは、相互に接続された複数のコンピュータまたはサーバーで構成され、エンド・ユーザーおよびアプリケーションからは1つのサーバーとして認識されます。Oracle RACは、Oracle Fusion Middlewareに対して、Oracle Databaseのクラスタを構成し、スケーラビリティおよび可用性の高いデータベースを実現します。
Oracle WebLogic ServerにデプロイされるOracle Fusion Middlewareコンポーネントはすべて、Oracle RACをサポートします。
クラスタ内のすべてのOracle RACインスタンスは、同じアクセス権および認可レベルを持つため、ノードおよびインスタンスに障害が発生しても、障害が発生していないサーバー・インスタンスでデータベース・サービスを利用したり、利用可能な状態にすることができ、これにより、パフォーマンスに影響を及ぼす場合はありますが、停止することはありません。
表4-1は、Oracle RACの設定タスクの概要と、それに対応する参照情報を示しています。
表4-1 Oracle RACの設定手順
タスク/項目 | 参照先 |
---|---|
Oracle RACの概要 |
『Oracle Real Application Clusters管理およびデプロイメント・ガイド』のOracle RACの概要に関する項 |
Oracle RACのインストール |
『Oracle Real Application Clusters管理およびデプロイメント・ガイド』 |
Oracle RACの管理 |
『Oracle Real Application Clusters管理およびデプロイメント・ガイド』のOracle RAC環境の管理の概要に関する項 |
GridLinkおよびマルチ・データ・ソースの構成とチューニング |
『Oracle Fusion Middleware Oracle WebLogic Server JDBCデータ・ソースの構成と管理』 |
単一クライアント・アクセス名(SCAN)のURLの構成(WebLogicコンソールで、TNSおよびONSのリスナーに使用するホストとポートを指定します) |
『Oracle Fusion Middleware Oracle WebLogic Server JDBCデータ・ソースの構成と管理』のSCANアドレスに関する項 |
接続プールを確立する場合、Oracle Fusion Middlewareでは、XA JDBCドライバとXA以外のJDBCドライバ両方に対して、Oracle RACバックエンドのアクティブなGridLinkデータ・ソースおよびマルチ・データ・ソースがサポートされます。XAトランザクションの詳細は、第4.2.1項「XAトランザクションについて」を参照してください。これらのデータ・ソースでも同様に、Oracle RACノード全体のロード・バランシングがサポートされます。
Oracle RACのノードまたはインスタンスに障害が発生すると、Oracle WebLogic ServerまたはOracle Thin JDBCドライバによって、セッション・リクエストがクラスタ内の別のノードにリダイレクトされます。既存の接続のフェイルオーバーは行われません。アプリケーションからの新しい接続要求は、Oracle WebLogicプールの既存の接続を使用して処理されるか、稼働中のOracle RACインスタンスへの新しい接続によって処理されます。
データベースがトランザクション・マネージャの場合、通常、進行中のトランザクションはロールバックされます。
WebLogic Serverがトランザクション・マネージャの場合、進行中のトランザクションはフェイルオーバーされ、障害発生時のトランザクションの状態に基づいて、完了するかロールバックするかが判断されます。
XAトランザクションは、同一のトランザクション内から複数のリソース(データベース、アプリケーション・サーバー、メッセージ・キュー、トランザクション・キャッシュなど)にアクセスできます。XA以外のトランザクションに関係するリソースは、常に1つのみです。
XAトランザクションは、1つ以上のデータベースや、JMSのような他のリソースとのトランザクション調整マネージャを使用し、これらをすべて単一グローバル・トランザクションに集約しています。
Java EEでは、用語のJTAトランザクション、XAトランザクション、ユーザー・トランザクション、グローバル・トランザクションと同じ意味で、単一グローバル・トランザクションと呼ぶ場合もあります。このトランザクション・タイプには、複数の異なるXA対応のリソースやXA以外のリソース、さらには異なるリソース・タイプの操作も含まれる場合があります。JTAトランザクションは常に現行のスレッドに関連付けられており、1つのアプリケーションから別のアプリケーションをコールするように、サーバー間で移行される場合があります。一般的なXAトランザクションの例は、WebLogic JMSとJDBC (データベース)の両方の操作を含む構成です。
データ・ソースは、リレーショナル・データベースへの接続を取得するためにアプリケーション・コンポーネントで使用する抽象概念です。URLやユーザー名とパスワードなどの特定の接続情報は、データソース・オブジェクトでプロパティとして設定されるため、アプリケーション・コードで明示的に定義する必要はありません。この抽象化により、アプリケーションが特定のバックエンド・データベースに関連付けらなくなるため、アプリケーションをポータブルな方法で構築できます。データベースを変更しても、アプリケーション・コードに影響はありません。
データベース接続の高可用性、ロード・バランシング、フェイルオーバーをサポートするために、アクティブなGridLinkデータ・ソースとマルチ・データ・ソースが用意されています。ご使用のOracle RAC Databaseバージョンに応じて、次のデータ・ソース・タイプをお薦めします。
Oracle RACデータベースのバージョンが11gリリース2以降の場合は、アクティブなGridLinkデータ・ソースを使用します。
Oracle RACデータベースのバージョンが11gリリース2より前の場合や、Oracle Database以外のデータベースを使用している場合は、マルチ・データ・ソースを使用します。
注意: Oracle RACデータベースの可用性を最大限に高めるために、アクティブなGridLinkデータ・ソースの使用をお薦めします。アクティブなGridLinkデータ・ソースがサポートされていないOracle RACデータベースのバージョンの場合は、マルチ・データ・ソースを使用して可用性を高めることをお薦めします。 |
これらのデータ・ソース・タイプの詳細は、次の各項を参照してください。
アクティブなGridLinkデータソースは、Oracle RACクラスタに含まれる可能性があるWebLogic ServerとOracle Databaseサービス間の接続を提供します。アクティブなGridLinkデータ・ソースには、汎用データ・ソースの機能に加え、Oracle RACに対する次のサポートが含まれています。
Oracle RACにおける状態変化に適応して対処するために、Oracle Notification Service (ONS)を使用します。
高速アプリケーション通知(FAN)イベントに応答して、高速接続フェイルオーバー(FCF)、ランタイム接続ロード・バランシング、およびRACインスタンスの正常な停止を提供します。FANは、構成やワークロードに関するアラートをアプリケーションにすばやく伝えることができる、Oracle RACの通知メカニズムです。
セッションのすべてのデータベース操作がRACクラスタの同じインスタンスに送信されて、最適なパフォーマンスが得られるように、アフィニティ(XAアフィニティ)ポリシーを提供します。
SCANアドレス
Oracleウォレットを使用したセキュアな通信
次の各トピックの詳細は、『Oracle Fusion Middleware Oracle WebLogic Server JDBCデータ・ソースの構成と管理』のアクティブなGridLinkデータ・ソースの使用に関する項を参照してください。
アクティブなGridLinkデータ・ソースとは
ソケット・ダイレクト・プロトコルの使用
接続プール機能の構成
Oracleパラメータの構成
ONSクライアントの構成
アクティブなGridLinkデータ・ソース接続プールのチューニング
GridLink JDBCリソースの監視
マルチ・データ・ソースとは、データ・ソースのグループの抽象概念であり、接続要求時には、マルチ・データ・ソースに関連付けられたデータ・ソースの間で、ロード・バランシングまたはフェイルオーバーが処理されます。マルチ・データ・ソースは、XAデータ・ソースとXA以外のデータ・ソース両方のロード・バランシングをサポートします。
マルチ・データ・ソースでは、接続リクエストを満たすために使用する、データ・ソースの順序付きリストが提供されます。通常、このようなマルチ・データ・ソースへの接続リクエストはすべて、リストの先頭のデータ・ソースによって処理されます。データベース接続テストが失敗して接続を置き換えられなかった場合、またはデータ・ソースが中断された場合は、リストの次のデータ・ソースから順番に接続が検索されます。
マルチ・データ・ソースは、通常のデータ・ソースと同様に、JNDIツリーまたはローカル・アプリケーション・コンテキストにバインドされます。アプリケーションは、単純なデータ・ソースと同様に、JNDIツリーまたはローカル・アプリケーション・コンテキスト(java:comp/env
)でマルチ・データ・ソースを検索してから、データベース接続を要求します。マルチ・データ・ソースによって、マルチ・データ・ソース構成で選択されたアルゴリズム(ロード・バランシングまたはフェイルオーバー)に応じて、リクエストに対応するために使用するデータ・ソースが決定します。
関連項目: Oracle RACを使用したマルチ・データ・ソースの構成の詳細は、『Oracle Fusion Middleware Oracle WebLogic Server JDBCデータ・ソースの構成と管理』のOracle RACを使用したマルチ・データ・ソースの使用に関する項を参照してください。 |
アクティブなGridLinkデータ・ソースの構成方法は、使用しているOracleコンポーネントおよび作成するドメインによって異なります。
この項では、ドメインの作成時に、RACデータベース用のアクティブなGridLinkデータ・ソースとして、コンポーネント・データ・ソースを構成する方法について説明します。
このトピックには、次の項があります。
関連項目: アクティブなGridLinkデータ・ソースの作成および構成方法については、『Oracle Fusion Middleware Oracle WebLogic Server JDBCデータ・ソースの構成と管理』のアクティブなGridlinkデータ・ソースの使用に関する項を参照してください。 |
アクティブなGridLinkデータ・ソースとして、Oracle RACデータベース用のコンポーネント・データ・ソースを構成する前に、次の要件が満たされていることを確認します。
Oracle RACデータベースのバージョン11gリリース2以降を使用している。
RCUを実行してコンポーネント・スキーマが作成されている。
ドメインを作成または構成するための構成ウィザードで、「JDBCコンポーネント・スキーマ」画面まで進み、「コンポーネント・データソース」を選択する。「JDBCコンポーネント・スキーマ」画面まで進む前に、「データベース構成タイプ」画面で「手動での構成」オプションを選択する必要があります。
アクティブなGridLinkデータ・ソースとしてコンポーネント・データ・ソースを構成するには、次の手順を実行します。
「JDBCコンポーネント・スキーマ」画面で、1つ以上のコンポーネント・スキーマを選択してGridLinkデータ・ソースを構成します。
「GridLinkへ変換」を選択して、「次へ」を選択します。
「GridLink Oracle RACコンポーネント・スキーマ」画面で、いずれかのGridLink JDBCドライバを選択します。
「サービス名」フィールドに、データベースのサービス名を小文字で入力します。たとえば、mydb.example.com
とします。
「スキーマ所有者」フィールドに、対応するコンポーネントのデータベース・スキーマ所有者の名前を入力します。
「スキーマ・パスワード」フィールドに、データベース・スキーマ所有者のパスワードを入力します。
「サービス・リスナー」、「ポート」、「プロトコル」の各フィールドに、RACデータベースで使用するSCANアドレスとポートを入力します。イーサネット用のプロトコルはTCP、Infinibandの場合はSDPです。複数のリスナーのアドレスを入力する場合は、「追加」をクリックします。
SCANアドレスは、TCPプロトコルを使用してデータベース内の適切なパラメータを問い合せることで識別できます。
show parameter remote_listener
NAME TYPE VALUE
--------------------------------------------------------------------
remote_listener string db-scan.example.com:1521
SCANアドレスの識別には、srvctl config scan
コマンドを使用することもできます。SCANリスナー・ポートを識別する場合は、コマンドsrvctl config scan_listener
を使用します。
「FANの有効化」を選択して、FANイベントを受信および処理できるようにします。アドレスおよびポート情報をリスニングするONSデーモンを1つ以上入力します。複数のエントリを入力する場合は、「追加」を選択します。
注意: ONSデーモン用に入力したリスニング・アドレスが有効かどうかを検証してください。ドメインの作成時には、アドレスは検証されません。 |
ONSホスト・アドレスの場合は、Oracle RACデータベースのSCANアドレスおよびデータベースから報告されたONSリモート・ポートを使用できます。
srvctl config nodeapps -s ONS exists: Local port 6100, remote port 6200, EM port 2016
ONSとSSL通信を行うために「SSLの有効化」を選択します。SSL証明書を格納するウォレット・ファイルを入力し、ウォレットのパスワードを入力します。
「次へ」を選択します。すべての接続が正常かどうかを検証します。
関連項目: 詳細は、次を参照してください:
|
WebLogicコンソールでTNSリスナーとONSリスナーの両方にホストおよびポートを指定するには、Oracle単一クライアント・アクセス名(SCAN)アドレスを使用することをお薦めします。Oracle RACノードを追加または削除する場合、SCANアドレスを含むアクティブなGridLinkデータ・ソースを更新する必要はありません。ご使用の環境に対して適切に構成されたSCAN URLについては、御社のネットワーク管理者に問い合せてください。『Oracle Fusion Middleware Oracle WebLogic Server JDBCデータ・ソースの構成と管理』ガイドのSCANアドレスに関する説明を参照してください。
マルチ・データ・ソースは、次のものを使用して構成できます。
Oracle Fusion Middlewareの構成ウィザード(WebLogic Serverドメインの作成時)
Oracle WebLogic Server管理コンソール
WLSTコマンド
この項の内容は次のとおりです。
この項では、Oracle RACでマルチ・データ・ソースを構成するための要件と手順について説明します。
この項の内容は次のとおりです。
マルチ・データ・ソースとして、Oracle RACデータベース用のコンポーネント・データ・ソースを構成する前に、次の要件が満たされていることを確認します。
Oracle RACデータベースを使用している。
RCUを実行してコンポーネント・スキーマが作成されている。
ドメインを作成または構成するための構成ウィザードで、「JDBCコンポーネント・スキーマ」画面まで進み、「コンポーネント・スキーマ」を選択する。
マルチ・データ・ソースとしてコンポーネント・データ・ソースを構成するには、次の手順を実行します。
「コンポーネント・データソース」画面で、1つ以上のコンポーネント・スキーマを選択してアクティブなGridLinkデータ・ソースを構成します。
「RACマルチ・データ・ソースへ変換」を選択し、「次へ」を選択します。
「Oracle RACマルチ・データ・ソース・コンポーネント・スキーマ」画面で、JDBCドライバにOracle RACサービス・インスタンス接続用Oracleのドライバ(Thin)、バージョン:10以降を選択します。
「サービス名」フィールドに、データベースのサービス名を小文字で入力します(例: mydb.example.com
)。
「スキーマ所有者」フィールドに、対応するコンポーネントのデータベース・スキーマ所有者のユーザー名を入力します。通常、この名前はRCUprefix_componentのようになります。
「スキーマ・パスワード」フィールドに、データベース・スキーマ所有者のパスワードを入力します。
「ホスト名」、「インスタンス名」、「ポート」の各フィールドに、RACノードのホスト名、データベース・インスタンス名、ポート番号を入力します。複数のリスナーのアドレスを入力する場合は、「追加」をクリックします。
「次へ」をクリックします。すべての接続が正常かどうかを検証します。
マルチ・データ・ソースには、データベース・サービスを提供するRACインスタンスごとの構成データ・ソースが存在します。RACのバックエンドにインスタンスを追加する場合は、Fusion Middleware層でマルチ・データ・ソースにデータ・ソースを追加することをお薦めします。
非RACのデータベースをRACデータベースに移行する場合は、影響を受けるデータ・ソースごとに同等のマルチ・データ・ソースを新しく作成する必要があります。作成するマルチ・データ・ソースには、各RACインスタンスを構成するデータ・ソースが必要です。データ・ソースのプロパティ値は、第4.5.1項で説明するプロパティに関して、元の単一インスタンス・データ・ソースの値と同じである必要があります。たとえば、単一インスタンス・データ・ソース・ドライバがoracle.jdbc.xa.client.OracleXADataSource
である場合、新しいマルチ・データ・ソースの各構成データ・ソースのドライバはoracle.jdbc.xa.client.OracleXADataSource
である必要があります。
手動で作成されたマルチ・データ・ソースまたは初期構成の後に変更されたマルチ・データ・ソースについては、可用性を最大限に高めるために、次のXAデータ・ソースおよびXA以外のデータ・ソースのプロパティ値に設定することを強くお薦めします。環境の要件により変更が必要な場合は、検討とテストを十分に行ってから変更してください。
次の各表は、XAおよびXA以外のデータ・ソースについて、プロパティの推奨値を示しています。
高可用性環境では、個々のデータ・ソースに対して次の設定をお薦めします。その他のパラメータについても、アプリケーション要件に従って設定することをお薦めします。
表4-3 XAデータ・ソース構成
プロパティ名 | 推奨値 |
---|---|
ドライバ |
oracle.jdbc.xa.client.OracleXADataSource |
プロパティ・コマンド |
<property> <name>oracle.net.CONNECT_TIMEOUT</name> <value>10000</value> </property> |
initial-capacity |
0 |
connection-creation-retry-frequency-seconds |
10 |
test-frequency-seconds |
300 |
test-connections-on-reserve |
true |
test-table-name |
SQL SELECT 1 FROM DUAL |
seconds-to-trust-an-idle-pool-connection |
0 |
global-transactions-protocol |
TwoPhaseCommit |
keep-xa-conn-till-tx-complete |
true |
xa-retry-duration-seconds |
300 |
xa-retry-interval-seconds |
60 |
警告メッセージのトラブルシューティング(XAデータ・ソースのトランザクション・タイムアウト値の増加)
サーバー・ログに次の例外を含む警告メッセージが表示された場合は、XAのタイムアウトの設定値を増やす必要があることを示している可能性があります。
[ javax.transaction.SystemException: Timeout during commit processing
このような警告が表示された場合は、個々のデータ・ソースのXAタイムアウトを増加できます。
XAデータ・ソース設定のトランザクション・タイムアウト値を増やすには、管理コンソールで次の手順を実行します。
データ・ソース構成にアクセスします。
「トランザクション」タブを選択します。
XAトランザクション・タイムアウトを、300のように大きな値に設定します。
「XAトランザクション・タイムアウトの設定」チェック・ボックスを選択します。このチェック・ボックスは、新しいXAトランザクション・タイムアウト値を有効にするために選択する必要があります。
「保存」をクリックします。
XAマルチ・データ・ソースの個々のデータ・ソースすべてに対してこの構成を繰り返します。
表4-4 XA以外のデータ・ソース構成
プロパティ名 | 推奨値 |
---|---|
ドライバ |
oracle.jdbc.OracleDriver |
設定するプロパティ |
<property> <name>oracle.net.CONNECT_TIMEOUT</name> <value>10000</value> </property> |
initial-capacity |
0 |
connection-creation-retry-frequency-seconds |
10 |
test-frequency-seconds |
300 |
test-connections-on-reserve |
true |
test-table-name |
SQL SELECT 1 FROM DUAL |
seconds-to-trust-an-idle-pool-connection |
0 |
global-transactions-protocol |
なし |
MDSデータベース・ベースのリポジトリを使用するアプリケーションは、高可用性Oracleデータベースへのアクセス用に構成できます。この構成では、MDS(およびWebLogicインフラストラクチャ)による障害検出、リカバリおよび再試行によって、アプリケーションの読取り専用のMDS操作が、Oracle RACデータベースの計画停止および計画外停止から保護されます。
マルチ・データ・ソースは、Fusion Middleware Controlのナビゲーション・ツリーに、MDSリポジトリとして公開されます。これらのマルチ・データ・ソースは、アプリケーション・デプロイメントのカスタマイズ時に選択したり、MDS WLSTコマンドで使用することもできます。
読取り専用操作を再試行できるようなアプリケーションの構成
接続を再試行できるようにアプリケーションを構成するには、アプリケーションのMDS AppConfig MBeanのRetryConnection
属性を構成します。詳細は、『Oracle Fusion Middleware管理者ガイド』を参照してください。
MDSマルチ・データ・ソースの登録
第4.5.1項「Oracle RACでのマルチ・データ・ソースの構成」で説明した手順以外にも、次の点を検討してください。
MDSリポジトリに使用されるマルチ・データ・ソースを構成する子データ・ソースは、XA以外のデータ・ソースとして構成する必要があります。
マルチ・データ・ソースの名前には、mds-
という接頭辞を付ける必要があります。これにより、Fusion Middleware Control、WLSTおよびJDeveloperを介してMDS管理機能に使用できるMDSリポジトリとして、マルチ・データ・ソースが認識されるようになります。
注意: MDSデータ・ソースをマルチ・データ・ソースの子として追加すると、このデータ・ソースはMDSリポジトリとしては公開されなくなります。たとえば、これはFusion Middleware Controlのナビゲーション・ツリーで、「メタデータ・リポジトリ」フォルダの下に表示されなくなり、それに対してMDSリポジトリの操作を実行できなくなって、デプロイメント時には選択可能なリポジトリのリストに表示されなくなります。 |
マルチ・データ・ソースへのデータ・ソースの変換
データ・ソースをマルチ・データ・ソースに変換して、アプリケーションが正しく構成されるかどうかを検証する場合は、次の2点に注意する必要があります。
新しい一意の名前を持つマルチ・データ・ソースを新規作成するには、アプリケーションを再デプロイして、デプロイメント・プランのカスタマイズ時に、この新しいマルチ・データ・ソースをMDSリポジトリとして選択します。
アプリケーションの再デプロイを回避するには、データ・ソースを削除し、同じ名前とjndi-name属性を使用して、新しいマルチ・データ・ソースを再作成できます。