レプリケーションの状態を確認する

ttReplicationStatus組込みプロシージャを使用して、マスターに対するサブスクライバ・データベースの状態を確認できます。サブスクライバの状態が、StopPauseまたはFailedの場合、『Oracle TimesTen In-Memory Databaseレプリケーション・ガイド』「サブスクライバのレプリケーション状態の設定」の説明に従い、ttReplicationStatusプロシージャを使用してサブスクライバの状態をStartにリセットします。

この例では、ttReplicationStatusを使用して、subscriberdsデータベースのステータスをそのマスター・データベースmasterDSNから取得します。次のように入力します。

> ttIsql masterDSN
Command> CALL ttReplicationStatus ('subscriberds');
< SUBSCRIBERDS, MYHOST, 0, pause, 1, 10, REPSCHEME, REPL >
1 row found.

状態をStartにリセットするには、次のようにttRepSubscriberStateSetプロシージャをコールします。

Command> CALL ttRepSubscriberStateSet('REPSCHEME', 'REPL', 'SUBSCRIBERDS', 'MYHOST', 0)
Command> CALL ttReplicationStatus ('subscriberds');
< SUBSCRIBERDS, MYHOST, 0, start, 1, 152959, REPSCHEME, REPL >
1 row found.

レプリケーション・スキームの構成を確認する

この項では、レプリケートされたシステムで様々なコンポーネントが正しく構成されていることを確認する手順について説明します。

ttRepAdmin -showconfigの確認

ttRepAdmin -showconfigを使用して、レプリケーション・スキームの構成を確認します。

次の項目を確認します。

  • サブスクライバのエージェントがすべて起動され、Start状態であることが報告されているかどうか。起動されていない場合は、そのエージェントをStart状態にリセットします。『Oracle TimesTen In-Memory Databaseレプリケーション・ガイド』「サブスクライバのレプリケーション状態の設定」を参照してください。

  • 返されたPeer nameが、レプリケートするデータベースのDSN定義のDataStore属性で指定された名前と一致しているかどうか。データソースName属性に設定されている名前を指定した場合、レプリケーションは動作しません。

  • 「List of subscribers」の下に何か表示されているかどうか。表示されていない場合は、DSN定義で指定したデータベース名が、レプリケーション・スキーム構成ファイルで指定した名前と一致することを確認します。

  • Host nameが正しいかどうか。不明確な場合、詳細は「ホスト名の確認」を参照してください。

  • 「Table details」の下に表示されている表の名前が正しいかどうか。正しくない場合は、レプリケーション・スキーム構成ファイルで表名を修正します。

この例では、レプリケーション・スキームの構成を確認します。

> ttRepAdmin -showconfig masterDSN
Self host "MYHOST", port auto, name "MASTERDS", LSN 4/2970276, timeout 120, threshold 0
List of subscribers
-----------------
Peer name         Host name                 Port    State  Proto
----------------  ------------------------ ------  ------- -----
SUBSCRIBERDS      MYHOST                    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 : REPL.TAB
Master Name               Subscriber Name
-----------               -------------
MASTERDS                  SUBSCRIBERDS

TTREP.TTSTORESシステム表の確認

TTREP.TTSTORES表で、レプリケーションによってレプリケーション・スキームがローカル・データベースに関連付けられていることを確認します。

データベースに接続し、次のように入力します。

SELECT * FROM ttrep.ttstores WHERE is_local_store <> 0x0;
< -5193371075573733683, MYHOST, MASTERDS, 01, 0, 0, 4, 0 >
1 row found.

1行の結果が返されます。2行以上返される場合は、TimesTenカスタマ・サポートに連絡してください。1行も返されない場合は、次の文によって返されるホストは、TimesTenレプリケーションではローカル・システムとみなされません。

SELECT DISTINCT host_name FROM ttrep.ttstores;

また、レプリケーション・スキームで指定されたデータベース名が、DSNの記述で指定されたデータベース名と一致しない場合もあります。

ホスト名の確認

レプリケーション・スキームで指定されたホストとIPアドレスがレプリケーション・エージェントで解決できない場合、次のような原因が考えられます。

  • レプリケーション・スキームに間違ったホスト名またはIPアドレスが指定されているか、あるいはそれらの綴りが間違っている。

  • ホスト名またはIPアドレスが解決できない、あるいはDNSまたは/etc/hostsファイルに見つからない。

  • /etc/hostsファイルのエントリの記述順序が正しくない。このエラーは、複数のNICを使用している場合によく発生します。/etc/hostsファイルを変更するには、root権限が必要です。

レプリケーションに使用されるホスト・システムのDNSおよび/etc/hosts ファイルの構成方法の詳細は、『Oracle TimesTen In-Memory Databaseレプリケーション・ガイド』「ネットワークの構成」を参照してください。

レプリケーション・スキームのホスト名とローカル・システムのホスト名が一致していることを確認するには、次のタスクを実行するようにアプリケーションを作成します。

  1. gethostname オペレーティング・システム・ファンクション・コールを使用して、実行中のホストのホスト名を確認します。
  2. ステップ1の出力を使用して、gethostbynameをコールします。
  3. レプリケーション・スキームで指定されているホスト名を使用して、gethostbynameをコールします。
  4. ステップ2とステップ3の出力を比較します。一致している場合、実行中のホストはレプリケーションに含まれています。一致していない場合は、レプリケーションに含まれていません。