主コンテンツへ
Oracle® TimesTen In-Memory Databaseレプリケーション・ガイド
リリース18.1
E98633-04
  目次へ移動
目次
索引へ移動
Index

前
 
次
 

11 レプリケーションの管理

この章では、データベースのレプリケーション状態の監視と管理に使用できるいくつかのTimesTenユーティリティおよび組込みプロシージャについて説明します。

レプリケーションは、コマンドラインとプログラムの両方で管理および監視できます。この章で説明するttStatusおよびttRepAdminユーティリティは、コマンドラインでの問合せに有効です。レプリケーションをプログラムによって管理および監視するには、TimesTen組込みプロシージャ(『Oracle TimesTen In-Memory Databaseリファレンス』を参照)を使用するか、または独自のSQL SELECT文を作成してレプリケーション表(『Oracle TimesTen In-Memory Databaseシステム表およびビュー・リファレンス』を参照)を問い合せます。


ノート:

TimesTen SYSおよびTTREP表には問合せのためにのみアクセスできます。これらの表の内容を変更しようとしないでください。

この章の内容は次のとおりです。

レプリケーション・エージェントの状態の表示

レプリケーション・エージェントの現在の状態についての情報を表示できます。

また、特定のレプリケーション・データベースの状態も取得できます(「サブスクライバ・データベース情報の表示」および「レプリケーション・データベースの構成の表示」を参照)。

ttStatusを使用したレプリケーション・エージェントのステータスの取得

マスター・データベースのレプリケーション・エージェントが起動されていることを確認するには、ttStatusユーティリティを使用します。

例11-1 ttStatusを使用したレプリケーション・エージェントのステータスの取得

> ttStatus
TimesTen status report as of Thu Aug 11 17:05:23 2011
Daemon pid 18373 port 4134 instance ttuser
TimesTen server pid 18381 started on port 4136
------------------------------------------------------------------------
Data store /tmp/masterds
There are 16 connections to the data store
Shared Memory KEY 0x0201ab43 ID 5242889
PL/SQL Memory KEY 0x0301ab43 ID 5275658 Address 0x10000000
Type            PID     Context     Connection Name              ConnID
Process         20564   0x081338c0  masterds                          1
Replication     20676   0x08996738  LOGFORCE                          5
Replication     20676   0x089b69a0  REPHOLD                           2
Replication     20676   0x08a11a58  FAILOVER                          3
Replication     20676   0x08a7cd70  REPLISTENER                       4
Replication     20676   0x08ad7e28  TRANSMITTER                       6
Subdaemon       18379   0x080a11f0  Manager                        2032
Subdaemon       18379   0x080fe258  Rollback                       2033
Subdaemon       18379   0x081cb818  Checkpoint                     2036
Subdaemon       18379   0x081e6940  Log Marker                     2035
Subdaemon       18379   0x08261e70  Deadlock Detector              2038
Subdaemon       18379   0xae100470  AsyncMV                        2040
Subdaemon       18379   0xae11b508  HistGC                         2041
Subdaemon       18379   0xae300470  Aging                          2039
Subdaemon       18379   0xae500470  Flusher                        2034
Subdaemon       18379   0xae55b738  Monitor                        2037
Replication policy  : Manual
Replication agent is running.
Cache Agent policy  : Manual
PL/SQL enabled.

ttAdmin -queryを使用したポリシー設定の確認

データベースに対するポリシー設定(「レプリケーション・エージェントの起動および停止」で説明されているレプリケーション再起動ポリシーを含む)を確認するには、-queryオプションを指定してttAdminユーティリティを使用します。

例11-2 ttAdminを使用したポリシー設定の確認

> ttAdmin -query masterDSN
RAM Residence Policy : inUse
Manually Loaded In Ram : False
Replication Agent Policy : manual
Replication Manually Started : True
Cache Agent Policy : manual
Cache Agent Manually Started : False

ttDataStoreStatusを使用したレプリケーション・エージェントのステータスの取得

レプリケーション・エージェントの状態をプログラムから取得するには、ttDataStoreStatus組込みプロシージャを使用します。

例11-3 ttDataStoreStatusのコール

masterdsデータベースのレプリケーション・エージェントの状態を取得するには、ttDataStoreStatus組込みプロシージャをコールします。

> ttIsql masterds
Command> CALL ttDataStoreStatus('/tmp/masterds');
< /tmp/masterds, 964, 00000000005D8150, subdaemon, Global\DBI3b3234c0.0.SHM.35 >
< /tmp/masterds, 1712, 00000000016A72E0, replication, Global\DBI3b3234c0.0.SHM.35 >
< /tmp/masterds, 1712, 0000000001683DE8, replication, Global\DBI3b3234c0.0.SHM.35 >
< /tmp/masterds, 1620, 0000000000608128, application, Global\DBI3b3234c0.0.SHM.35 >
4 rows found.

ttDataStoreStatusの出力は、「ttStatusを使用したレプリケーション・エージェントのステータスの取得」ttStatusユーティリティの出力に類似しています。

サブスクライバのレプリケーション状態の設定

サブスクライバ・レプリケーション・エージェントの状態は、そのマスター・データベースによって記述されます。障害が発生したサブスクライバ・データベースをリカバリする場合は、レプリケーション・スキームで通信するマスター・データベースに対するサブスクライバ・データベースのレプリケーション状態を再設定する必要があります。サブスクライバ・データベースの状態は、コマンドラインまたはプログラムから再設定できます。

  • コマンドラインから、ttRepAdmin -stateを使用して、いずれかのサブスクライバ・データベースのレプリケーション状態を再設定するようにマスター・データベースに指示します。

  • ttIsqlから、ttRepSubscriberStateSet組込みプロシージャをコールして、いずれかまたはすべてのサブスクライバ・データベースのレプリケーション状態を再設定するようにマスター・データベースに指示します。

データベースの状態の問合せについては、「レプリケーション・エージェントの状態の表示」を参照してください。

マスター・データベースは、サブスクライバ・データベースをstartpauseまたはstopのいずれかの状態に設定できます。データベースの状態は、表11-1に示すとおり、TTREP.REPPEERS表のSTATE列に整数値として示されます。

表11-1 データベースの状態

状態 説明

start

STATE値: 0

レプリケーション更新が収集され、できるかぎり早くサブスクライバ・データベースに送信されます。サブスクライバ・データベースのレプリケーションが動作していない場合、更新は、送信可能になるまでトランザクション・ログ・ファイルに保存されます。

pause

STATE値: 1

レプリケーション更新は、送信を試行されずにログに保存されます。状態がstartに変更されると、送信が開始します。

stop

STATE値: 2

レプリケーション更新は、サブスクライバ・データベースに送信されずに破棄されます。サブスクライバ・データベースをstop状態にすると、マスターのトランザクション・ログに保留されている更新がすべて破棄されます。

警告: このサブスクライバの再起動を計画している場合、停止と再起動の間、更新は格納されません。このため、サブスクライバを再起動すると、サブスクライバには、マスターからの更新はすべて含まれません。再起動を計画している場合、サブスクライバを停止するかわりに、一時停止します。

failed

STATE値: 4

しきい値(ログ・データ)を超えているため、サブスクライバへのレプリケーションは失敗したとみなされます。この状態は、システムによって設定され、システムが状態をstopに設定する前の遷移状態です。failed状態のデータベースに接続するアプリケーションは警告を受信します。詳細は、「一般的なフェイルオーバーおよびリカバリの手順」を参照してください。


マスター・データベースがそのサブスクライバの1つをstart状態に設定すると、そのサブスクライバに対する更新がマスターのログに保存されます。サブスクライバがstop状態の場合、サブスクライバに対する更新は破棄されます。

サブスクライバがpause状態の場合、サブスクライバに対する更新はマスターのログに保存されますが、サブスクライバ・データベースには送信されません。マスターがサブスクライバをpauseからstartに変更すると、マスターのログに保存された更新のバックログがサブスクライバに送信されます。(これには例外があります。第14章「データベースのフェイルオーバーおよびリカバリの管理」を参照してください。)マスター・データベースは、状態が示されたサブスクライバに接続を確立できない場合、成功するまで接続の確立を定期的に試行します。

例11-4 ttRepAdminを使用したサブスクライバの状態の設定

コマンドラインからttRepAdminを使用して、subscriberdsサブスクライバ・データベースの状態をstopに設定するようにmasterdsマスター・データベースに指示するには、次のように入力します。

ttRepAdmin -dsn masterds -receiver -name subscriberds -state stop

ノート:

異なるホストに同じ名前のサブスクライバが複数ある場合は、ttRepAdminユーティリティの-hostオプションで変更対象のサブスクライバのホストを識別します。

例11-5 ttRepSubscriberStateSetを使用したサブスクライバの状態の設定

マスター・データベースで、ttRepSubscriberStateSet組込みプロシージャをコールして、repschemeレプリケーション・スキームのサブスクライバ・データベース(subscriberds ON system1)の状態をstopに設定します。

Command> CALL ttRepSubscriberStateSet('repscheme', 'repl',
          'subscriberds', 'system1', 2);

マスターのすべてのサブスクライバを特定の状態に設定する場合は、ttRepSubscriberStateSetのみを使用できます。ttRepAdminユーティリティに同等の機能はありません。

マスター・データベース情報の表示

マスター・データベースに関する情報を表示できます。

ttRepAdminを使用したマスター・データベースに関する情報の表示

マスター・データベースに関する情報を表示するには、-self -listオプションを指定してttRepAdminユーティリティを使用します。

ttRepAdmin -dsn masterDSN -self -list

例11-6 ttRepAdminを使用したマスター・データベースに関する情報の表示

この例は、複数サブスクライバのクラシック・レプリケーション・スキームで説明したマスター・データベースの出力を示しています。

> ttRepAdmin -dsn masterds -self -list
Self host "server1", port auto, name "masterds", LSN 0/2114272

次の表に、フィールドの説明を示します。

フィールド 説明
host データベースのホストの名前。
port このデータベースからの更新を受信する別のデータベースのレプリケーション・エージェントで使用されるTCP/IPポート。値が0(ゼロ)の場合は、レプリケーションでポートが自動的に割り当てられたことを示します。
name データベースの名前。
Log file / Replication hold LSN サブスクライバに送信するために保持されているトランザクション・ログ内の最も古い場所を示します。値が-1/-1の場合は、レプリケーションがすべてのサブスクライバに対してstop状態であることを示します。

レプリケーション表の問合せによるマスター・データベースに関する情報の取得

マスター・データベースに関する情報を取得するには、次のSELECT文を使用して、TTREP.TTSTORESおよびTTREP.REPSTORESレプリケーション表を問い合せます。

SELECT t.host_name, t.rep_port_number, t.tt_store_name
  FROM ttrep.ttstores t, ttrep.repstores s
    WHERE t.is_local_store = 0x01
      AND t.tt_store_id = s.tt_store_id;

これは、複数サブスクライバのクラシック・レプリケーション・スキームで説明したマスター・データベースのSELECT文の出力です。フィールドは、ホスト名、レプリケーション・ポート番号およびデータベース名です。

< server1, 0, masterds>

サブスクライバ・データベース情報の表示

レプリケーションはTimesTenトランザクション・ログを使用して、サブスクライバ・サイトに送信する必要がある情報を保持します。サブスクライバ・データベースとの通信が中断された場合、またはサブスクライバ・サイトが停止した場合、トランザクション・ログ・データが累積します。この項で説明する問合せの出力の一部から、各サブスクライバ・データベースのために累積されたトランザクション・ログ・データの量、各サブスクライバ・データベースとの通信に最後に成功してから経過した時間を確認できます。

次の方法を使用して、サブスクライバ・データベースに関する情報を表示します。

ttRepAdminユーティリティによるサブスクライバ・ステータスの表示

サブスクライバに関する情報を表示するには、-receiver -listオプションを指定してttRepAdminユーティリティを使用します。

ttRepAdmin -dsn masterDSN -receiver -list

例11-7 ttRepAdminを使用したサブスクライバに関する情報の表示

この例は、複数サブスクライバのクラシック・レプリケーション・スキームで説明したサブスクライバの出力を示しています。

> ttRepAdmin -dsn masterds -receiver -list
Peer name        Host name                Port   State   Proto
---------------- ------------------------ ------ ------- -----
subscriber1ds    server2                  Auto   Start      10

Last Msg Sent Last Msg Recv Latency TPS     RecordsPS Logs
------------- ------------- ------- ------- --------- ----
0:01:12       -             19.41 5       5        52    2

Peer name        Host name                Port   State   Proto
---------------- ------------------------ ------ ------- -----
subscriber2ds    server3                  Auto   Start      10

Last Msg Sent Last Msg Recv Latency TPS     RecordsPS Logs
------------- ------------- ------- ------- --------- ----
0:01:04       -             20.94         4        48    2

最初の行には、サブスクライバの定義が表示されます。その次の行には、このサブスクライバのために保持されているトランザクション・ログ・ファイルの数とともに、待機時間および速度の情報が表示されます。subscriber1dsの待機時間は19.41秒で、マスターよりログ2つ分遅れています。この待機時間は高い値で、待機時間の値が高いままでログの数が増え続ける場合、問題が発生していることを示します。


ノート:

表示されるサブスクライバ情報の詳細は、「サブスクライバ情報」を参照してください。

TTREP.REPLICATIONS表に指定したスキームが複数ある場合は、-schemeオプションを使用して、リストするスキームを指定する必要があります。そうしない場合、次のエラーを受信します。

Must specify -scheme to identify which replication scheme to use

詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』の「ttRepAdmin」を参照してください。

ttReplicationStatus組込みプロシージャによるサブスクライバ・ステータスの表示

ttIsql内でttReplicationStatus組込みプロシージャを使用することにより、1つ以上のサブスクライバ・データベースのステータスを表示できます(レポートされるのは、この組込みプロシージャがコールされたマスター・データベースのサブスクライバのステータスのみです)。

例11-8 このマスターの単一サブスクライバに関するステータスの表示

次の例は、host1に配置されているサブスクライバmaster2のステータスを取得します。ホスト名が除外されている場合、サブスクライバは、その名前のホストのみに配置されています。

Command> call ttReplicationStatus('master2', 'host1');
< MASTER2, HOST1, 0, start, 1, 26, _ACTIVESTANDBY , TTREP >
1 row found. 

表示される情報は、host1に配置されており、自動的に割り当てられたポートでリスニングしているサブスクライバmaster2に関するステータスです。TCP/IPポートは、マスターからの更新を受信するサブスクライバ・エージェントで使用されます。ただし、値が0 (ゼロ)の場合は、レプリケーションでポートが自動的に割り当てられたことを示します。

このサブスクライバは、起動状態です。このピアに対しては1つのトランザクション・ログのみが保持されており、最後のレプリケーションから26秒が経過しています。レプリケーション・スキームの名前は_ACTIVESTANDBY、所有者はTTREPです。

例11-9 このマスターのすべてのサブスクライバに関するステータスの表示

サブスクライバまたはサブスクライバのホスト名のいずれも提供しない場合、このマスターのすべてのサブスクライバに関するステータスが返されます。次の例では、このマスターに対してサブスクライバが1つのみ設定されているので、前述と同じステータスが示されます。

Command> call ttReplicationStatus();
< MASTER2, HOST1, 0, start, 1, 26, _ACTIVESTANDBY , TTREP >
1 row found. 

詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』のttReplicationStatusに関する説明を参照してください。

レプリケーション表の問合せによるサブスクライバに関する情報の表示

次のSELECT文を使用してTTREP.REPPEERS表、TTREP.TTSTORES表およびSYS.MONITOR表を問い合せることにより、マスターのサブスクライバに関する同じ情報をプログラムから取得できます。

SELECT t1.tt_store_name, t1.host_name, t1.rep_port_number,
p.state, p.protocol, p.timesend, p.timerecv, p.latency,
p.tps, p.recspersec, t3.last_log_file - p.sendlsnhigh + 1
  FROM ttrep.reppeers p, ttrep.ttstores t1, ttrep.ttstores t2, sys.monitor t3
  WHERE p.tt_store_id = t1.tt_store_id
    AND t2.is_local_store = 0X01
    AND p.subscriber_id = t2.tt_store_id
    AND p.replication_name = 'repscheme'
    AND p.replication_owner = 'repl'
    AND (p.state = 0 OR p.state = 1);

次に、前述の3つの文の出力例を示します。

< subscriber1ds, server2, 0, 0, 7, 1003941635, 0, -1.00000000000000, -1, -1, 1 >
< subscriber2ds, server3, 0, 0, 7, 1003941635, 0, -1.00000000000000, -1, -1, 1 >

表示されるサブスクライバ情報の詳細は、「サブスクライバ情報」を参照してください。

サブスクライバ情報

ttRepAdminユーティリティまたはSELECT文の出力には、次のフィールドが含まれます。

フィールド 説明
Peer name サブスクライバ・データベースの名前
Host name サブスクライバをホスティングするマシンの名前
Port マスターからの更新を受信するサブスクライバ・エージェントで使用されるTCP/IPポート。値が0(ゼロ)の場合は、レプリケーションでポートが自動的に割り当てられたことを示します。
State マスター・データベースに対するサブスクライバの現在のレプリケーション状態(詳細は、「サブスクライバ・データベース情報の表示」を参照)。
Protocol このマスターとマスターに対応するサブスクライバ間で通信するレプリケーションで使用される内部プロトコル。この値は無視できます。
Last message sent マスターがサブスクライバに最後にメッセージを送信してから経過した時間(秒)。このようなメッセージには、データベース間で送信されたハートビート・メッセージが含まれます。
Last message received このサブスクライバがマスターから最後のメッセージを受信してから経過した時間(秒)。
Latency マスターがメッセージを送信してからサブスクライバから最後の確認応答を受信するまでの平均待機時間(秒)。(「ノート」を参照。)
Transactions per second マスターでコミットされ、サブスクライバで処理される、1秒当たりの平均トランザクション数。(「ノート」を参照。)
Records per second 1秒当たりに送信される平均レコード数。(「ノート」を参照。)
Logs マスター・データベースがサブスクライバのために保持しているトランザクション・ログ・ファイルの数。


ノート:

LatencyTPSおよびRecordsPSは、レコードのバッチのレプリケート中に検出された平均値をレポートします。これらの値は、ワークロードが比較的一定でない場合、不安定になる可能性があります。値が-1の場合は、マスターのレプリケーション・エージェントがそのサブスクライバ・レプリケーション・エージェントとの通信を確立していないか、またはデータをサブスクライバ・レプリケーション・エージェントに送信していないことを示します。

レプリケート・データベースの構成の表示

レプリケート・データベースの構成を表示できます。

ttIsql repschemesコマンドによる構成情報の表示

レプリケート・データベースの構成をttIsqlプロンプトから表示するには、repschemesコマンドを使用します。

Command> repschemes;

例11-10に、「伝播スキーム」で説明されているレプリケーション・スキームからの構成出力を示します。

例11-10 ttIsql repschemesコマンドからの出力

Replication Scheme PROPAGATOR:

  Element: A
    Type: Table TAB
    Master Store: CENTRALDS on FINANCE Transmit Durable
    Subscriber Store: PROPDS on NETHANDLER

  Element: B
    Type: Table TAB
    Propagator Store: PROPDS on NETHANDLER Transmit Durable
    Subscriber Store: BACKUP1DS on BACKUPSYSTEM1
    Subscriber Store: BACKUP2DS on BACKUPSYSTEM2

Store: BACKUP1DS on BACKUPSYSTEM1
  Port: (auto)
  Log Fail Threshold: (none)
  Retry Timeout: 120 seconds
  Compress Traffic: Disabled

Store: BACKUP2DS on BACKUPSYSTEM2
  Port: (auto)
  Log Fail Threshold: (none)
  Retry Timeout: 120 seconds
  Compress Traffic: Disabled

Store: CENTRALDS on FINANCE
  Port: (auto)
  Log Fail Threshold: (none)
  Retry Timeout: 120 seconds
  Compress Traffic: Disabled

Store: PROPDS on NETHANDLER
  Port: (auto)
  Log Fail Threshold: (none)
  Retry Timeout: 120 seconds
  Compress Traffic: Disabled

ttRepAdminユーティリティによる構成情報の表示

レプリケート・データベースの構成を表示するには、-showconfigオプションを指定してttRepAdminユーティリティを使用します。

ttRepAdmin -showconfig -dsn masterDSN

例11-11に、「伝播スキーム」で説明されているレプリケーション・スキームによって構成された伝播元データベースからの構成出力を示します。propdsプロパゲータの待機時間は19.41秒で、マスターよりログ2つ分遅れています。

例11-11 ttRepAdmin出力

> ttRepAdmin -showconfig -dsn centralds
Self host "finance", port auto, name "centralds", LSN 0/155656, timeout 120, 
threshold 0

List of subscribers
-----------------
Peer name        Host name                Port   State   Proto
---------------- ------------------------ ------ ------- -----
propds           nethandler               Auto   Start      10

Last Msg Sent Last Msg Recv Latency TPS     RecordsPS Logs
------------- ------------- ------- ------- --------- ----
0:01:12       -             19.41         5        52    2

List of tables and subscriptions
--------------------------------
Table details
-------------
Table : tab          Timestamp updates : -

Master Name                 Subscriber Name
-----------                 -------------
centralds                   propds

Table details
-------------
Table : tab          Timestamp updates : -

Master Name                 Subscriber name
-----------                 -------------
propds                      backup1ds
propds                      backup2ds

「List of subscribers」フィールドの意味は、「レプリケーション表の問合せによるサブスクライバに関する情報の表示」を参照してください。Table detailsフィールドには、表およびそのマスター(送信者)とサブスクライバのデータベースの名前が表示されます。

レプリケーション表の問合せによる構成情報の表示

構成情報を表示するには、次のSELECT文を使用して、TTREP.TTSTORESTTREP.REPSTORESTTREP.REPPEERSSYS.MONITORTTREP.REPELEMENTSおよびTTREP.REPSUBSCRIPTIONS表を問い合せます。

SELECT t.host_name, t.rep_port_number, t.tt_store_name, s.peer_timeout, 
s.fail_threshold
  FROM ttrep.ttstores t, ttrep.repstores s
    WHERE t.is_local_store = 0X01
      AND t.tt_store_id = s.tt_store_id;

SELECT t1.tt_store_name, t1.host_name, t1.rep_port_number,
       p.state, p.protocol, p.timesend, p.timerecv, p.latency,
       p.tps, p.recspersec, t3.last_log_file - p.sendlsnhigh + 1
  FROM ttrep.reppeers p, ttrep.ttstores t1, ttrep.ttstores t2, sys.monitor t3
    WHERE p.tt_store_id = t2.tt_store_id
      AND t2.is_local_store = 0X01
      AND p.subscriber_id = t1.tt_store_id
      AND (p.state = 0 OR p.states = 1);

SELECT ds_obj_owner, DS_OBJ_NAME, t1.tt_store_name,t2.tt_store_name
  FROM ttrep.repelements e, ttrep.repsubscriptions s, 
      ttrep.ttstores t1, ttrep.ttstores t2
    WHERE s.element_name = e.element_name
      AND e.master_id = t1.tt_store_id
      AND s.subscriber_id = t2.tt_store_id
    ORDER BY ds_obj_owner, ds_obj_name;

例11-12 問合せの出力

問合せの出力例は、「伝播スキーム」で説明されているレプリケーション・スキームによって構成されたデータベースに対するものです。

最初の問合せの出力は次のようになります。

< finance, 0, centralds, 120, 0 >

これには、ホスト名、ポート番号およびデータベース名が表示されます。4番目の値(120)は、データベースがメッセージを送信する前に別のデータベースからのレスポンスを待機する時間を定義するTIMEOUT値です。最後の値(0)は、ログ障害しきい値(「トランザクション・ログ障害しきい値の設定」を参照)です。

2番目の問合せの出力は次のようになります。

< propds, nethandler, 0, 0, 7, 1004378953, 0, -1.00000000000000, -1, -1, 1 >

フィールドの説明は、「レプリケーション表の問合せによるサブスクライバに関する情報の表示」を参照してください。

最後の問合せの出力は次のようになります。

< repl, tab, centralds, propds >
< repl, tab, propds, backup1ds >
< repl, tab, propds, backup2ds >

これらの行には、レプリケート表およびそのマスター(送信者)とサブスクライバ(受信者)のデータベースの名前が表示されます。

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

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


ノート:

トランザクション・ログの増大の詳細は、『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 SQLリファレンス』の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組込みプロシージャを使用します。

例11-13 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」がレプリケーション・スキームに含まれるすべてのノードに対して保管されている、最も古いレコードを示します。たとえば、サブスクライバを持つアクティブ・スタンバイ・ペアでは、最も古いレコードがスタンバイ・マスターまたはいずれかのサブスクライバ用のログに保管される可能性があります。

ttRepAdminを使用したレプリケーション・ステータスの表示

-showstatusオプションを指定してttRepAdminユーティリティを使用すると、レプリケーション・エージェントの現在のステータスを表示できます。ステータス出力には、問い合されたデータベースのレプリケーション・エージェントで使用されるブックマークの位置、ポート番号および通信プロトコルが含まれます。

ttRepAdmin -showstatusの出力には、レプリケーション・エージェントで使用されるメイン・スレッド、TRANSMITTERスレッドおよびRECEIVERスレッドのステータスが含まれます。マスター・データベースにはTRANSMITTERスレッド、サブスクライバ・データベースにはRECEIVERスレッドがあります。双方向レプリケーション・スキームでマスター/サブスクライバとしての機能するデータベースには、TRANSMITTERスレッドおよびRECEIVERスレッドの両方があります。

各レプリケーション・エージェントには、ポートでピア接続をリスニングする単一のREPLISTENERスレッドがあります。マスター・データベースでは、REPLISTENERスレッドがサブスクライバ・データベースごとに個別のTRANSMITTERスレッドを開始します。サブスクライバ・データベースでは、REPLISTENERスレッドがマスターからの接続のたびに個別のRECEIVERスレッドを開始します。

TimesTenデーモンがレプリケーション・エージェントの停止を要求した場合、またはレプリケーション・エージェントで使用されている他のいずれかのスレッドで致命的なエラーが発生した場合、メイン・スレッドは他のすべてのスレッドが正常に終了するまで待機します。TimesTenデーモンは、致命的なエラーの種類に応じて、レプリケーション・エージェントを再起動する場合もしない場合もあります。REPLISTENERスレッドは、レプリケーション・エージェントの存続期間中には終了しません。TRANSMITTERまたはRECEIVERスレッドは停止する場合がありますが、レプリケーション・エージェントによって再起動されます。RECEIVERスレッドは、リカバリ不可能なエラーが発生した場合、またはマスターが接続を切断した場合に終了します。

例11-14に、ttRepAdmin -showstatusの出力を示します。

例の後の項では、ttRepAdmin -showstatus出力の各フィールドの意味について説明します。

例11-14 アクティブ・スタンバイ・ペアのレプリケーション・スキームのステータス

次に、アクティブ・スタンバイ・ペアのレプリケーション・スキーム内でrep1データベースがアクティブ・マスターで、rep2データベースがスタンバイ・マスターであるアクティブ・スタンバイ・ペアのレプリケーション・スキームを示します。

この例のReplicationParallelism接続属性は2に設定されており、これはソース・データベースのTRANSMITTERスレッド数およびターゲット・データベースのRECEIVERスレッド数を示します。

$ ttRepAdmin -showstatus -detail rep1
 
Replication Agent Status as of: 2019-09-03 10:01:31
 
DSN                         : rep1
Process ID                  : 9012 (Started)
Replication Agent Policy    : manual
Host                        : MYHOST
RepListener Port            : 56209 (AUTO)
Main thread's state         : STATE_MM_IDLE_STATE
Last write LSN              : 0.22169832
Last LSN forced to disk     : 0.22169600
Replication hold LSN        : 0.22159592
 

Replication hold LSNLast write LSNおよびLast LSN forced to diskが非常に近いので、レプリケーションは適切に実行されていることがわかります。Replication hold LSNLast write LSNおよびLast LSNより遅れる場合、レプリケーションはマスターの更新に追い付いていません。

Replication Peers:
   Name                     : REP2
   Host                     : MYHOST2
   Port                     : 51509 (AUTO) (Connected)
   Replication State        : STARTED
   Communication Protocol   : 47
 
   Name                     : REP2
   Host                     : MYHOST2
   Port                     : 51509 (AUTO) (Connected)
   Replication State        : STARTED
   Communication Protocol   : 47 
 

ReplicationParallelismは2に設定されているため、rep2用のレプリケーション・ピアについては2つのエントリがあります。

REPHOLD thread (REPHOLD:140175402608384):
   Start/Restart count   : 1
   Current state         : STATE_REPHOLD_SLEEPING
   Current DB context    : 0x7f7d180008c0
 
REPLISTENER thread (REPLISTENER:140175393158912):
   Start/Restart count   : 1
   Current state         : STATE_LISTENER_WAIT_FOR_PEER_CONN
   Current DB context    : 0x7f7c9c0008c0
   Most recent errors (max 5):
     TT16999 in receiver.c (line 2608) at 09:55:38 on 09-03-2019
     TT16999 in receiver.c (line 2608) at 09:55:55 on 09-03-2019
 
LOGFORCE thread (LOGFORCE:140175407265536):
   Start/Restart count   : 1
   Current state         : STATE_LOGFORCE_SLEEPING
   Current DB context    : 0x7f7d140afae0
 

アクティブ・スタンバイ・ペアでは、各マスターが他のマスターへのトランスミッタと他のマスターからのレシーバの両方を持ちます。ReplicationParallelism設定により決定されるトランスミッタとレシーバの数。この例では、ReplicationParallelismが2に設定されているため、アクティブ・マスターとスタンバイ・マスターの間に2つのTRANSMITTERスレッドとRECEIVERスレッドがあります(出力ではトラック0とトラック1として示されています)。

TRANSMITTER thread(s) (TRANSMITTER(S):140172775343872):
 For                     : REP2 (track 1)(SSL) 
 Start/Restart count   : 1
   Current state         : STATE_XMTR_FLUSH_SENDING_DONE
   Current DB context    : 0x7f7ca44ff640
   Send LSN              : 0.22159592
   Replication Tables CTN: 1567529721.542
   Transactions sent     : 101
   Total packets sent    : 36
   Tick packets sent     : 25
   MIN sent packet size  : 64
   MAX sent packet size  : 16384
   AVG sent packet size  : 876
   Last packet sent at   : 10:01:26
   Total Packets received: 34
   MIN rcvd packet size  : 64
   MAX rcvd packet size  : 128
   AVG rcvd packet size  : 119
   Last packet rcvd'd at : 10:01:26
   TXNs Allocated        : 102
   TXNs In Use           : 0
   ACTs Allocated        : 101
   ACTs In Use           : 0
   ACTs Data Allocated   : 0
   Timeout               : 7200
   Adapted Timeout Max   : 7200
   Adapted Timeout Time  : 1567530021
   current txn           : 0.0
   Longest batch runtime : 0
   Longest batch 1st txn : 0.0
   Longest batch lst txn : 0.0
   Largest txn (ops)     : 1567529721.441
   Largest txn (#ops)    : 1
   Longest txn (time)    : 0.0
   Longest txn (secs)    : 0
   Most recent errors (max 5):
     TT16999 in transmitter.c (line 1465) at 09:55:56 on 09-03-2019
 
RECEIVER thread(s) (RECEIVER:140173241992960):
 For                     : REP2 (track 1)(SSL) 
   Start/Restart count   : 1
   Current state         : STATE_RCVR_READ_NETWORK_LOOP
   Current DB context    : 0x7f7c9c4b0b90
   Transactions received : 0
   Total packets sent    : 28
   Tick packets sent     : 0
   MIN sent packet size  : 64
   MAX sent packet size  : 128
   AVG sent packet size  : 122
   Last packet sent at   : 10:01:19
   Total Packets received: 29
   MIN rcvd packet size  : 64
   MAX rcvd packet size  : 156
   AVG rcvd packet size  : 68
   Last packet rcvd'd at : 10:01:19
   rxWaitCTN             : 0.0
   prevCTN               : 0.0
   current txn           : 0.0
   STA Blk Data Allocated: 0
   STA Data Allocated    : 0
   Longest batch runtime : 0
   Longest batch 1st txn : 0.0
   Longest batch lst txn : 0.0
   Largest txn (ops)     : 0.0
   Largest txn (#ops)    : 0
   Longest txn (time)    : 0.0
   Longest txn (secs)    : 0
 
TRANSMITTER thread(s) (TRANSMITTER(M):140175390009088):
 For                     : REP2 (track 0)(SSL) 
   Start/Restart count   : 1
   Current state         : STATE_META_PEER_INFO
   Current DB context    : 0x7f7c980008c0
   Send LSN              : 0.22159592
   Replication Tables CTN: 1567529721.386
   Transactions sent     : 100
   Total packets sent    : 88
   Tick packets sent     : 74
   MIN sent packet size  : 64
   MAX sent packet size  : 16384
   AVG sent packet size  : 394
   Last packet sent at   : 10:01:26
   Total Packets received: 86
   MIN rcvd packet size  : 64
   MAX rcvd packet size  : 128
   AVG rcvd packet size  : 123
   Last packet rcvd'd at : 10:01:26
   TXNs Allocated        : 101
   TXNs In Use           : 0
   ACTs Allocated        : 100
   ACTs In Use           : 0
   ACTs Data Allocated   : 0
   Timeout               : 7200
   Adapted Timeout Max   : 7200
   Adapted Timeout Time  : 1567529956
   current txn           : 0.0
   Longest batch runtime : 0
   Longest batch 1st txn : 0.0
   Longest batch lst txn : 0.0
   Largest txn (ops)     : 1567529721.286
   Largest txn (#ops)    : 1
   Longest txn (time)    : 0.0
   Longest txn (secs)    : 0
   Most recent errors (max 5):
     TT16999 in transmitter.c (line 1465) at 09:55:38 on 09-03-2019
 
RECEIVER thread(s) (RECEIVER:140173245142784):
 For                     : REP2 (track 0)(SSL) 
   Start/Restart count   : 1
   Current state         : STATE_RCVR_READ_NETWORK_LOOP
   Current DB context    : 0x7f7c944a41f0
   Transactions received : 0
   Total packets sent    : 79
   Tick packets sent     : 0
   MIN sent packet size  : 64
   MAX sent packet size  : 128
   AVG sent packet size  : 125
   Last packet sent at   : 10:01:29
   Total Packets received: 80
   MIN rcvd packet size  : 64
   MAX rcvd packet size  : 156
   AVG rcvd packet size  : 65
   Last packet rcvd'd at : 10:01:29
   rxWaitCTN             : 0.0
   prevCTN               : 0.0
   current txn           : 0.0
   STA Blk Data Allocated: 0
   STA Data Allocated    : 0
   Longest batch runtime : 0
   Longest batch 1st txn : 0.0
   Longest batch lst txn : 0.0
   Largest txn (ops)     : 0.0
   Largest txn (#ops)    : 0
   Longest txn (time)    : 0.0
   Longest txn (secs)    : 0 

MAINスレッド・ステータス・フィールド

次のフィールドは、問い合されたデータベースのレプリケーション・エージェント内のMAINスレッドの出力です。

MAINスレッド 説明
DSN 問合せ対象のデータベースの名前。
Process ID レプリケーション・エージェントのプロセスID。
Replication Agent Policy 再起動ポリシー(「レプリケーション・エージェントの起動および停止」を参照)。
Host このデータベースをホスティングするマシンの名前。
RepListener Port レプリケーション・エージェントがリモート・レプリケーション・エージェントのTRANSMITTERスレッドからの接続をリスニングするために使用するTCP/IPポート。値が0(ゼロ)の場合は、このポートがレプリケーション・スキームの一部として指定されているのでなく、レプリケーション・エージェントに自動的に割り当てられている(デフォルト)ことを示します。
Main thread's state 内部使用のみ。
Last write LSN データベースに対して最後に生成されたトランザクション・ログ・レコードの場所。詳細は、「レプリケート・ログ・レコードの表示」を参照してください。
Last LSN forced to disk ディスクに最後に書き込まれたトランザクション・ログ・レコードの場所。詳細は、「レプリケート・ログ・レコードの表示」を参照してください。
Replication hold LSN サブスクライバに送信できるようにログ内に保持されている最下位(最も古い)レコードの場所。値が-1/-1の場合は、レプリケーションがすべてのサブスクライバに対してstop状態であることを示します。詳細は、「レプリケート・ログ・レコードの表示」を参照してください。

レプリケーション・ピア・ステータス・フィールド

次のフィールドは、問い合されたデータベースのレプリケーション・スキームに関連している各レプリケーション・ピアの出力です。ピアは、マスター、サブスクライバ、プロパゲータ、または双方向レプリケーション・スキームではマスターとサブスクライバの両方の役割を果たすことができます。

レプリケーション・ピア 説明
Name このデータベースのレプリケーション・ピアであるデータベースの名前。
Host ピア・データベースのホスト。
Port ピア・データベースのレプリケーション・エージェントが使用するTCP/IPポート。値が0(ゼロ)の場合は、このポートがレプリケーション・スキームの一部として指定されているのでなく、レプリケーション・エージェントに自動的に割り当てられている(デフォルト)ことを示します。
Replication State 問い合されたデータベースに対するレプリケーション・ピアの現在のレプリケーション状態(詳細は、「サブスクライバ・データベース情報の表示」を参照)。
Communication Protocol レプリケーションがピア間で通信を行うために使用する内部プロトコル。(内部使用専用。)


ノート:

REPHOLDREPLISTENERおよびLOGFORCEスレッド・セクションは、内部使用専用です。

TRANSMITTERスレッド・ステータス・フィールド

次のフィールドは、マスター・レプリケーション・エージェントがトランザクション更新をサブスクライバに送信するために使用する各TRANSMITTERスレッドの出力です。対応する複数のサブスクライバがあるマスターは、複数のTRANSMITTERスレッドを持つことになります。


ノート:

TRANSMITTER出力のカウントは、レプリケーション・エージェントを起動すると、累積し始めます。これらのカウントは、レプリケーション・エージェントを起動または再起動した場合にのみ0(ゼロ)にリセットされます。

TRANSMITTERスレッド 説明
For レプリケート・データをこのデータベースから受信するサブスクライバ・データベースの名前。また、レプリケーション・エージェントのトランスミッタがTransport Layer Security (TLS)を使用しているかどうか(SSLで示される)。
Start/Restart count 処理のタイムアウトやネットワーク障害などの一時エラーが発生したため、レプリケーション・エージェントによってこのTRANSMITTERスレッドが起動または再起動された回数。
Current state 内部使用のみ。
Current DB context 内部使用のみ。
Send LSN このピアに最後に送信されたLSN。詳細は、「レプリケート・ログ・レコードの表示」を参照してください。
Replication Tables CTN 内部使用のみ。
Transactions sent サブスクライバに送信されたトランザクションの合計数。
Total packets sent サブスクライバに送信されたパケットの合計数(ティック・パケットを含む)。
Tick packets sent 送信されたティック・パケットの合計数。ティック・パケットは、マスターとサブスクライバの間のハートビートを維持するために使用されます。この値を使用すると、レプリケート・データと関連していない「Total packets sent」パケットの数を確認できます。
MIN sent packet size サブスクライバに送信された最小パケットのサイズ。
MAX sent packet size サブスクライバに送信された最大パケットのサイズ。
AVG sent packet size サブスクライバに送信されたパケットの平均サイズ。
Last packet sent at パケットが最後に送信された時刻(24時間制の時刻)。
Total packets received サブスクライバから受信したパケットの合計数(ティック・パケットおよび確認応答データ)。
MIN rcvd packet size 受信した最小パケットのサイズ。
MAX rcvd packet size 受信した最大パケットのサイズ。
AVG rcvd packet size 受信したパケットの平均サイズ。
Last packet rcvd at パケットを最後に受信した時刻(24時間制の時刻)。
TXNs Allocated

TXNs In Use

ACTs Allocated

ACTs In Use

ACTs Data Allocated

Timeout

Adapted Timeout Max

Adapted Timeout Time

current txn

Longest batch runtime

Longest batch 1st txn

Longest batch lst txn

Largest txn (#ops)

Longest txn (time)

内部使用のみ。
Largest txn (ops) 処理数。
Longest txn (secs) 最長トランザクションの処理に要した時間(秒単位)。
Most recent errors (max 5) このスレッドによって最後に生成された5つのエラー。

RECEIVERスレッド・ステータス・フィールド

次のフィールドは、サブスクライバ・レプリケーション・エージェントがマスターからトランザクション更新を受信するために使用する各RECEIVERスレッドの出力です。複数のマスターによって更新されるサブスクライバは、複数のRECEIVERスレッドを持つことになります。


ノート:

RECEIVER出力のカウントは、レプリケーション・エージェントを起動すると、累積し始めます。これらのカウントは、レプリケーション・エージェントを起動または再起動した場合にのみ0(ゼロ)にリセットされます。

RECEIVERスレッド 説明
For レプリケート・データをこのデータベースから送信するマスター・データベースの名前。また、レプリケーション・エージェントのレシーバがTransport Layer Security (TLS)を使用しているかどうか(SSLで示される)。
Start/Restart count 処理のタイムアウトやネットワーク障害などの一時エラーが発生したため、レプリケーション・エージェントによってこのRECEIVERスレッドが起動または再起動された回数。
Current state 内部使用のみ。
Current DB context 内部使用のみ。
Transactions received マスターから受信したトランザクションの合計数。
Total packets sent マスターに送信されたパケットの合計数(ティック・パケットおよび確認応答データ)。
Tick packets sent マスターに送信されたティック・パケットの合計数。ティック・パケットは、マスターとサブスクライバの間のハートビートを維持するために使用されます。この値を使用すると、確認応答データと関連していない「Total packets sent」パケットの数を確認できます。
MIN sent packet size マスターに送信された最小パケットのサイズ。
MAX sent packet size マスターに送信された最大パケットのサイズ。
AVG sent packet size マスターに送信されたパケットの平均サイズ。
Last packet sent at パケットがマスターに最後に送信された時刻(24時間制の時刻)。
Total packets received マスターから受信した確認応答データのパケットの合計数。
MIN rcvd packet size 受信した最小パケットのサイズ。
MAX rcvd packet size 受信した最大パケットのサイズ。
AVG rcvd packet size 受信したパケットの平均サイズ。
Last packet rcvd at パケットを最後に受信した時刻(24時間制の時刻)。
rxWaitCTN

prevCTN

current txn

STA Blk Data Allocated

STA Data Allocated

Longest batch runtime

Longest batch 1st txn

Longest batch lst txn

Largest txn (#ops)

Longest txn (time)

内部使用のみ。
Largest txn (ops) 処理数。
Longest txn (secs) 最長トランザクションの処理に要した時間(秒単位)。

RETURNサービス・トランザクションのステータスの確認

次の項では、RETURNサービスのステータスを確認する方法および最後に返されたステータスを確認する方法を説明します。

RETURNサービスが無効にされているかどうかの確認

特定のサブスクライバに対するRETURNサービスがDISABLE RETURN障害ポリシーによって無効にされているかどうかを確認するには、ttRepSyncSubscriberStatus組込みプロシージャをコールします。ttRepSyncSubscriberStatus組込みプロシージャで返される値が1の場合は、RETURNサービスがサブスクライバに対して無効になっていることを示し、0(ゼロ)の場合は、RETURNサービスが有効であることを示します。

例11-15 ttRepSyncSubscriberStatusを使用したRETURN RECEIPTのステータスの取得

ttRepSyncSubscriberStatusを使用して、マスター・データベースmasterDSNに対するデータベースsubscriberdsのRETURN RECEIPTのステータスを取得するには、次のように入力します。

> ttIsql masterDSN

Command> CALL ttRepSyncSubscriberStatus ('subscriberds');
< 0 >
1 row found.

この結果は、RETURNサービスが有効であることを示しています。

RETURNサービスを有効化または無効化する方法の詳細は、「RETURNサービス・タイムアウト・エラーおよびレプリケーションの状態変化の管理」を参照してください。

RETURNサービスの最後に返されたステータスの確認

接続ハンドルで最後に実行されたRETURN RECEIPTトランザクションまたはRETURN TWOSAFEトランザクションのステータスは、ttRepXactTokenGetおよびttRepXactStatusプロシージャをコールして確認できます。

まず、ttRepXactTokenGet組込みプロシージャをコールして、最後のRETURNサービス・トランザクションの固有トークンを取得します。RETURN RECEIPTを使用している場合は、マスター・データベースで最後にコミットされたRETURN RECEIPTトランザクションがトークンによって識別されます。RETURN TWOSAFEを使用している場合は、サブスクライバでのコミットが成功した場合に、マスターのレプリケーション・エージェントによってコミットされる、マスター上の最後のRETURN TWOSAFEトランザクションがトークンによって識別されます。ただし、タイムアウトなどのエラーが発生した場合、トークンによって識別されたTWOSAFEトランザクションはマスターのレプリケーション・エージェントによってはコミットされません。

次に、ttRepXactTokenGetによって返されたトークンをttRepXactStatus組込みプロシージャに渡して、RETURNサービスのステータスを取得します。ttRepXactStatus組込みプロシージャの出力は、レプリケート・データを受信するように構成されているサブスクライバ、および各サブスクライバに対してトランザクションの現在のステータス(未送信、受信済、コミット済)をレポートします。サブスクライバ・レプリケーション・エージェントがサブスクライバ・データベースへのトランザクションの適用時に問題を検出した場合、ttRepXactStatus組込みプロシージャにはエラー文字列も含まれます。RETURN TWOSAFEの使用時にタイムアウトなどのエラーを受信した場合は、無条件にコミットするか、コミットを再試行するかを決定できます。これは、「RETURNサービスの使用」で説明されます。


ノート:

ttRepXactTokenGetで取得したトークンを使用せずにttRepXactStatusをコールすると、接続上でRETURN RECEIPTまたはRETURN TWOSAFEレプリケーション・サービスによって最後にコミットされたトランザクションの状態が返されます。

ttRepXactStatus組込みプロシージャは、各サブスクライバのRETURNサービスのステータスを、次のように書式設定された行セットとして返します。

subscriberName, status, error

例11-16 各サブスクライバのステータスのレポート

GetRSXactStatus関数でttRepXactTokenGetおよびttRepXactStatus組込みプロシージャをコールすると、レプリケート・システムの各サブスクライバのステータスをレポートできます。

SQLRETURN GetRSXactStatus (HDBC hdbc)
{
  SQLRETURN rc = SQL_SUCCESS;
  HSTMT hstmt = SQL_NULL_HSTMT;
  char xactId [4001] = "";
  char subscriber [62] = "";
  char state [3] = "";

  /* get the last RS xact id executed on this connection */
  SQLAllocStmt (hdbc, &hstmt);
  SQLExecDirect (hstmt, "CALL ttRepXactTokenGet ('R2')", SQL_NTS);

  /* bind the xact id result as a null terminated hex string */
  SQLBindCol (hstmt, 1, SQL_C_CHAR, (SQLPOINTER) xactId,
    sizeof (xactId), NULL);

  /* fetch the first and only row */
  rc = SQLFetch (hstmt);

  /* close the cursor */
  SQLFreeStmt (hstmt, SQL_CLOSE);

  if (rc != SQL_ERROR && rc != SQL_NO_DATA_FOUND)
  {
    /* display the xact id */
    printf ("\nRS Xact ID: 0x%s\n\n", xactId);

    /* get the status of this xact id for every subscriber */
    SQLBindParameter (hstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR,
      SQL_VARBINARY, 0, 0,
     (SQLPOINTER) xactId, strlen (xactId), NULL);

    /* execute */
    SQLExecDirect (hstmt, "CALL ttRepXactStatus (?)", SQL_NTS);

   /* bind the result columns */
   SQLBindCol (hstmt, 1, SQL_C_CHAR, (SQLPOINTER) subscriber,
     sizeof (subscriber), NULL);

   SQLBindCol (hstmt, 2, SQL_C_CHAR, (SQLPOINTER) state,
     sizeof (state), NULL);

   /* fetch the first row */
   rc = SQLFetch (hstmt);

   while (rc != SQL_ERROR && rc != SQL_NO_DATA_FOUND)
   {
     /* report the status of this subscriber */
     printf ("\n\nSubscriber: %s", subscriber);
     printf ("\nState: %s", state);

     /* are there more rows to fetch? */
     rc = SQLFetch (hstmt);
     }
  }

  /* close the statement */
  SQLFreeStmt (hstmt, SQL_DROP);

  return rc;
}

レプリケーション・ログの未処理トランザクションの分析

ttXactLogユーティリティで-logAnalyzeコマンドを使用すると、レプリケーション・ログを分析し、次のことを確認できます。

  • 現時点でどれだけマスターからサブスクライバにレプリケートされずに残っているか。レプリケーションにかかっている時間が想定以上に長い場合は、レプリケートするトランザクションがどれだけ残っているか、またはレプリケーションが長時間実行トランザクションを実行しているかどうかを確認できます。

  • 現在の構成で、パラレル・レプリケーション用に手動トラックおよび自動トラック全体に適切に負荷を分散させられるか。

特定のデータ・ストアにログ分析コマンドを実行し、次の情報を生成します。

  • レプリケートされるのを待機しているトランザクションの数。レプリケートされていないトランザクションごとに収集された情報には、各トランザクションの操作の数、各トランザクションの合計サイズ(部分ロールバックを含む)が含まれます。

  • 特定のタイプ(DDLまたはDML)を含む各トランザクションに残されている操作の量、および各トランザクションの各文タイプの数。ツールでも、レプリケートされずに残っているすべての操作の合計サイズが生成されます。

  • ワークロードがどのようにトラック全体に分散されるかに関する情報を取得します。手動パラレル・レプリケーションを使用する場合は、-logAnalyzeを使用して、アプリケーションがレプリケーション・トラック全体に均等に作業を分散しているかどうかを監視できます。

  • レプリケートされずに残っている最も大きいトランザクションを返します。

  • 開始および終了のLSNを返します。開始LSNは、トランザクション・ログでトランスミッタが読取りを開始する箇所であり、終了LSNは、トランザクション・ログの末尾です。


ノート:

トランザクション・ログの分析出力では、トランザクションはコミット順に表示されます。

冗長コマンドで表示される情報の量を指定できます。たとえば、冗長を1に設定すると、次のように表示されます。

% ttXactLog -v1 -logAnalyze rep1
Summary:
Total transactions left to replicate: 4
Total rows left to replicate: 4
Size of transactions left to replicate: 1.86 KiB
Size of rows left to replicate: 488.00 B
Total inserts remaining: 4
Total partial rollbacks: 5
Total rollbacks: 3

Start LSN = 0.3793736
End LSN = 0.18769920 

サブスクライバを指定すると、そのサブスクライバのサマリーのみが表示されます。ただし、デフォルトではすべてのサブスクライバのサマリーが表示されます。

冗長を2に設定すると、全体のサマリー情報に加え、各パラレル・トラックのサマリーが表示されます。

% ttXactLog -v2 -logAnalyze rep1

Track analysis for track number: 0
Transactions left to replicate: 2
Rows left to replicate: 2
Size of transactions left to replicate: 880.00 B
Size of rows left to replicate: 312.00 B
Total inserts remaining: 1
Total partial rollbacks: 4

Track analysis for track number: 1
Transactions left to replicate: 2
Rows left to replicate: 2
Size of transactions left to replicate: 1.14 KiB
Size of rows left to replicate: 244.00 B
Total inserts remaining: 2
Total partial rollbacks: 1
Total rollbacks: 3

Summary:
Total transactions left to replicate: 4
Total rows left to replicate: 4
Size of transactions left to replicate: 2.00 KiB
Size of rows left to replicate: 556.00 B
Total inserts remaining: 3
Total partial rollbacks: 5
Total rollbacks: 3

Start LSN = 0.3793736
End LSN = 0.20506624

冗長レベル3を指定すると、生成される情報には、すべてのトラックにおけるすべてのトランザクションの内容に関する説明を含むトランザクション分析が含まれるようになります。

% ttXactLog -v3 -logAnalyze rep1

Transaction id:    3.10
Track for this xid: 1
Logmarker before this xid: 275
Rows left to replicate: 1
Transaction size: 800.00 B
Size of rows left: 122.00 B
Total inserts remaining: 1
 
Transaction id:    2.1
Track for this xid: 0
Logmarker before this xid: 276
Rows left to replicate: 1
Transaction size: 368.00 B
Size of rows left: 122.00 B
Total inserts remaining: 1
 
Transaction id:    2.19
Track for this xid: 1
Logmarker before this xid: 823
Rows left to replicate: 1
Transaction size: 368.00 B
Size of rows left: 122.00 B
Total inserts remaining: 1
 
Transaction id:    3.2
Track for this xid: 0
Logmarker before this xid: 842
Rows left to replicate: 1
Transaction size: 368.00 B
Size of rows left: 122.00 B
Total inserts remaining: 1
 
Track analysis for track number: 0
Transactions left to replicate: 2
Rows left to replicate: 2
Size of transactions left to replicate: 736.00 B
Size of rows left to replicate: 244.00 B
Total inserts remaining: 2
Total partial rollbacks: 4
 
Track analysis for track number: 1
Transactions left to replicate: 2
Rows left to replicate: 2
Size of transactions left to replicate: 1.14 KiB
Size of rows left to replicate: 244.00 B
Total inserts remaining: 2
Total partial rollbacks: 1
Total rollbacks: 3
 
Summary:
Total transactions left to replicate: 4
Total rows left to replicate: 4
Size of transactions left to replicate: 1.86 KiB
Size of rows left to replicate: 488.00 B
Total inserts remaining: 4
Total partial rollbacks: 5
Total rollbacks: 3
 
Start LSN = 0.3793736
End LSN = 0.21444608

XIDを指定すると、トランザクション分析がXIDに基づく冗長レベル3の出力が表示されます。2つの別々のトランザクションで1つのXIDが使用されると、レポートには、LogMarkerエントリとともに、各トランザクションの開始直前のトランザクション・ログ内で最も近い箇所が表示されます。

% ttXactLog -logAnalyze -xid 2.19 rep1;

Transaction id:    2.19
Track for this xid: 1
Logmarker before this xid: 823
Rows left to replicate: 1
Transaction size: 368.00 B
Size of rows left: 122.00 B
Total inserts remaining: 1
 
Track analysis for track number: 0
Transactions left to replicate: 0
Rows left to replicate: 0
Size of transactions left to replicate: 0.00 B
Size of rows left to replicate: 0.00 B
 
Track analysis for track number: 1
Transactions left to replicate: 1
Rows left to replicate: 1
Size of transactions left to replicate: 368.00 B
Size of rows left to replicate: 122.00 B
Total inserts remaining: 1
 
Summary:
Total transactions left to replicate: 1
Total rows left to replicate: 1
Size of transactions left to replicate: 368.00 B
Size of rows left to replicate: 122.00 B
Total inserts remaining: 1
 
Start LSN = 0.3793736
End LSN = 0.20514816 

ノート:

詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』のttXactLogに関する説明を参照してください。