レプリケートされたログ・レコードの表示
いくつかツールで、ブックマークおよびログ順序番号によってレプリケーションを監視できます。
レプリケート・データベースでは、トランザクションがサブスクライバで完全に処理されたことをマスター・レプリケーション・エージェントが確認するまで、トランザクションはトランザクション・ログ・バッファおよびトランザクション・ログ・ファイルに保持されます。サブスクライバが含まれるアクティブ・スタンバイ・ペアのレプリケーション・スキームでは、トランザクションがスタンバイ・マスターとすべてのサブスクライバの両方で処理されたとアクティブ・マスターにより確認されるまで、トランザクションはトランザクション・ログに残ります。アクティブ・マスターは、これを確認した時点でのみ、ログ・バッファおよびトランザクション・ログ・ファイルからのパージが必要であると認識します。ログ領域を使い果たすと、マスター・データベースでの後続の更新が強制終了されます。
ノート:
トランザクション・ログの増大の詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のトランザクション・ログ・ファイルの蓄積の監視を参照してください。
トランザクションは、ログ・レコードの形式でログに保存されます。ブックマークを使用して、マスター・データベースがレプリケートしたログ・レコードまたはレプリケートしていないログ・レコードを検出できます。ブックマークは、ログ順序番号(LSN)で構成されており、この番号は、レプリケーションのパフォーマンスを測定するために使用可能なトランザクション・ログ内の特定のレコードの位置を識別できます。ブックマークに関連付けられているLSNは、hold LSN、last 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出力は次のようになります。
行 | 説明 |
---|---|
|
サブスクライバに送信できるようにログ内に保持されている最下位(最も古い)レコードの場所。値が-1/-1の場合は、レプリケーションがすべてのサブスクライバに対して 1つ以上のサブスクライバを持つアクティブ・スタンバイ・ペアを監視している場合は、この値がレプリケーション・スキームに含まれるすべてのノードに対して保管されている、最も古いレコードを示します。たとえば、サブスクライバを持つアクティブ・スタンバイ・ペアでは、最も古いレコードがスタンバイ・マスターまたはいずれかのサブスクライバ用のログに保管される可能性があります。 |
|
データベースに対して最後に生成されたトランザクション・ログ・レコードの場所。 |
|
ディスクに最後に書き込まれたトランザクション・ログ・レコードの場所。 |
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」がレプリケーション・スキームに含まれるすべてのノードに対して保管されている、最も古いレコードを示します。たとえば、サブスクライバを持つアクティブ・スタンバイ・ペアでは、最も古いレコードがスタンバイ・マスターまたはいずれかのサブスクライバ用のログに保管される可能性があります。