スタンバイ・データベースの障害からのリカバリ

スタンバイ・データベースをリカバリするために実行できるいくつかのタスクを示します。

スタンバイ・データベースの障害からリカバリするには、次のタスクを実行します。

  1. スタンバイ・データベースの障害を検出します。
  2. RETURN TWOSAFEサービスが有効になっている場合にスタンバイ・データベースで障害が発生すると、処理中のトランザクションはアクティブ・データベースでコミットされなくなり、エラー8170「Receipt or commit acknowledgement not returned in the specified timeout interval」が発生します。その場合は、localActionパラメータを2 (COMMIT)に設定してttRepSyncSet組込みプロシージャをコールし、トランザクションを再度コミットします。例:
    call ttRepSyncSet( null, null, 2);
    commit;
  3. アクティブ・データベースで、ttRepStateSave('FAILED','standby_database','host_name')をコールします。それ以後、スタンバイ・データベースが使用できない間は、アクティブ・データベースへの更新は、サブスクライバ・データベースに直接レプリケートされます。サブスクライバ・データベースは、アクティブから直接複製することもできます。
  4. スタンバイ・データベースのレプリケーション・エージェントが自動的に再起動された場合は、レプリケーション・エージェントを停止します。「レプリケーション・エージェントの起動および停止」を参照してください。
  5. 次のいずれかの方法で、スタンバイ・データベースをリカバリします。
    • スタンバイ・データベースに接続します。これによって、ローカル・トランザクション・ログからのリカバリがトリガーされます。

    • アクティブ・データベースからスタンバイ・データベースを複製します。

    スタンバイ・データベースが停止していた時間、およびアクティブ・データベースから適用する必要があるトランザクション・ログの量によって、使用するリカバリの方法が決まります。

  6. レプリケーション・エージェント・ポリシーを設定し、新しいスタンバイ・データベースでレプリケーション・エージェントを起動します。「レプリケーション・エージェントの起動および停止」を参照してください。

アクティブ・データベースで2つのマスター・データベースが同期していると判断し、サブスクライバへの更新の送信を停止すると、スタンバイ・データベースはSTANDBY状態になり、サブスクライバへの更新の送信を開始します。

ノート:

スタンバイ・データベースがSTANDBY状態になったことは、ttRepStateGet組込みプロシージャを使用して確認できます。