Oracle Application Server 10g Fast Connection...

20
Oracle Application Server 10g Fast Connection Failover 構成ガイド オラクル・ホワイト・ペーパー 2006 10

Transcript of Oracle Application Server 10g Fast Connection...

Page 1: Oracle Application Server 10g Fast Connection …otndnld.oracle.co.jp/.../OracleApplicationServer10gFCF.pdfOracle Application Server 10g Fast Connection Failover 構成ガイド 1.

Oracle Application Server 10g Fast Connection Failover 構成ガイド

オラクル・ホワイト・ペーパー 2006 年 10 月

Page 2: Oracle Application Server 10g Fast Connection …otndnld.oracle.co.jp/.../OracleApplicationServer10gFCF.pdfOracle Application Server 10g Fast Connection Failover 構成ガイド 1.

Oracle Application Server 10g Fast Connection Failover 構成ガイド

1. 概要 ............................................................................................................... 3 2. OracleAS 10gにおけるFast Connection Failoverの構成 ............................. 4

2.1 Fast Connection FailoverをサポートしているJDBC接続URLのタイ

プ 4 2.2 OracleAS 10g中間層でImplicit Connection CacheおよびFast

Connection Failoverを有効にする ........................................................ 5 2.2.1 OracleAS 10g R2 データソースでImplicit Connection Cacheお

よびFast Connection Failoverを有効にする.............................. 6 2.2.2 OracleAS 10g R3 データソースでImplicit Connection Cacheお

よびFast Connection Failoverを有効にする.............................. 7 2.3 RACノードから中間層にイベントを伝播するためのOracle

Notification Serverの構成 ...................................................................... 8 2.3.1 10g R1 DbにおけるFCF ONS構成 ............................................ 9 2.3.2 10g R2 DbにおけるFCF ONS構成 ............................................ 9 2.3.3 OracleAS 10g R2 におけるFCF ONS構成 .............................. 10 2.3.4 OracleAS 10g R3 におけるFCF ONS構成 .............................. 11

3. OracleAS環境におけるFast Connection Failoverのテストと検証 .......... 12 3.1 RACノードと中間層間のONS通信の検証 ....................................... 13 3.2 JDBCドライバがONSイベントを処理し、正しくフェイルオーバー

していることを検証する ................................................................... 16 まとめ ................................................................................................................ 18 付録 .................................................................................................................... 19

Oracle Application Server 10g Fast Connection Failover 構成ガイド

2

Oracle Corporation 発行「Oracle Application Server 10g Fast Connection Failover Configuration Guide」の翻訳版です。

Page 3: Oracle Application Server 10g Fast Connection …otndnld.oracle.co.jp/.../OracleApplicationServer10gFCF.pdfOracle Application Server 10g Fast Connection Failover 構成ガイド 1.

Oracle Application Server 10g Fast Connection Failover 構成ガイド

1. 概要

Oracle Application Sever の高可用性ソリューションは、Oracle データベースの高可

用性機能と連携して使用でき、他に匹敵するものがないエンドツーエンドな高可

用性を提供します。

Fast Connection Failover は、オラクル環境における中間層テクノロジとデータベー

ス層テクノロジの高度な統合を明確に実証しています。この 2 つの層の障害通知

メカニズムは Oracle Notification Server(ONS)に基づき統合され、DB インスタン

スに障害が起きた場合、データベースはただちに中間層に通知します。

実装面から見ると、Fast Connection Failover(FCF)は、Oracle 10g JDBC ドライバ

の機能である JDBC Implicit Connection Cache(ICC)が提供する Real Application

Cluster(RAC)10g クライアントです。その第一の目的は、キャッシュで接続の妥

当性と可用性を保証することです。主に次の機能を提供します。

° Implicit Connection Cacheにおける接続の迅速なDead Connection Detection

(DCD)

° キャッシュからの古い接続や不良な接続の削除

° 上位層での再試行を容易にするコール元へのエラーの伝播

° 新しいデータベース・インスタンスがReal Application Clusterと結合する

ときの接続再配分

ONS サービス

停止通知

ONS サービス

開始通知

Oracle Application Server 10g Fast Connection Failover 構成ガイド

3

Oracle Corporation 発行「Oracle Application Server 10g Fast Connection Failover Configuration Guide」の翻訳版です。

Page 4: Oracle Application Server 10g Fast Connection …otndnld.oracle.co.jp/.../OracleApplicationServer10gFCF.pdfOracle Application Server 10g Fast Connection Failover 構成ガイド 1.

Oracle Application Server 10g R3 以降、Implicit Connection Cache および Fast

Connection Failover は、Oracle Containers for J2EE(OC4J)データソースに完全に

統合されました。そのため、この機能の構成が非常に簡単になり、FCF と組み合

せた場合に使用できるデータソース関連の機能(EJB に対するコンテナ管理永続

性など)もすべて利用できます。Oracle Application Server の以前のリリースでも、

FCF の機能を十分に活用しながら 大可用性が得られますが、いくつかの特別な

構成変更も必要です。このホワイト・ペーパーの目的は次のとおりです。

1. Oracle Application Server の各リリースで Fast Connection Failover を有効にする

構成ガイドを提供

2. OracleAS 中間層と Oracle Database RAC 間の Fast Connection Failover が正しく

機能していることを検証するテストのセットとトラブルシューティングのヒ

ントを提供

このホワイト・ペーパーでは、Fast Connection Failover で使用される様々な機能や

テクノロジの技術的な説明はしません。付録に掲載したその他のドキュメントや

詳細を参照してください。

2. OracleAS 10g における Fast Connection Failover の構成

Oracle Application Server 10g のリリースが異なっても、Fast Connection Failover の

構成に必要な手順は同じです。

° JDBC接続URLは、データベースに接続するサービス名を使用する必要が

あります。サービスIDは使用できません。

° 対応するOracle Containers for J2EEデータソースでImplicit Connection

CacheとFCFが有効になります。

° データベース(10g R1または10g R2のReal Application Clusters(RAC))

とOracleAS中間層の間でイベントを伝播するように、Oracle Notification

Server(ONS)が構成されます。

以降では、この各手順について、OracleAS 10g の各リリースごとに詳しく説明し

ます。環境固有の問題の発生を防ぐため、Metalink(Metalink.oracle.com)を通じ

て両方の層(データベースと中間層)に 新のパッチが適用されているか確認す

ることを強くお薦めします。

2.1 Fast Connection Failover をサポートしている JDBC 接続 URL の

タイプ

FCF を有効にする場合、OracleAS のデータソース定義で使用された URL のサー

ビス名識別子のみを使用できます。次に、OracleAS で使用される有効な URL の例

を示します。

Oracle Application Server 10g Fast Connection Failover 構成ガイド

4

Oracle Corporation 発行「Oracle Application Server 10g Fast Connection Failover Configuration Guide」の翻訳版です。

Page 5: Oracle Application Server 10g Fast Connection …otndnld.oracle.co.jp/.../OracleApplicationServer10gFCF.pdfOracle Application Server 10g Fast Connection Failover 構成ガイド 1.

url="jdbc:oracle:oci:@TNS_ALIAS" or url="jdbc:oracle:oci:@(DESCRIPTION= (LOAD_BALANCE=on) (ADDRESS=(PROTOCOL=TCP)(HOST=host1) (PORT=1521)) (ADDRESS=(PROTOCOL=TCP)(HOST=host2)(PORT=1521)) (CONNECT_DATA=(SERVICE_NAME=service_name)))" or url="jdbc:oracle:oci:@(DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=cluster_alias) (PORT=1521)) (CONNECT_DATA=(SERVICE_NAME=service_name)))" or url = "jdbc:oracle:thin@//host:port/service_name" url = “jdbc:oracle:thin@//cluster-alias:port/service_name" or url="jdbc:oracle:thin:@(DESCRIPTION= (LOAD_BALANCE=on) (ADDRESS=(PROTOCOL=TCP)(HOST=host1) (PORT=1521)) (ADDRESS=(PROTOCOL=TCP)(HOST=host2)(PORT=1521)) (CONNECT_DATA=(SERVICE_NAME=service_name)))" or url = "jdbc:oracle:thin:@(DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=cluster_alias) (PORT=1521)) (CONNECT_DATA=(SERVICE_NAME=service_name)))" service_name ベースの URL のみが許されます。すなわち、データベース用の SID

に基づいた従来の URL は無効です。 無効な使用方法: url = "jdbc:oracle:thin@host:port:SID"

2.2 OracleAS 10g 中間層で Implicit Connection Cache および Fast Connection Failover を有効にする

Implicit Connection CacheのOracleASデータソースへの統合は、OracleASのリリース

に伴い進化してきました1 。 初のOracleAS 10gリリース(10g R1 および 10g R2)

では、そのデータソースをImplicit Connection Cacheのデータソースに直接置き換

えることができました。 新リリース(10g R3 および 10g SOA)では、OracleAS

はImplicit Connection CacheをOracleASが管理するデータソースに完全に統合しま

す。以降では、10gの各リリースに対してOracleASデータソース構成でICCを有効

にする方法を説明します。

1 他のデータソースの詳細は、ここを参照してください。

Oracle Application Server 10g Fast Connection Failover 構成ガイド

5

Oracle Corporation 発行「Oracle Application Server 10g Fast Connection Failover Configuration Guide」の翻訳版です。

Page 6: Oracle Application Server 10g Fast Connection …otndnld.oracle.co.jp/.../OracleApplicationServer10gFCF.pdfOracle Application Server 10g Fast Connection Failover 構成ガイド 1.

2.2.1 OracleAS 10g R2 データソースで Implicit Connection Cache およ

び Fast Connection Failover を有効にする

OracleAS 10g R2 では、Implicit Connection Cacheサポートはネイティブなデータ

ソースに限られます[1]。エミュレート・データソースと非エミュレート・データ

ソースは、この機能をサポートしません(つまり、このリリースでは、コンテナ

管理永続性EJBをFCFと一緒に使用できません)。OracleAS 10g R2 およびR3 に含

まれるデフォルトJDBCドライバは、JDBC 10.1.0.5 である点に注意してください 2 。構成するトポロジで使用するデータベース・リリースによっては、JDBCドラ

イバのアップグレードが必要な場合があります。OracleASに含まれるJDBCドライ

バのアップグレードと証明書は、これらのJDBCドライバの特定のバージョンに限

られます。使用可能/証明済ドライバと必要なパッチは、Metalinkで確認してくだ

さい。JDBC thin driversのアップグレードまたは変更は、ここで説明します。テス

トとデバッグには、既存のドライバを更新バージョンで直接オーバーライドしま

す。ただし、この直接置換にはクラスローディング問題の可能性があるため、通

常は避けてください。

OracleAS インスタンスで ICC と FCF を有効にするには、データソース構成

(OracleASInstanceHOME/j2ee/oc4j_home/config 下の data-sources.xml ファイル)を

次のように変更する必要があります。

° データソース・クラスとして“oracle.jdbc.pool.OracleDataSource”を指定

° “connectionCacheName”プロパティと“connectionCachingEnabled=true”プロ

パティを指定

° “fastConnectionFailoverEnabled=true”プロパティを指定

次の data-sources.xml のサンプルでは、これらの変更を赤で示しています。

<data-source class="oracle.jdbc.pool.OracleDataSource" name="OracleDS" location="jdbc/OracleCache" connection-driver="oracle.jdbc.driver.OracleDriver" username="scott" password="tiger" url="jdbc:oracle:thin:@(DESCRIPTION= (LOAD_BALANCE=on) (ADDRESS=(PROTOCOL=TCP)(HOST=host1) (PORT=1521)) (ADDRESS=(PROTOCOL=TCP)(HOST=host2)(PORT=1521)) (CONNECT_DATA=(SERVICE_NAME=service_name)))"> <property name="connectionCacheName" value="ICC"/> <property name="connectionCachingEnabled" value="true"/> <property name="fastConnectionFailoverEnabled" value="true"/> </data-source>

2 10.1.0.4.2/10.1.0.5

Oracle Application Server 10g Fast Connection Failover 構成ガイド

6

Oracle Corporation 発行「Oracle Application Server 10g Fast Connection Failover Configuration Guide」の翻訳版です。

Page 7: Oracle Application Server 10g Fast Connection …otndnld.oracle.co.jp/.../OracleApplicationServer10gFCF.pdfOracle Application Server 10g Fast Connection Failover 構成ガイド 1.

2.2.2 OracleAS 10g R3 データソースで Implicit Connection Cache およ

び Fast Connection Failover を有効にする

OracleAS 10g R3 では、Implicit Connection Cacheは、管理されたデータソースとネ

イティブなデータソース両方でサポートされます[2]。必要に応じて、OracleAS 10g

R3 に含まれるJDBCドライバをアップグレードできます。使用可能/証明済ドライ

バとパッチは、常にMetalinkで確認してください。このアップグレードの実行に必

要な手順は、OracleAS 10g R2 のJDBCドライバをアップグレードする手順とは異

なります。その手順については、ここで説明します。

OracleAS 10g R3 の管理されたデータソースで ICC を有効にするには、次の手順を

実行します。

° 同じファイルの各XML要素でconnection-pool-name属性を使用して、この

管理されたデータソースがその接続のプールに使用する接続キャッシュ

の名前を指定します。

° “connectionCacheName”プロパティと“connectionCachingEnabled=true”プロ

パティを指定します。

° “fastConnectionFailoverEnabled=true”プロパティを指定します。

次の data-sources.xml のサンプルでは、OracleAS 10gR3 の管理されたデータソース

で ICC と FCF を有効にするための変更を赤で示しています。

<managed-data-source jndi-name="jdbc/ManagedDS" description="Managed DataSource" connection-pool-name="myConnectionPool“ name="ManagedDS"/> <connection-pool name="myConnectionPool“ min-connections="10" max-connections="30" inactivity-timeout="30"> <connection-factory factory-class="oracle.jdbc.pool.OracleDataSource" user="scott" password="tiger" url="jdbc:oracle:thin:@(DESCRIPTION= (LOAD_BALANCE=on) (ADDRESS=(PROTOCOL=TCP)(HOST=host1) (PORT=1521)) (ADDRESS=(PROTOCOL=TCP)(HOST=host2)(PORT=1521)) (CONNECT_DATA=(SERVICE_NAME=service_name)))"> <property name="loginTimeout" value="30"/> <property name="connectionCachingEnabled" value="true"/> <property name="fastConnectionFailoverEnabled" value="true"/> </connection-factory> </connection-pool> ネイティブなデータソースの場合、変更点は OracleAS 10g R2 の場合と同じです。

° データソース・クラスとして“oracle.jdbc.pool.OracleDataSource”を使用する

必要があります。

° “connectionCacheName”プロパティと“connectionCachingEnabled=true”プロ

パティを指定する必要があります。

° “fastConnectionFailoverEnabled=true”プロパティを指定します。

Oracle Application Server 10g Fast Connection Failover 構成ガイド

7

Oracle Corporation 発行「Oracle Application Server 10g Fast Connection Failover Configuration Guide」の翻訳版です。

Page 8: Oracle Application Server 10g Fast Connection …otndnld.oracle.co.jp/.../OracleApplicationServer10gFCF.pdfOracle Application Server 10g Fast Connection Failover 構成ガイド 1.

次の data-sources.xml のサンプルでは、OracleAS 10gR3 のネイティブなデータソー

スで ICC と FCF を有効にするための変更を赤で示しています。

<native-data-source name="nativeDataSource" jndi-name="jdbc/nativeDS" description="Native DataSource" data-source-class="oracle.jdbc.pool.OracleDataSource" user="scott" password="tiger" url="jdbc:oracle:thin:@(DESCRIPTION= (LOAD_BALANCE=on) (ADDRESS=(PROTOCOL=TCP)(HOST=host1) (PORT=1521)) (ADDRESS=(PROTOCOL=TCP)(HOST=host2)(PORT=1521)) (CONNECT_DATA=(SERVICE_NAME=service_name)))"> <property name="connectionCacheName" value="ICC"/> <property name="connectionCachingEnabled" value="true"/> <property name="fastConnectionFailoverEnabled" value="true"/> </native-data-source>

2.3 RAC ノードから中間層にイベントを伝播するための Oracle Notification Server の構成

これは、Fast Connection Failover を正しく構成するための 重要部分です。中間層

による JDBC 接続の検出とクリーンアップは、RAC ノードから中間層へのデータ

ベース・イベントの正しい伝播に完全に依存します。すでに説明したとおり、こ

れらの通知は Oracle Notification Server(ONS)により発行されます。Oracle

Application Server のリリースごとに異なる ONS バージョンが使用されます。次に、

各製品にバンドルされた Oracle Notification Server のリリースを示します。

° Oracleデータベース(10g R1または10g R2)には、ONS 10.1.2が入ってい

ます。

° OracleAS 10g R2はONS 10.1.2を使用します。

° OracleAS 10g R3はONS 10.1.3を使用します。

各 ONS の構成は、それぞれの製品/リリースの組合せにより多少異なります。各

製品リリース用の構成が置かれるファイルは次のとおりです。

° RACノード(10g R1または10g R2)のONS定義は、OHOME/opmn/conf

/ons.configに置かれます。

° OracleAS 10g R2のONS構成は、OHOME/opmn/ons.confで指定されます。

° OracleAS 10g R3のONS構成は、OHOME/opmn/conf/opmn.xmlで指定されま

す。

Oracle Application Server 10g Fast Connection Failover 構成ガイド

8

Oracle Corporation 発行「Oracle Application Server 10g Fast Connection Failover Configuration Guide」の翻訳版です。

Page 9: Oracle Application Server 10g Fast Connection …otndnld.oracle.co.jp/.../OracleApplicationServer10gFCF.pdfOracle Application Server 10g Fast Connection Failover 構成ガイド 1.

Fast Connection Failover に関して、これらのファイルには通知を送受信する ONS

のアドレスとポートが入ります。ONS が Fast Connection Failover イベントに使用

するポートは、「remoteport」というタグが付いたポートです。ONS 通信は、中間

層とRACノードONS構成の両方で正しいウォレット構成を指定することにより、

SSL を通じて保護できます。ただし、一般に Db ノードはセキュアな層で実行する

ものであるため、ONS に対しては SSL を無効にするほうが適しています([4]、[5])。

その場合、RAC ノードおよび RAC ノードと直接通信するすべての中間層で、無

効にする必要があります。

終パラメータを保存する場所とは関係なく、ONS 構成の方法は製品リリースに

よっても異なる場合があります。一般に、Db クライアントは Db ノードのアドレ

スを使用して構成しますが、その逆はありません(すなわち、すべての中間層の

ONS リスナーのアドレスで Db ノードを構成する必要はありません)。ただし、

OracleAS 10g R2 中間層では例外があります。それについては次に説明します。

2.3.1 10g R1 Db における FCF ONS 構成

Oracle 10g R1 DB では、OracleDB_HOME/opmn/conf 下の ons.config ファイルを編

集する必要があります。次に例を示します。

localport=6100 remoteport=6202 nodes=rac_node1.us.oracle.com:6200, rac_node2.us.oracle.com:6200 この変更を有効にするには、onsctl reconfig コマンドを使用して ONS を再起動す

る必要があります。ONS タイムアウトと接続性問題を回避するため、RAC クラス

タのすべてのインスタンスとすべての DB インスタンスでこれを実行し、すべて

のノードに同じ ONS 構成を共有させる必要があります。

2.3.2 10g R2 Db における FCF ONS 構成

DBCA を使用して作成された Oracle 10g R2 Db の場合、ONS のホスト/ポート構成

は自動的に追加されます。それ以外では、Oracle Clusterware ホームから racgons [8]

ユーティリティを使用して手動でホストを追加する必要があります。ホストを手

動で追加するには、ONS デーモンがクラスタで稼働しており、各デーモンが構成

に存在する他のすべてのホストを認識している必要があります。Oracle

Clusterware bin ディレクトリ(ORA_CRS_HOME/bin/racgons)から racgons を

次のように使用します。

racgons add_config hostname:port [hostname:port] ... 例(rac_node2 を rac_node1 ONS に追加): racgons add_config rac_node2.us.oracle.com:6200

Oracle Application Server 10g Fast Connection Failover 構成ガイド

9

Oracle Corporation 発行「Oracle Application Server 10g Fast Connection Failover Configuration Guide」の翻訳版です。

Page 10: Oracle Application Server 10g Fast Connection …otndnld.oracle.co.jp/.../OracleApplicationServer10gFCF.pdfOracle Application Server 10g Fast Connection Failover 構成ガイド 1.

2.3.3 OracleAS 10g R2 における FCF ONS 構成

ファームの構成管理に DCM を使用していない OracleAS スタンドアロン・インス

タンスの場合、OracleASHome/opmn/conf 下にある ons.conf ファイルを直接編集す

ることにより ONS 構成を変更できます。次に例を示します

localport=6100 remoteport=6202 nodes=rac_node1.us.oracle.com:6200, rac_node2.us.oracle.com:6200, mt_node1.us.oracle.com:6202, mt_node2.us.oracle.com: ただし、中間層インスタンスがファーム(ファイル・ベースまたはデータベース・

ベース)の一部である場合、OracleAS Distributed Configuration Management(DCM)

は、ONS 構成ファイルに対して加えられたすべての構成変更を、OracleAS 構成リ

ポジトリがレポートするファームのインスタンスに関する情報で上書きします。

OracleAS構成リポジトリは、OracleASインスタンスのみをレポートし、データベー

ス・インスタンスはレポートしません。したがって、このタイプの「ファーム・

シナリオ」では、DCM は ons.conf に対する変更を常に上書きし、RAC ノードの

追加をすべて削除します(これは、DCM による構成のアップグレードが発生した

場合に起こります)。この場合、Db ノードの ONS 構成に中間層ノードを含める

必要があります。これにより、中間層ノードが ONS トポロジ情報を管理する RAC

ノードとなるため、DCM が実行する変更はなんら影響しません。

たとえば、Db ノード rac_node1.us.oracle.com と rac_node2.us.oracle.com を持つ FCF

構成で中間層 mt_node1.us.oracle.com と mt_node2.us.oracle.com を構成するには、

RAC ノードで次の構成が必要です(OracleDBHome/opmn/conf 下の ons.config を編

集するか、前述の 2.3.1 および 2.3.2 のように Db バージョンに応じて racgons を使

用します)。

localport=6100 remoteport=6202 nodes=rac_node1.us.oracle.com:6200, rac_node2.us.oracle.com:6200, mt_node1.us.oracle.com:6202, mt_node2.us.oracle.com 中間層 ONS 構成は、DCM による管理に委ねることができます(すなわち、ファー

ムのリポジトリによりレポートされる中間層のみを含めることができます)。

Oracle Application Server 10g Fast Connection Failover 構成ガイド

10

Oracle Corporation 発行「Oracle Application Server 10g Fast Connection Failover Configuration Guide」の翻訳版です。

Page 11: Oracle Application Server 10g Fast Connection …otndnld.oracle.co.jp/.../OracleApplicationServer10gFCF.pdfOracle Application Server 10g Fast Connection Failover 構成ガイド 1.

2.3.4 OracleAS 10g R3 における FCF ONS 構成

OracleAS 10g R3 中間層の場合、中間層ホームの opmn.xml を変更して RAC ノード

を含めることができます(DCM の問題なしに)。これは、RAC ONS にすべて中

間層を追加するより、よい方法です(ONS トポロジを結合および分離する中間層

が多数ある場合[5]、DB サイドで構成を管理するのは困難になります)。また、

ONS は、OracleAS 10g R3 で拡張され([5])、より優れた柔軟性と効率性を提供

する別のトポロジを許可します。中間層の ONS 構成への RAC ノードの追加は、

中間層の opmn.xml ファイルの直接編集により、このリリースで達成されました。

次に例を示します。

<notification-server> <port local="6104" remote="6204" request="6007"/> <ssl enabled="false" walletfile="$ ORACLE_HOME\opmn\conf\ssl.wlt\default"/> <topology> <nodes list="mt_node1.us.oralce.com:6200,rac_node1.us.oracle.com:6200,rac_node2.us,oracle. com:6200"/> </topology> </notification-server>

“nodes”ノードの後のリストは、RAC ノードの ons.config に指定されている RAC

ノードのアドレスとポートです。ファイアウォールが Db と中間層の間に存在す

る場合、代替トポロジを使用できます(ゲートウェイ・トポロジ[5])。RAC ノー

ドの<nodes>要素は、ONS トポロジ構成に対する追加です。すなわち、OracleAS

インスタンスのトポロジ構成には、変更や削除を行ってはならない追加の<nodes>

要素または<discovery>要素([5])があります。この変更を有効にするには、

opmn.xml ファイルを変更および保存後、opmnctl reload を実行する必要があります。

OracleAS 10 R3 SOA では、これらの変更は OracleAS Control 画面から直接実行で

きます(この場合、opmnctl reload を実行する必要はありません)。これを行うに

は、OracleAS Control のメインの「Cluster Topology」画面から、右下の「Topology

Network Configuration」リンクをクリックします。トポロジに対して利用できる各

フィールドに RAC ノードのリストを入力します[5]。

Oracle Application Server 10g Fast Connection Failover 構成ガイド

11

Oracle Corporation 発行「Oracle Application Server 10g Fast Connection Failover Configuration Guide」の翻訳版です。

Page 12: Oracle Application Server 10g Fast Connection …otndnld.oracle.co.jp/.../OracleApplicationServer10gFCF.pdfOracle Application Server 10g Fast Connection Failover 構成ガイド 1.

ただし、OracleAS Control で定義できるのは 1 つのタイプのトポロジのみです。す

なわち、次のように opmn.xml のトポロジ要素に複数のトポロジ・タイプに含まれ

る場合、

<topology> <nodes list= "mt_node1.us.oracle.com:6200, mt_node2.us.oracle.com:6200, rac_node1.us.oracle.com:6200,rac_node2.us,oracle.com:6200"/> <discover list="*225.0.0.1:6879"/> </topology> 検出エントリを管理しながら、OracleAS Control を使用してノード・リストに要素

を追加することはできません(OracleAS Control では、この画面に示したように 1

つのトポロジ・タイプのみ構成できます)。

3. OracleAS環境におけるFast Connection Failoverのテストと

検証

前述した構成手順により、JDBC ドライバは ONS を通じてデータベース・イベン

トを処理するように準備されています(無効な接続のフェイルオーバーと新しい

RAC ノードへの接続の再割当ては、Db インスタンスの可用性の変化に基づいて

実行することが必要です)。それでも、ONS が正しく機能し、ファイアウォール

や他のネットワーク・ピースなどの中間要素が正しい動作を妨害していないこと

を確認してください。Fast Connection Failover が正しく機能しているかを調べるに

は、次の検証が必要です。

Oracle Application Server 10g Fast Connection Failover 構成ガイド

12

Oracle Corporation 発行「Oracle Application Server 10g Fast Connection Failover Configuration Guide」の翻訳版です。

Page 13: Oracle Application Server 10g Fast Connection …otndnld.oracle.co.jp/.../OracleApplicationServer10gFCF.pdfOracle Application Server 10g Fast Connection Failover 構成ガイド 1.

° RACノードと中間層間のONS通信が正しく機能し、データベース・イン

スタンスが生成したONSイベントを中間層が正しく受信していること

° JDBCドライバがこれらのONSイベントを正しく処理し、フェイルオー

バーと接続クリーンアップが正しく機能していること

3.1 RAC ノードと中間層間の ONS 通信の検証

まず、ONS が RAC ノードで稼働していることを検証します。そのためには、

OHOME/opmn/bin から次を実行します。

onsctl ping このコマンドは、各 RAC ノードにおける ONS の稼働を確認します。中間層ノー

ドでは、OHOME/opmn/bin から次を実行します。

opmnctl ping このコマンドは、ONS の可用性をレポートします。次に、RAC ノードと中間層間

の ONS 通信が正しく行われているかを検証する必要があります。RAC ノードで、

OHOME/opmn/bin から次を呼び出します。

onsctl debug このコマンドは、ONS デバッグ情報をレポートします。中間層接続と他のデータ

ベース接続は、次の画面のようにリストされます。

Oracle Application Server 10g Fast Connection Failover 構成ガイド

13

Oracle Corporation 発行「Oracle Application Server 10g Fast Connection Failover Configuration Guide」の翻訳版です。

Page 14: Oracle Application Server 10g Fast Connection …otndnld.oracle.co.jp/.../OracleApplicationServer10gFCF.pdfOracle Application Server 10g Fast Connection Failover 構成ガイド 1.

中間層ノードで、OHOME/opmn/bin から次を実行します。

opmnctl debug このコマンドは、デバッグ・レポートのすべての層(中間層とデータベース・ノー

ド)からの接続をリストします。

Oracle Application Server 10g Fast Connection Failover 構成ガイド

14

Oracle Corporation 発行「Oracle Application Server 10g Fast Connection Failover Configuration Guide」の翻訳版です。

Page 15: Oracle Application Server 10g Fast Connection …otndnld.oracle.co.jp/.../OracleApplicationServer10gFCF.pdfOracle Application Server 10g Fast Connection Failover 構成ガイド 1.

さらに、異なる層間のONS通信をテストするためにONSテスターを利用できます3 。テスターは、ONS通知のsenderとしてもreceiverとしても実行できます。テス

ターを実行するには、RACノードの 1 つでファイルを解凍し、次を実行します。

java -Doracle.ons.oraclehome=$ORACLE_HOME ONSTest -s 1 -r 0 –p –n 30 これにより、RAC ノードで sender スレッドを開始し、タイプ“ons/test/shutdown”

の 30 個の ONS メッセージを送信します。次に、OracleAS ノードの 1 つで次を実

行して ONS receiver を開始します。

java -Doracle.ons.oraclehome=$ORACLE_HOME ONSTest -s 0 –r 1 –p 通知の受領は receiver のコンソール(OracleAS ノードの)に記録され、RAC ノー

ドと OracleAS ノード間で ONS 通知が正しく流れていることを証明する必要があ

ります。次の図に、テスターによりレポートされるサンプル出力を示します。他

の中間層も ONS イベントを生成することがあるため、受信したイベントの中に、

テスターの sender スレッドが発行するイベントであるタイプ“ons/test/”のイベント

があることを確認する必要があります。

3 このテスターは、デバッグとテストのみを目的としています。

Oracle Application Server 10g Fast Connection Failover 構成ガイド

15

Oracle Corporation 発行「Oracle Application Server 10g Fast Connection Failover Configuration Guide」の翻訳版です。

Page 16: Oracle Application Server 10g Fast Connection …otndnld.oracle.co.jp/.../OracleApplicationServer10gFCF.pdfOracle Application Server 10g Fast Connection Failover 構成ガイド 1.

3.2 JDBC ドライバが ONS イベントを処理し、正しくフェイルオー

バーしていることを検証する

JDBC ドライバが ONS イベントを正しく受信し処理していることを検証するには、

JDBC トレースを使用する必要があります。Oracle 10g JDBC の JDBC トレースに

は、特別な JDBC ライブラリが必要です。このライブラリは、OracleAS で使用で

きるデフォルトまたはインストールされた JDBC ドライバをオーバーライドする

必要があります。トレース・ドライバには、jdk1.4.jar が必要です。これは、次か

らダウンロードできます。

http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html 注意: 10g R1 RACと 10g R2には、それぞれ異なるライブラリがあります。OracleAS

10g R2 の oc4j.jar にあるマニフェスト・クラスパスは、$OH/jdbc/lib/classes12dms.jar

を実効クラスパスに含めますが ojdbc14dms.jar は含めないため、

$OH/jdbc/lib/classes12dms.jar を$OH/jdbc/lib/ojdbc14dms_g.jar に置き換える必要が

あります。これは単にトレースのためであり、トレース検証の完了後は元に戻す

必要があります。

JDBC トレースを有効にするには、次を実行する必要があります。

1. 次の行を追加します。

oracle.jdbc.driver.level=FINEST

この行を、デフォルト$OH/jdk/jre/lib/logging.properties ファイルの 後に追加しま

す。

2. 次のシステム・プロパティを持つ OC4J VM を開始するように、

$OH/opmn/conf/opmn.xml を編集します。

–Doracle.jdbc.LogFile=jdbc.log.

これにより、JDBC ドライバのロギング出力のみが入ったファイル

$OH/j2ee/Oc4J_home/jdbc.log が生成されます。

Oracle Application Server 10g Fast Connection Failover 構成ガイド

16

Oracle Corporation 発行「Oracle Application Server 10g Fast Connection Failover Configuration Guide」の翻訳版です。

Page 17: Oracle Application Server 10g Fast Connection …otndnld.oracle.co.jp/.../OracleApplicationServer10gFCF.pdfOracle Application Server 10g Fast Connection Failover 構成ガイド 1.

または、独立したトレース・プロパティ・ファイルを作成および使用することに

より、特別なロギング構成を使用します。このファイルの位置は、

java.util.logging.config.file 環境変数を使用して、パラメータとして OC4J JVM に渡

されます。トレースは、次のシステム・プロパティを使用して有効にします。

oracle.jdbc.trace=true

例: opmn.xml java-options は、次の指定で FCF アプリケーションを実行している

OC4J コンテナに対して変更されます。

-Doracle.jdbc.trace=true -Djava.util.logging.config.file=”c:\tracing.properties” ...

c:\tracing.properties ファイルには、次が入っています。

handlers= java.util.logging.FileHandler

.level= INFO

# default file output is in user's home directory

java.util.logging.FileHandler.pattern = jdbc.log

java.util.logging.FileHandler.limit = 50000

java.util.logging.FileHandler.count = 1

java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter

.

# Setting this to SEVERE avoids duplicate output from default logger

java.util.logging.ConsoleHandler.level = SEVERE

java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

oracle.jdbc.level = FINEST

oracle.jdbc.pool.level = FINEST 上述のいずれかの手順によりトレースが有効になると、RAC DB 障害と接続フェ

イルオーバーが JDBC ドライバにより記録されます。すなわち、JDBC ドライバに

より処理された FCF イベントに関する対応メッセージが、jdbc_tracing.log ファイ

ルに入れられます。次のようなイベントが含まれます。

° initFailoverParametersに対するコール4

° FCF eventTypeおよびeventBody(完全イベントを示す)

° abortConnectionに対するコール(クリーンアップする接続について)

次の部分には、jdbc_tracing.log サンプル・ファイルに記録されるメッセージが含

まれています。 Mar 3, 2005 3:07:43 PM oracle.jdbc.pool.OracleFailoverEventHandlerThread

handleEvent

FINE: OracleFailoverEventHandlerThread.handleEvent():<database/event/service> 4 DBサイドで障害が発生した場合、このネットワーク障害を通知する中間層のONSではなく、生き残っ

ているRACノードからトリガーされた通知に基づいて、接続のフェイルオーバーが発生します。その

ため、フェイルオーバー期間は、ONSチューニングではなくRACチューニングには基づきます。この

障害検出期間はデータベース依存であり、チューニングできます。[9][10]

Oracle Application Server 10g Fast Connection Failover 構成ガイド

17

Oracle Corporation 発行「Oracle Application Server 10g Fast Connection Failover Configuration Guide」の翻訳版です。

Page 18: Oracle Application Server 10g Fast Connection …otndnld.oracle.co.jp/.../OracleApplicationServer10gFCF.pdfOracle Application Server 10g Fast Connection Failover 構成ガイド 1.

Mar 3, 2005 3:07:43 PM oracle.jdbc.pool.OracleConnectionCacheManager

verifyAndHandleEvent

FINER: eventType=256eventBody=<VERSION=1.0 service=serv1 instance=Rac3

database=RacStres

host=hpcpq-7 status=down reason=user >

Mar 3, 2005 3:07:43 PM oracle.jdbc.pool.OracleImplicitConnectionCache

processFailoverEvent

FINE:OracleImplicitConnectionCache.processFailoverEvent(eventType=256,instName=

Rac3,dbUniqName=RacStres,hostName=hpcpq-7,status=down, card=0)

Mar 3, 2005 3:07:43 PM oracle.jdbc.pool.OracleImplicitConnectionCache

markDownLostConnections

FINE:OracleImplicitConnectionCache.markDownLostConnections(serviceDownEvent=tr

uehostDownEvent=false,instName=Rac3,dbUniqName=RacStres,hostName=hpcpq-7,stat

us=down)

Mar 3, 2005 3:07:43 PM oracle.jdbc.pool.OracleImplicitConnectionCache

cleanupFailoverConnections

FINE:OracleImplicitConnectionCache.cleanupFailoverConnections(serviceDownEvent=t

ruehostDown

Event=false,instName=Rac3,dbUniqName=RacStres,hostName=hpcpq-7,status=down)

Mar 3, 2005 3:07:43 PM oracle.jdbc.pool.OracleImplicitConnectionCache

doForEveryCachedConnection

FINE: OracleImplicitConnectionCache.doForEveryCachedConnection(task=2)

Mar 3, 2005 3:07:49 PM oracle.jdbc.pool.OracleFailoverEventHandlerThread

handleEvent

Long Query Exception: java.sql.SQLException: Io exception: Socket closed

FINE: OracleFailoverEventHandlerThread.handleEvent():<database/event/service>

Mar 3, 2005 3:07:49 PM oracle.jdbc.pool.OracleConnectionCacheManager

verifyAndHandleEvent

FINER: eventType=256eventBody=<VERSION=1.0 service=serv1 instance=Rac1

database=RacStres

host=hpcpq-5 status=up card=1 reason=user > (JDBC ドライバ・レベルのトレース出力で、SQL 例外“invalid ons event received”

が見られることがあります。関連のない ONS イベントの一部が JDBC 処理で拒否

されただけであり、無視します。)

まとめ

Fast Connection Failover は、OracleAS 中間層と Oracle Real Application Cluster(RAC)

データベース間の高度な統合を明確に実証します。FCF は、JDBC Implicit

Connection Cache(ICC)が提供する 10g RAC クライアントであり、この 2 層間で

のイベント通信の通信手段として Oracle Notification Server(ONS)を使用します。

Fast Connection Failover では、中間層とデータベース間に正しいデータソースと

ONS 構成が必要です。この構成は、OracleAS と Oracle DB リリースによって変わ

ります。この 2 層間での ONS 通知の流れと、JDBC ドライバによるそれらの正し

Oracle Application Server 10g Fast Connection Failover 構成ガイド

18

Oracle Corporation 発行「Oracle Application Server 10g Fast Connection Failover Configuration Guide」の翻訳版です。

Page 19: Oracle Application Server 10g Fast Connection …otndnld.oracle.co.jp/.../OracleApplicationServer10gFCF.pdfOracle Application Server 10g Fast Connection Failover 構成ガイド 1.

い使用は、正しい Fast Connection Failover 構成にとって重要です。ここで説明した

ように両方を検証することを強くお薦めします。

付録

JDBC 構成、ONS 構成、Fast Connection Failover、Real Application Clusters に関する

その他のドキュメントと詳細は、次から入手できます。

[1] OracleAS 10g R2 データ・ソース

[2] OracleAS 10g R3 Datasources

[3] Implicit Connection Cache and OC4J datasources

[4] OracleAS 10g R2 OPMN ドキュメント

[5] OracleAS 10g R3 OPMN ドキュメント

[6] Oracle 10g R1 DB FCF documentation

[7] Oracle 10g R2 DB FCF ドキュメント

[8] Oracle 10g R2 DB racgons utility

[9] Oracle 10g R2 DB CSS reconfiguration

[10] Oracle 10g R1 DB CSS reconfiguration

Oracle Application Server 10g Fast Connection Failover 構成ガイド

19

Oracle Corporation 発行「Oracle Application Server 10g Fast Connection Failover Configuration Guide」の翻訳版です。

Page 20: Oracle Application Server 10g Fast Connection …otndnld.oracle.co.jp/.../OracleApplicationServer10gFCF.pdfOracle Application Server 10g Fast Connection Failover 構成ガイド 1.

Oracle Application Server 10g Fast Connection Failover 構成ガイド 2006 年 10 月 著者: Fermin Castro Product Management Oracle Application Server Oracle Corporation World Headquarters 500 Oracle Parkway Redwood Shores, CA 94065 U.S.A. 海外からのお問合せ窓口: 電話: +1.650.506.7000 ファックス: +1.650.506.7200 www.oracle.com Copyright © 2006, Oracle. 無断転載を禁ず。 この文書はあくまで参考資料であり、掲載されている情報は予告なしに変更されることがあります。 オラクル社は、本ドキュメントの無謬性を保証しません。また、本ドキュメントは、法律で明示的または暗黙的に記載

されているかどうかに関係なく、商品性または特定の目的に対する適合性に関する暗黙の保証や条件を含む一切の保証

または条件に制約されません。オラクル社は、本書の内容に関していかなる保証もいたしません。また、本書により、

契約上の直接的および間接的義務も発生しません。本書は、事前の書面による承諾を得ることなく、電子的または物理

的に、いかなる形式や方法によっても再生または伝送することはできません。 Oracle、JD Edwards、PeopleSoft および Retek は、Oracle Corporation および関連会社の登録商標です。他の製品名

は、それぞれの所有者の商標です。