ヘッダーをスキップ
Oracle In-Memory Database Cacheユーザーズ・ガイド
リリース11.2.1
B56054-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

9 RAC環境でのOracle In-Memory Database Cacheの使用

この章では、Oracle Real Application Clusters(RAC)環境でのOracle In-Memory Database Cacheの使用方法について説明します。内容は次のとおりです。

RAC環境でのOracle In-Memory Database Cacheの動作

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

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

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

Oracle In-Memory Database Cacheでは、FANと統合されたOCIを使用してOracleイベントの通知を受信します。 Oracle In-Memory Database Cacheでは、FANがない場合、Oracle障害の通知の受信に数分かかる可能性があります。 Oracle In-Memory Database Cacheを使用すると、ユーザーの介入なしでOracle障害から迅速にリカバリできます。

Oracle In-Memory Database Cacheでは、透過的アプリケーション・フェイルオーバー(TAF)も使用されます。TAFは、障害発生後にアプリケーションを再接続する方法を指定できるOracle Net Servicesの機能です。 TAFの詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。

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

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

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

表9-1 RAC環境でのOracle In-Memory Database Cache処理の動作

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

自動リフレッシュ

NONE

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

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

自動リフレッシュ

SESSION

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

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

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

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

自動リフレッシュ

SELECT

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

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

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

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

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

AWT

NONE

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

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

AWT

SESSION、SELECT

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

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

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

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

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

NONE

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

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

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

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

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

SESSION

SELECT

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

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

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

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

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

パススルー

SELECT

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

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

NONE

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

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

SESSION

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

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

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

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

SELECT

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

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

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

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


RAC環境でのOracle In-Memory Database Cacheの使用の制限

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

RAC環境でのOracle In-Memory Database Cacheの設定

Oracle RACおよびOracle In-Memory Database Cacheをインストールします。 キャッシュ管理ユーザーにSELECT ANY DICTIONARY権限があることを確認します。

TAFタイムアウトを制御するTimesTen環境変数には、次の2つがあります。

TimesTenデーモンおよびキャッシュ・エージェントが起動されていることを確認します。次のOracleコンポーネントも起動されている必要があります。

次に、次の手順を実行します。