この項では、Oracle Fusion Middlewareの高可用性を設定して、データベース接続を構成するときの考慮事項について説明します。また、よくデプロイされるデータベースの高可用性ソリューションでOracle Real Application Clusters (Oracle RAC)を使用する利点についても説明します。コンポーネントのほとんどでは、そのデータの永続ストアとしてデータベースが使用されます。ここでOracle Databaseを使用すると、高可用性の様々な構成が可能になります。
データベースのオプションの詳細は、『Oracle Database高可用性概要』を参照してください。
この項の内容は次のとおりです。
クラスタは、相互に接続された複数のコンピュータまたはサーバーで構成され、エンド・ユーザーおよびアプリケーションからは1つのサーバーとして認識されます。Oracle RACは、Oracle Databaseのクラスタを構成し、スケーラビリティおよび可用性に優れています。
Oracle WebLogic ServerにデプロイされるOracle Fusion Middlewareコンポーネントはすべて、Oracle RACをサポートします。
クラスタ内のすべてのOracle RACインスタンスは、同じアクセス権および認可レベルを持ちます。ノードおよびインスタンスに障害が発生しても、障害が発生していないサーバー・インスタンスでデータベース・サービスが利用可能であるか、利用可能な状態にすることができるため、パフォーマンスに影響を及ぼす場合はありますが、停止することはありません。
次の表に、タスクの概要と、Oracle RAC設定の参照先を示します。
表5-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データ・ソースおよびマルチ・データ・ソースがサポートされます。これらのデータ・ソースでも同様に、Oracle RACノード全体のロード・バランシングがサポートされます。
Oracle RACのノードまたはインスタンスに障害が発生すると、WebLogic ServerまたはOracle Thin JDBCドライバによって、セッション・リクエストがクラスタ内の別のノードにリダイレクトされます。既存の接続はフェイルオーバーしません。新しいアプリケーションの接続要求は、WebLogicプールの既存の接続を使用して処理されるか、稼働中のOracle RACインスタンスへの新しい接続によって処理されます。
データベースがトランザクション・マネージャの場合、通常、進行中のトランザクションはロールバックされます。
WebLogic Serverがトランザクション・マネージャの場合、進行中のトランザクションはフェイルオーバーされ、障害発生時のトランザクションの状態に基づいて、完了するかロールバックするかが判断されます。
XAトランザクションの詳細は、第5.3.1項「XAトランザクションについて」を参照してください。
XAトランザクションは、同一のトランザクション内から複数のリソース(データベース、アプリケーション・サーバー、メッセージ・キュー、トランザクション・キャッシュなど)にアクセスできます。XA以外のトランザクションに関係するリソースは、常に1つのみです。
XAトランザクションは、1つ以上のデータベースや、JMSのような他のリソースとのトランザクション調整マネージャを使用し、これらをすべて単一グローバル・トランザクションに集約しています。
Java EEでは、用語のJTAトランザクション、XAトランザクション、ユーザー・トランザクション、グローバル・トランザクションと同じ意味で、グローバル・トランザクションと呼ぶ場合もあります。このトランザクション・タイプには、複数の異なるXA対応のリソースやXA以外のリソース、さらには異なるリソース・タイプの操作も含まれる場合があります。JTAトランザクションは、常に現在のスレッドに関連付けられており、1つのアプリケーション呼出しとしてサーバー間で受け渡すこともできます。一般的なXAトランザクションの例は、WebLogic JMSとJDBC (データベース)の両方の操作を含む構成です。
データ・ソースは、リレーショナル・データベースへの接続を取得するためにコンポーネントで使用する抽象概念です。URLまたはユーザー名とパスワードなどの特定の接続情報が、データ・ソース・オブジェクト上でプロパティとして設定されます。アプリケーション・コードで、プロパティを明示的に定義する必要はありません。この抽象化により、アプリケーションが特定のバックエンド・データベースに関連付けらなくなるため、アプリケーションをポータブルな方法で構築できます。データベースは、アプリケーション・コードに影響を与えずに変更できます。
アクティブなGridLinkデータ・ソースとマルチ・データ・ソースが、データベース接続の高可用性、ロード・バランシング、フェイルオーバーをサポートします。ご使用のOracle RACデータベース・バージョンに応じて、次のデータ・ソース・タイプをお薦めします。
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に対する次のサポートがあります。
ONSを使用して、Oracle RACにおける状態変化に対応します。
高速アプリケーション通知(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でのマルチ・データ・ソースの使用に関する項を参照してください。 |
Active GridLinkデータ・ソースの構成は、次の内容により異なります。
操作しているOracleコンポーネント
作成しているドメイン
この項では、ドメインの作成時に、RACデータベース用のアクティブなGridLinkデータ・ソースとして、コンポーネント・データ・ソースを構成する方法について説明します。
この項の内容は次のとおりです。
関連項目: アクティブなGridLinkデータ・ソースの作成および構成方法については、『Oracle Fusion Middleware Oracle WebLogic Server JDBCデータ・ソースの構成と管理』のアクティブなGridlinkデータ・ソースの使用に関する項を参照してください。 |
Oracle RACデータベースで使用するアクティブなGridLinkデータ・ソースとしてコンポーネント・データ・ソースを構成する前に、システムが次の要件を満たしている必要があります。
Oracle RACデータベースのバージョン11gリリース2以降を使用している。
RCUを実行してコンポーネント・スキーマが作成されている。
ドメインを作成または構成するための構成ウィザードで、「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データベースを使用している。
RCUを実行してコンポーネント・スキーマが作成されている。
ドメインを作成または構成するための構成ウィザードで、「JDBCコンポーネント・スキーマ」画面まで進み、「コンポーネント・スキーマ」を選択する。「JDBCコンポーネント・スキーマ」画面まで進む前に、「データベース構成タイプ」画面で「手動構成」オプションを選択する必要があります。
マルチ・データ・ソースとしてコンポーネント・データ・ソースを構成するには、次の手順を実行します。
「コンポーネント・データソース」画面で、1つ以上のコンポーネント・スキーマを選択してRACマルチ・データ・ソースを構成します。
「RACマルチ・データ・ソースへ変換」を選択し、「次へ」を選択します。
「Oracle RACマルチ・データ・ソース・コンポーネント・スキーマ」画面で、JDBCドライバにOracle RACサービス・インスタンス接続用Oracleのドライバ(Thin)、バージョン:10以降を選択します。
「サービス名」フィールドに、データベースのサービス名を小文字で入力します(例: mydb.example.com
)。
「スキーマ所有者」フィールドに、対応するコンポーネントのデータベース・スキーマ所有者のユーザー名を入力します。
「スキーマ・パスワード」フィールドに、データベース・スキーマ所有者のパスワードを入力します。
「ホスト名」、「インスタンス名」、「ポート」の各フィールドに、RACノードのホスト名、データベース・インスタンス名、ポート番号を入力します。複数のリスナーのアドレスを入力する場合は、「追加」をクリックします。
「次へ」をクリックします。すべての接続が正常かどうかを検証します。
マルチ・データ・ソースには、データベース・サービスを提供するRACインスタンスごとの構成データ・ソースが存在します。RACのバックエンドにインスタンスを追加する場合は、Fusion Middleware層でマルチ・データ・ソースにデータ・ソースを追加することをお薦めします。
非RACのデータベースをRACデータベースに移行する場合は、影響を受けるデータ・ソースごとに同等のマルチ・データ・ソースを新しく作成する必要があります。作成するマルチ・データ・ソースには、各RACインスタンスを構成するデータ・ソースが必要です。データ・ソースのプロパティ値は、第5.6.1項で説明するプロパティに関して、元の単一インスタンス・データ・ソースの値と同じである必要があります。たとえば、単一インスタンス・データ・ソース・ドライバがoracle.jdbc.xa.client.OracleXADataSource
である場合、新しいマルチ・データ・ソースの各構成データ・ソースのドライバはoracle.jdbc.xa.client.OracleXADataSource
である必要があります。
手動で作成されたマルチ・データ・ソースまたは初期構成の後に変更されたマルチ・データ・ソースについては、可用性を最大限に高めるために、次のXAデータ・ソースおよびXA以外のデータ・ソースのプロパティ値に設定することを強くお薦めします。環境の要件により変更が必要な場合は、検討とテストを十分に行ってから変更してください。
次の各表は、XAおよびXA以外のデータ・ソースについて、プロパティの推奨値を示しています。
高可用性環境では、個々のデータ・ソースに対して次の設定をお薦めします。その他のパラメータについても、アプリケーション要件に従って設定することをお薦めします。
表5-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のタイムアウトの設定値を増やす必要があります。
[javax.transaction.SystemException: Timeout during commit processing
XAデータ・ソース設定のトランザクション・タイムアウト値を増やすには、管理コンソールで次の手順を実行します。
データ・ソース構成にアクセスします。
「トランザクション」タブを選択します。
XAトランザクション・タイムアウトを、300のように大きな値に設定します。
「XAトランザクション・タイムアウトの設定」チェック・ボックスを選択します。このチェック・ボックスは、新しいXAトランザクション・タイムアウト値を有効にするために選択する必要があります。
「保存」をクリックします。
XAマルチ・データ・ソースの個々のデータ・ソースすべてに対してこの構成を繰り返します。
表5-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 |
なし |
次の操作に対してWebLogic Serverのトランザクション・マネージャを有効にするには、適切なデータベース権限が必要です。
トランザクション状態情報の問合せ
WebLogic Serverコンテナで障害が発生した後の処理中トランザクションのリカバリ時における、コミットやロールバックなどの適切なコマンドの発行
トランザクション・リカバリ権限のスキーマを構成する手順は次のとおりです。
sysdba権限を持つユーザーとしてSQL*Plusにログオンします。例:
sqlplus "/ as sysdba"
sys.dba_pending_transactions
に対してselectをappropriate_user
に付与します。
任意のトランザクションに対してforceをappropriate_user
に付与します。
MDSデータベース・ベースのリポジトリを使用するアプリケーションは、高可用性Oracleデータベースへのアクセス用に構成できます。この構成により、MDS(およびWebLogicインフラストラクチャ)による障害検出、リカバリおよび再試行が、アプリケーションの読取り専用のMDS操作を、Oracle RACデータベースの計画停止および計画外停止から保護します。
Fusion Middleware Controlのナビゲーション・ツリーに、マルチ・データ・ソースがMDSリポジトリとして公開されます。これらのマルチ・データ・ソースは、アプリケーション・デプロイメントのカスタマイズ時に選択したり、MDS WLSTコマンドで使用することもできます。
読取り専用操作を再試行できるようなアプリケーションの構成
接続を再試行できるようにアプリケーションを構成するには、アプリケーションのMDS AppConfig MBeanのRetryConnection
属性を構成します。『Oracle Fusion Middleware管理者ガイド』を参照してください。
MDSマルチ・データ・ソースの登録
第5.6.1項「Oracle RACでのマルチ・データ・ソースの構成」で説明した手順以外にも、次の点に注意してください。
MDSリポジトリに使用されるマルチ・データ・ソースを構成する子データ・ソースは、XA以外のデータ・ソースとして構成する必要があります。
マルチ・データ・ソースの名前には、接頭辞mds-
を付ける必要があります。これにより、MDS管理機能に使用できるMDSリポジトリとして、マルチ・データ・ソースが認識されるようになります。
注意: MDSデータ・ソースをマルチ・データ・ソースの子として追加すると、このデータ・ソースはMDSリポジトリとしては公開されなくなります。Fusion Middleware Controlのナビゲーション・ツリーの、「メタデータ・リポジトリ」フォルダの下には表示されません。それに対するMDSリポジトリの操作を実行できず、選択可能なリポジトリのリストにデプロイメント時に表示されません。 |
マルチ・データ・ソースへのデータ・ソースの変換
データ・ソースをマルチ・データ・ソースに変換して、アプリケーションの構成を検証する場合は、次の2点を考慮する必要があります。
新しい一意の名前を持つマルチ・データ・ソースを新規作成するには、アプリケーションを再デプロイして、デプロイメント・プランのカスタマイズ時に、この新しいマルチ・データ・ソースをMDSリポジトリとして選択します。
アプリケーションの再デプロイを回避するには、データ・ソースを削除し、同じ名前とjndi-name属性を使用して、新しいマルチ・データ・ソースを再作成できます。