アクティブ・データベースとスタンバイ・データベースの二重の障害からのリカバリ
アクティブ・データベースとスタンバイ・データベースの両方でほぼ同じ時間に障害が発生し、ほとんど即時に両方のデータベースに再接続できた場合は、レプリケーション・エージェント(と、使用可能な場合はキャッシュ・エージェント)を再起動し、続行します。
- 障害が発生したアクティブ・データベースに接続します。これによって、ローカル・トランザクション・ログからのリカバリがトリガーされます。読取り専用キャッシュ・グループをレプリケートしている場合は、AUTOREFRESH STATEが
PAUSED
に自動的に設定されます。 - 障害が発生したアクティブ・データベースのレプリケーション・エージェントが再起動されたことを確認します。再起動されていない場合は起動します。「レプリケーション・エージェントの起動および停止」を参照してください。
- 新しくリカバリされたデータベースで、
ttRepStateSet
('ACTIVE')
をコールします。読取り専用キャッシュ・グループをレプリケートしている場合にこの手順を実行すると、このデータベースのAUTOREFRESH STATEがPAUSED
からON
に自動的に変更されます。 - 障害が発生したデータベースのキャッシュ・エージェントが再起動されたことを確認します。再起動されていない場合は起動します。
- 障害が発生したスタンバイ・マスター・データベースに接続します。これによって、ローカル・トランザクション・ログからのリカバリがトリガーされます。読取り専用キャッシュ・グループをレプリケートしている場合は、AUTOREFRESH STATEが
PAUSED
に自動的に設定されます。 - 障害が発生したスタンバイ・データベースのレプリケーション・エージェントが再起動したことを確認します。再起動されていない場合は起動します。「レプリケーション・エージェントの起動および停止」を参照してください。
- 障害が発生したスタンバイ・データベースのキャッシュ・エージェントが再起動したことを確認します。再起動されていない場合は起動します。
または、アクティブ・マスターとスタンバイ・マスター・データベースの両方に障害が発生した場合の、次のシナリオを考えてみます。
-
スタンバイ・データベースで障害が発生しました。スタンバイが再起動する前、またはスタンバイがアクティブ・データベースと同期される前に、アクティブ・データベースで障害が発生しました。
-
アクティブ・データベースで障害が発生しました。スタンバイ・データベースが
ACTIVE
になり、リカバリ・プロセスの残りが開始されます。(「アクティブ・データベースの障害からのリカバリ」を参照してください。)新しいスタンバイ・データベースが新しいアクティブ・データベースと完全に同期される前に、そのアクティブ・データベースで障害が発生しました。
これらのシナリオでは、スタンバイ・データベースの場合より多くの変更がサブスクライバに適用されている可能性があります。
この場合、次のいずれかのオプションを実行できる可能性があります。
バックアップからアクティブ・マスターをリストアする
アクティブ・マスターとスタンバイ・マスターの両方で障害が発生し、どちらも停止したがバックアップがあった場合は、アクティブ・マスターをリストアできます。
- バックアップからアクティブ・マスターをリストアします(『Oracle TimesTen In-Memory Databaseキャッシュ・ガイド』のキャッシュ・グループによるTimesTen Classicデータベースのバックアップとリストアを参照)。
DROP ACTIVE STANDBY PAIR
文を使用して、レプリケーション構成を削除します。DROP CACHE GROUP
およびCREATE CACHE GROUP
文を使用して、すべてのAWTキャッシュ・グループを削除および再作成します。- 読取り専用キャッシュ・グループをリフレッシュするためにはキャッシュ・エージェントはアクティブになっている必要があり、また、AWTキャッシュ・グループをロードするためにはレプリケーション・エージェントとキャッシュ・エージェントの両方がアクティブになっている必要があるため、レプリケーション・エージェントとキャッシュ・エージェントを起動します。
REFRESH CACHE GROUP
文を使用して読取り専用キャッシュ・グループをリフレッシュし、最新のコミット済データをキャッシュ済Oracle Database表からアップロードします。REFRESH CACHE GROUP ... PARALLEL
n
句を使用して、これらのキャッシュ済グループを複数のスレッドに同時にロードします。LOAD CACHE GROUP
文を使用してすべてのAWTキャッシュ・グループをロードし、自動リフレッシュ・プロセスを開始します。LOAD CACHE GROUP ... PARALLEL
n
句を使用して、これらのキャッシュ済グループを複数のスレッドに同時にロードします。- レプリケーション・エージェントとキャッシュ・エージェントの両方を停止し、アクティブ・スタンバイ・ペアの再作成に備えます。
CREATE ACTIVE STANDBY PAIR
文を使用して、レプリケーション構成を再作成します。- アクティブ・マスター・データベースで、
ttRepStateSet
('ACTIVE')
をコールして、そのデータベースにACTIVE
の役割を割り当てます。読取り専用キャッシュ・グループをレプリケートしている場合にこの手順を実行すると、このデータベースのAUTOREFRESH STATEがPAUSED
からON
に自動的に変更されます。 - レプリケーション・エージェント・ポリシーを設定し、アクティブ・データベースでレプリケーション・エージェントを起動します。「レプリケーション・エージェントの起動および停止」を参照してください。
- アクティブ・データベースでキャッシュ・エージェントを起動します。
- アクティブ・データベースをスタンバイ・データベースに複製します。
ttRepAdmin
-duplicate
ユーティリティまたはttRepDuplicateEx
C関数を使用して、データベースを複製できます。キャッシュ・グループを保持するには、ttRepAdmin
で-keepCG
コマンドライン・オプションを使用します。「データベースの複製」を参照してください。 - スタンバイ・データベースでレプリケーション・エージェント・ポリシーを設定し、新しいスタンバイ・データベースでレプリケーション・エージェントを起動します。「レプリケーション・エージェントの起動および停止」を参照してください。
- スタンバイ・データベースが
STANDBY
状態になるまで待機します。状態を確認するには、ttRepStateGet
組込みプロシージャを使用します。 ttCacheStart
組込みプロシージャまたはttAdmin
-cacheStart
ユーティリティを使用して、スタンバイ・データベースのキャッシュ・エージェントを開始します。- スタンバイ・データベースからすべてのサブスクライバを複製します。「サブスクライバへのマスター・データベースの複製」を参照してください。
ttRepAdmin
で-noKeepCG
コマンドライン・オプションを使用し、サブスクライバでキャッシュ・グループを通常のTimesTen表に変換します。 - サブスクライバでレプリケーション・エージェント・ポリシーを設定し、各サブスクライバ・データベースでエージェントを起動します。「レプリケーション・エージェントの起動および停止」を参照してください。