アプリケーションでアプリケーション・コンティニュイティおよびトランザクション・ガードを使用する場合は、サービスを構成する必要があります。この項では、実装予定の機能に応じてこれらのアプリケーション・サービスを構成する方法について説明します。
アプリケーション・コンティニュイティのサービスの作成
アプリケーション・コンティニュイティのサービスを構成するには、SRVCTLを使用してサービスを作成する場合、-failovertype
パラメータをTRANSACTION
に設定し、-commit_outcome
をTRUE
に設定します。また、アプリケーション・コンティニュイティおよびロード・バランシングのその他のサービス・パラメータに値を設定することもできます。
-replay_init_time
: リプレイが開始できる時間を秒単位で指定します。リプレイが開始されるまでに許可する時間に基づいて値を選択することをお薦めします。デフォルト値は300秒です。
-retention
: コミット結果情報がデータベース内に保持される時間(秒)を指定します。デフォルト値は86400 (1日)です。
-session_state
: COMMITが実行され後にそのトランザクションの状態が変更された場合、セッションが失われている場合はトランザクションをリプレイしてその状態を再確立することはできません。アプリケーション・コンティニュイティを構成する場合、アプリケーションは、初期設定後のセッション状態が動的であるか静的であるか、および要求内の過去のCOMMIT操作を継続するのが適切であるかどうかに応じて分類されます。
動的: (デフォルト)セッション状態の変更が初期化で完全にカプセル化されていない場合、およびフェイルオーバー時にコールバックで完全に取得できない場合、そのセッションは動的な状態です。要求内の最初のトランザクションがコミットされると、次の要求が開始されるまでフェイルオーバーは内部的に無効化されます。これは、ほとんどすべてのアプリケーションが要求に使用するデフォルト・モードです。
静的: (要求での特殊設定) NLS設定やPL/SQLパッケージの状態など、すべてのセッション状態の変更を初期化コールバックで繰り返すことができる場合、そのセッションは静的な状態です。この設定は、セッション状態を変更しないデータベース診断アプリケーションのみに使用されます。コールバックによって再確立できない非トランザクション状態変更がリクエスト内にある場合は、STATIC
を指定しないでください。どの状態を指定すればよいかがわからない場合は、DYNAMIC
を使用します。
-failoverretry
: 各接続試行に対する接続試行回数であり、推奨値は30です。
-failoverdelay
: 各接続試行間の遅延(秒単位)であり、推奨値は10です。
-notification
: FANは強く推奨されているため、この値をTRUE
に設定して、OCIクライアントとODP.NetクライアントでFANを有効化します。
-clbgoal
: 接続ロード・バランシングの場合、実行時ロード・バランシングの使用時はSHORT
を使用します。
-rlbgoal
: ランタイム・ロード・バランシングの場合は、SERVICE_TIME
に設定します。
ポリシー管理されたOracle RACデータベースに対してアプリケーション・コンティニュイティのサービスを作成するには、次のようなコマンドを使用しますが、racdb
はOracle RACデータベースの名前を、app2
は変更するサービスの名前を、そしてSvrpool1
はサービスが提供されるサーバー・プールの名前を表します。
$ srvctl add service -db racdb -service app2 -serverpool Srvpool1 -failovertype TRANSACTION -commit_outcome TRUE -replay_init_time 1800 -retention 86400 -notification TRUE -rlbgoal SERVICE_TIME -clbgoal SHORT -failoverretry 30 -failoverdelay 10
SRVCTLを使用してアプリケーション・コンティニュイティの既存のサービスを変更するには、次のようなコマンドを使用しますが、racdb
は使用しているOracle RACデータベースの名前を、そしてapp1
は変更するサービスの名前を表します。
$ srvctl modify service -db racdb -service app1 -clbgoal SHORT -rlbgoal SERVICE_TIME -failoverretry 30 -failoverdelay 10 -failovertype TRANSACTION -commit_outcome TRUE -replay_init_time 1800 -retention 86400 -notification TRUE
トランザクション・ガードのサービスの作成
トランザクション・ガードは有効にするが、アプリケーション・コンティニュイティは有効にしない場合は、SRVCTLを使用してサービスを作成し、-commit_outcome TRUE
のみを設定します。
SRVCTLを使用して、トランザクション・ガードを有効にするように既存のサービスを変更するには、次のようなコマンドを使用しますが、racdb
は使用しているOracle RACデータベースの名前を、そしてapp2
は変更するサービスの名前を表します。
$ srvctl modify service -db racdb -service app2 -commit_outcome TRUE -retention 86400 -notification TRUE
前述の例では、-retention
パラメータは、履歴を保持する時間(秒単位)を指定しています。また、–notification
パラメータはTRUE
に設定され、FANイベントを有効化しています。
トランザクション・ガードを使用するには、DBAは次のように権限を付与する必要があります。
GRANT EXECUTE ON DBMS_APP_CONT;
関連項目:
アプリケーションでトランザクション・ガードを使用する方法の詳細は、『Oracle Database開発ガイド』を参照してください。