ヘッダーをスキップ
Oracle® TimesTen Application-Tier Database Cacheユーザーズ・ガイド
11g リリース2 (11.2.2)
B66442-07
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

11 Oracle RAC環境でのTimesTen Application-Tier Database Cacheの使用

次の各項では、Oracle Real Application Clusters (Oracle RAC)環境でのTimesTen Application-Tier Database Cache (TimesTen Cache)の使用方法について説明します。

Oracle RAC環境でのTimesTen Cacheの動作

Oracle RACでは、共有リソース(クラスタウェア共有ディスクに存在するすべてのデータファイル、制御ファイル、PFILEおよびREDOログ・ファイルを含む)を持つ1つのOracle Databaseに複数のOracle Databaseインスタンスでアクセスできます。Oracle RACでは、高可用性が提供されるとともに、読取り/書込み一貫性およびロード・バランシングが処理されます。

Fast Application Notification(FAN)は、Oracle Database 10g リリース2でOracle Call Interface(OCI)に統合されたOracle RAC機能です。FANによって、FANイベントをサブスクライブするアプリケーションにクラスタ内の変更がパブリッシュされます。FANによって、次に示す不要な処理が実行されなくなります。

  • サービスが停止した場合の接続の試行

  • サービスがダウンした場合のトランザクション処理終了の試行

  • TCP/IPタイムアウトの待機

Oracle RACおよびFANの詳細は、『Oracle Real Application Clusters管理およびデプロイメント・ガイド』を参照してください。

TimesTen Cacheでは、FANと統合されたOCIを使用してOracle Databaseイベントの通知を受信します。FANがある場合、TimesTen Cacheでは1分以内に接続障害が検出されます。TimesTen Cacheでは、FANがない場合、Oracle Database障害の通知の受信に数分かかる可能性があります。FANがない場合にTimesTen Cacheで接続障害を検出するのは、次回にその接続が使用されるとき、またはTCP/IPタイムアウトが発生したときになります。TimesTen Cacheを使用すると、ユーザーの介入なしでOracle Database障害から迅速にリカバリできます。

TimesTen Cacheでは、透過的アプリケーション・フェイルオーバー(TAF)も使用されますが、これは障害発生後にアプリケーションを再接続する方法を指定できるOracle Net Servicesの機能です。TAFの詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。TAFでは、Oracle Databaseへの再接続を4分間試行します。再接続が成功しない場合は、キャッシュ・エージェントが再起動され、1分ごとにOracle Databaseへの再接続が試行されます。


注意:

AgentFailoverTimeoutパラメータを指定して接続を確立する際に、TAFが再試行する時間を構成できます。詳細は、「Oracle RAC環境でのTimesTen Cacheの設定」を参照してください。

OCIアプリケーションでは、次のいずれかのタイプのOracle Netフェイルオーバー機能を使用できます。

  • NONE: フェイルオーバー機能は使用されません。このタイプでは、フェイルオーバーが発生しないように明示的に指定することもできます。これがデフォルトのフェイルオーバー機能です。

  • SESSION: アプリケーションの接続が失われると、そのアプリケーション用の新しい接続が自動的に作成されます。このタイプのフェイルオーバーでは、選択した項目のリカバリは試行されません。

  • SELECT: このタイプのフェイルオーバーでは、フェイルオーバー前にカーソルから行のフェッチを開始していたアプリケーションは、フェイルオーバー後に行のフェッチを続行できます。

TimesTen Cacheの動作は、TAFのアクションおよびTAFの構成方法によって異なります。デフォルトでは、Oracle RAC環境でTimesTen Cacheを使用している場合、TAFおよびFANのコールバックがインストールされます。TAFおよびFANの機能が不要な場合は、RACCallback接続属性を0に設定します。

表11-1に、様々なTAFフェイルオーバー・タイプが指定されたOracle RAC環境でのTimesTen Cache処理の動作を示します。

表11-1 Oracle RAC環境でのTimesTen Cache処理の動作

処理 TAFフェイルオーバー・タイプ Oracle Databaseで接続障害が発生した後の動作

自動リフレッシュ

NONE

キャッシュ・エージェントが自動的に停止して再起動し、Oracle Databaseで接続が確立できるようになるまで待機します。この動作は、Oracle RAC以外の環境の場合と同様です。

ユーザーが介入する必要はありません。

自動リフレッシュ

SESSION

次のいずれかが発生します。

  • 障害が発生したすべての接続がリカバリされます。実行中だった自動リフレッシュ処理がロールバックされ、再試行されます。

  • TAFがタイムアウトになるか、または接続をリカバリできない場合は、キャッシュ・エージェントが自動的に停止して再起動し、Oracle Databaseで接続が確立できるようになるまで待機します。

  • いずれの場合も、ユーザーが介入する必要はありません。

自動リフレッシュ

SELECT

次のいずれかが発生します。

  • 接続障害が発生した時点から自動リフレッシュ処理が再開されます。

  • 実行中だった自動リフレッシュ処理がロールバックされ、再試行されます。

  • TAFがタイムアウトになるか、または接続をリカバリできない場合は、キャッシュ・エージェントが自動的に停止して再起動し、Oracle Databaseで接続が確立できるようになるまで待機します。

  • いずれの場合も、ユーザーが介入する必要はありません。

AWT

NONE

AWTキャッシュ・グループのレプリケーション・エージェントのレシーバ・スレッドが終了します。新しいスレッドが作成され、そのスレッドによってOracle Databaseへの接続が試行されます。

ユーザーが介入する必要はありません。

AWT

SessionSelect

次のいずれかが発生します。

  • 接続がリカバリされ、コミットされていないDML処理がトランザクションに存在する場合、そのトランザクションはロールバックされた後で再発行されます。

  • 接続がリカバリされ、コミットされていないDML処理が存在しない場合は、ロールバックせずに新しい処理を発行できます。

いずれの場合も、ユーザーが介入する必要はありません。

SWT、伝播、フラッシュおよびパススルー

NONE

接続が失われたことがアプリケーションに通知されます。キャッシュ・エージェントがOracle Databaseから切断され、現在のトランザクションがロールバックされます。変更されたすべてのセッション属性が失われます。

次のパススルー処理中に、キャッシュ・エージェントによってOracle Databaseへの再接続が試行されます。この動作は、Oracle RAC以外の環境の場合と同様です。

ユーザーが介入する必要はありません。

SWT、伝播、フラッシュおよびパススルー

SWT、伝播およびフラッシュ

SESSION


SELECT

次のいずれかが発生します。

  • Oracle Databaseへの接続がリカバリされます。失われた接続でオープン・カーソルがあったり、DML処理またはロック処理が行われていた場合は、エラーが返されるため、ユーザーは続行する前にトランザクションをロールバックする必要があります。前述の状態でなかった場合は、ロールバックせずに続行できます。

  • TAFがタイムアウトになるか、または接続をリカバリできない場合は、接続が失われたことがアプリケーションに通知されます。キャッシュ・エージェントがOracle Databaseから切断され、現在のトランザクションがロールバックされます。変更されたすべてのセッション属性が失われます。

    次のパススルー処理中に、キャッシュ・エージェントによってOracle Databaseへの再接続が試行されます。

    この場合、ユーザーが介入する必要はありません。

パススルー

SELECT

Oracle Databaseへの接続がリカバリされます。失われた接続でDML処理またはロック処理が行われていた場合は、エラーが返されるため、ユーザーは続行する前にトランザクションをロールバックする必要があります。前述の状態でなかった場合は、ロールバックせずに続行できます。

ロードおよびリフレッシュ

NONE

接続が失われたことを示すエラーがアプリケーションに通知されます。

ロードおよびリフレッシュ

SESSION

次のいずれかが発生します。

  • ロードまたはリフレッシュ処理が正常に行われます。

  • Oracle Databaseでフェッチ処理が実行できないことを示すエラーが返されます。

ロードおよびリフレッシュ

SELECT

次のいずれかが発生します。

  • Oracle Databaseカーソルがオープンしていてそのカーソルがリカバリされている場合、またはOracle Databaseカーソルがオープンしていない場合は、ロードまたはリフレッシュ処理が正常に行われます。

  • TAFがセッションまたはオープンしているOracle Databaseカーソルをリカバリできなかった場合は、エラーが返されます。

注意: TAFフェイルオーバー・タイプがSESSIONの場合より、エラーが返される可能性は低くなります。


Oracle RAC環境でのTimesTen Cacheの使用の制限

Oracle RACでのTimesTen Cacheのサポートには、次の制限があります。

  • TimesTen Cacheの動作は、Oracle RAC、FANおよびTAFの機能に制限されます。たとえば、サービスのすべてのノードが正常に実行されなかった場合、そのサービスは再起動されません。TimesTen Cacheは、ユーザーがサービスを再起動するまで待機します。

  • TAFでは、ALTER SESSION処理はリカバリされません。障害発生後に変更されたセッション属性のリストアは、ユーザーが行う必要があります。

  • TimesTen Cacheでは、FANと統合されたOCIが使用されます。このインタフェースは、スレッドを自動的に作成し、Oracle Databaseイベントが発生するまで待機します。TimesTen直リンクのアプリケーションでスレッドを作成するTimesTen Cacheの機能は、この機能のみです。このスレッド作成が行われるようにアプリケーションを調整します。追加スレッドが不要な場合は、RACCallback接続属性を0に設定すると、TAFおよびFANが使用されなくなります。

Oracle RAC環境でのTimesTen Cacheの設定

Oracle RACおよびTimesTen Cacheをインストールしたら、次の手順を実行してTimesTen CacheをOracle RAC環境用に設定します。

  1. TimesTenで、ttCacheConfig AgentFailoverTimeoutパラメータを指定してTAFタイムアウトを分単位で設定します。AgentFailoverTimeoutパラメータでは、接続を確立する際にTAFが再試行する時間を構成します。TAFは、このタイムアウトの期間Oracle Databaseへの再接続を試行します。デフォルトは4分間です。再接続が成功しない場合は、キャッシュ・エージェントが再起動されて、1分ごとにOracle Databaseへの再接続が試行され、レプリケーション・エージェントがOracle Databaseに接続できないスレッドをすべて再起動します。詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』のttCacheConfigに関する説明を参照してください。

  2. TimesTenデーモン、キャッシュ・エージェントおよび次のOracle Databaseコンポーネントが開始されていることを確認します。

    • Oracle Databaseインスタンス

    • Oracle Databaseリスナー

    • TimesTen Application-Tier Database Cacheで使用されるOracle Databaseサービス

  3. TimesTen RACCallback接続属性が1(デフォルト)に設定されていることを確認します。詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』のRACCallbackに関する説明を参照してください。

  4. DBMS_SERVICE.MODIFY_SERVICEファンクションまたはOracle Enterprise Managerを使用してFANイベントのパブリッシュを有効にします。これにより、Oracle Database ALL_SERVICESビューのAQ_HA_NOTIFICATIONS列の値がYESに変更されます。

    DBMS_SERVICE Oracle Database PL/SQLパッケージの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。

  5. 次のいずれかの方法で、TimesTen Cacheで使用されるOracle Databaseサービスに対してTAFを有効にします。

    • 次の設定を指定して、Oracle Database tnsnames.oraファイルにTimesTen用のサービスを作成します。

      • LOAD_BALANCE=ON(オプション)

      • FAILOVER_MODE=(TYPE=SELECT)またはFAILOVER_MODE=(TYPE=SESSION)

    • DBMS_SERVICE.MODIFY_SERVICEファンクションを使用して、TAFフェイルオーバー・タイプを設定します。

      TAFの有効化の詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。

  6. TimesTen直リンク・アプリケーションの場合は、FAN通知を受信できるようにアプリケーションをスレッド・ライブラリにリンクします。FANによって、障害を監視するスレッドが作成されます。