レプリケートされたログ・レコードの表示

いくつかツールで、ブックマークおよびログ順序番号によってレプリケーションを監視できます。

レプリケート・データベースでは、トランザクションがサブスクライバで完全に処理されたことをマスター・レプリケーション・エージェントが確認するまで、トランザクションはトランザクション・ログ・バッファおよびトランザクション・ログ・ファイルに保持されます。サブスクライバが含まれるアクティブ・スタンバイ・ペアのレプリケーション・スキームでは、トランザクションがスタンバイ・マスターとすべてのサブスクライバの両方で処理されたとアクティブ・マスターにより確認されるまで、トランザクションはトランザクション・ログに残ります。アクティブ・マスターは、これを確認した時点でのみ、ログ・バッファおよびトランザクション・ログ・ファイルからのパージが必要であると認識します。ログ領域を使い果たすと、マスター・データベースでの後続の更新が強制終了されます。

ノート:

トランザクション・ログの増大の詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』トランザクション・ログ・ファイルの蓄積の監視を参照してください。

トランザクションは、ログ・レコードの形式でログに保存されます。ブックマークを使用して、マスター・データベースがレプリケートしたログ・レコードまたはレプリケートしていないログ・レコードを検出できます。ブックマークは、ログ順序番号(LSN)で構成されており、この番号は、レプリケーションのパフォーマンスを測定するために使用可能なトランザクション・ログ内の特定のレコードの位置を識別できます。ブックマークに関連付けられているLSNは、hold LSNlast written LSNおよびlast LSN forced to diskです。hold LSNは、サブスクライバに送信できるようにログ内に保持されている最下位(最も古い)レコードの場所を示します。hold LSNとlast written LSNを比較することによって、サブスクライバに送信されていないトランザクション・ログ内のデータの量を確認できます。last LSN forced to diskは、トランザクション・ログ・ファイルに保存された最後のレコードを示します。

ユーザーは次のツールを使って、ブックマークとログの順序番号でレプリケーションを監視できます。

TTREP.REPPEERS表によるレプリケーションの監視

特定のサブスクライバへのレプリケーションを正確に監視する方法として、サブスクライバのsend LSNを監視するという方法があり、send LSNは、TTREP.REPPEERS表のSENDLSNHIGHおよびSENDLSNLOWフィールドで構成されています。

send LSN値とは対照的に、ブックマーク内に返されるhold LSNは、すべてのサブスクライバの最小のsend LSNを示すために10秒ごとに計算されるため、hold LSNは、レプリケーションの進行状況の概要を示し、個々のサブスクライバへのレプリケーションの進行状況は明示されません。レプリケーションの確認応答はパフォーマンスを向上させるために非同期であるため、send LSNは少し遅れる可能性もあります。ただし、サブスクライバのsend LSNは、使用できる最も正確な値であり、常にhold LSNに先行しています。

レプリケーション・ログ保持によるレプリケーションの監視

SYS.GV$LOG_HOLDSまたはSYS.V$LOG_HOLDSシステム・ビューから選択するか、ttLogHolds組込みプロシージャをコールして、レプリケーション・ログの保持に関する情報を取得します。

次の例は、アクティブ・スタンバイ・ペアのレプリケーション・スキームに対するttLogHolds組込みプロシージャの出力を示しています(アクティブ・マスターはmaster1、スタンバイ・マスターはmaster2、単一のサブスクライバはsubscriber1)。すべてのトランザクションはまずアクティブ・マスターからスタンバイ・マスターにレプリケートされ、それからスタンバイ・マスターによりトランザクションがサブスクライバに伝播されます。したがって、サブスクライバの進捗状況はスタンバイ・マスターの進捗状況から少し遅れます。

アクティブ・マスターはスタンバイ・マスターとサブスクライバの進捗状況の両方を監視するので、スタンバイ・マスターがなんらかの理由で停止した場合は、サブスクライバへのレプリケーションをアクティブ・マスターが引き受けます。アクティブ・マスターは、トランザクションがサブスクライバに適用されると確認を受け取るので、アクティブ・マスターはスタンバイ・マスターに障害が発生した場合に必要となる可能性がある関連のログ・レコードをいつリリースできるかがわかります(スタンバイ・マスターに障害が発生すると、アクティブ・マスターが直接サブスクライバにレプリケートするように切り替えられます)。トランザクションはスタンバイ・マスターとサブスクライバの両方で処理されるまで、トランザクション・ログに残ります。

Command> call ttLogHolds;
< 0, 3569664, Checkpoint                    , master1.ds0 >
< 0, 15742976, Checkpoint                    , master1.ds1 >
< 0, 16351496, Replication                   , ADC6160529:SUBSCRIBER1 >
< 0, 16351640, Replication                   , ADC6160529:MASTER2 >
4 rows found.

AWTキャッシュ・グループを使用している場合は、レプリケーション・エージェントを使用してトランザクションをOracle Databaseに非同期で伝播します。ttLogHolds組込みプロシージャをコールすると、説明フィールドに「_ORACLE」と表示され、AWTキャッシュ・グループの伝播のためにトランザクション・ログが保留されていることが示されます。

Command> call ttLogHolds();
< 0, 18958336, Checkpoint                    , cachealone1.ds0 >
< 0, 19048448, Checkpoint                    , cachealone1.ds1 >
< 0, 19050904, Replication                   , ADC6160529:_ORACLE >
3 rows found.

『Oracle TimesTen In-Memory Databaseシステム表およびビュー・リファレンス』SYS.GV$LOG_HOLDSまたはSYS.V$LOG_HOLDS、あるいは『Oracle TimesTen In-Memory Databaseリファレンス』ttLogHoldsを参照してください。

ttRepAdminユーティリティによるレプリケーションの監視

ブックマークの位置を表示するには、-bookmarkオプションを指定してttRepAdminユーティリティを使用します。

> ttRepAdmin -dsn masterds -bookmark
Replication hold LSN ...... 10/927692
Last written LSN .......... 10/928908
Last LSN forced to disk ... 10/280540
Each LSN is defined by two values:
Log file number / Offset in log file

ttRepAdmin -bookmarkのLSN出力は次のようになります。

説明

Replication hold LSN

サブスクライバに送信できるようにログ内に保持されている最下位(最も古い)レコードの場所。値が-1/-1の場合は、レプリケーションがすべてのサブスクライバに対してstop状態であること(または問い合されたデータベースがマスター・データベースではないこと)を示します。

1つ以上のサブスクライバを持つアクティブ・スタンバイ・ペアを監視している場合は、この値がレプリケーション・スキームに含まれるすべてのノードに対して保管されている、最も古いレコードを示します。たとえば、サブスクライバを持つアクティブ・スタンバイ・ペアでは、最も古いレコードがスタンバイ・マスターまたはいずれかのサブスクライバ用のログに保管される可能性があります。

Last written LSN

データベースに対して最後に生成されたトランザクション・ログ・レコードの場所。

Last LSN forced to disk

ディスクに最後に書き込まれたトランザクション・ログ・レコードの場所。

ttBookMark組込みプロシージャによるレプリケーションの監視

ブックマークの位置を表示するには、ttBookmark組込みプロシージャを使用します。

> ttIsql masterds

Command> call ttBookMark();
< 10, 928908, 10, 280540, 10, 927692 >
1 row found.

返された行内の最初の2列で、Last written LSNが、次の2列でLast LSN forced to diskが、最後の2列でReplication hold LSNが定義されます。

1つ以上のサブスクライバを持つアクティブ・スタンバイ・ペアを監視している場合は、「Replication hold LSN」がレプリケーション・スキームに含まれるすべてのノードに対して保管されている、最も古いレコードを示します。たとえば、サブスクライバを持つアクティブ・スタンバイ・ペアでは、最も古いレコードがスタンバイ・マスターまたはいずれかのサブスクライバ用のログに保管される可能性があります。