二重のアクティブ・データベースの検出

通常、アクティブ・スタンバイ・ペアのアクティブ・データベースおよびスタンバイ・データベースの指定は、ユーザーによって明示的に制御されます。ただし、状況によっては、スタンバイ・データベースの役割をアクティブ・データベースに変更するときに、ユーザーがアクティブ・データベースとスタンバイ・データベースの両方を変更できない場合があります。

たとえば、アクティブ・データベースのサイトへのネットワーク通信が中断された場合、異なるサイトのスタンバイ・データベースがアクティブ・データベースの役割を引き継ぐ必要があるが、現行のアクティブ・データベースでのレプリケーションの停止やその役割の手動での変更ができないことがあります。最初にアクティブ・データベースでレプリケーションを停止せずにスタンバイ・データベースをアクティブに変更すると、両方のマスター・データベースがACTIVE状態となり、トランザクションを受け入れる状況となります。このような例では、TimesTenは、データベース間のネットワーク通信がリストアされたときに、マスター・データベースのアクティブ/スタンバイの役割を自動的に決定できます。

データベース間の初期ハンドシェイク中に、TimesTenでアクティブ・スタンバイ・ペアのレプリケーション・スキームのマスター・データベースが両方ともACTIVE状態であると判別された場合、自動的に次の処理が実行されます。

  • 最後にACTIVE状態に設定されたデータベースはACTIVE状態のままになり、アプリケーションへの接続とアプリケーションによる更新が継続されます。

  • 最初にACTIVE状態にされたデータベースは、無効化されます。すべてのアプリケーションの接続が切断されます。

  • 無効化されたデータベースが再起動されると、TimesTenでは、他のマスター・データベースにレプリケートされていないトランザクションがデータベースで発生したかどうかが判別されます。このようなトランザクションが発生していた場合、それらのトランザクションはトラップされ、データベースはIDLE状態のままにされます。データベースをスタンバイ・データベースにするには、アクティブ・データベースから複製する必要があります。トラップされたトランザクションがない場合、データベースはスタンバイ・データベースとして使用でき、自動的にSTANDBY状態に設定されます。