ヘッダーをスキップ

Oracle TimesTen Replication - TimesTen to TimesTen開発者および管理者ガイド リリース6.0 B25769-01 |
| 目次 | 索引

前へ | 次へ |

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

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

- コマンドラインから、ttRepAdmin -stateを使用して、いずれかのサブスクライバ・データ・ストアのレプリケーション状態を再設定するようにマスター・データ・ストアに指示します。
- プログラムから、ttRepSubscriberStateSetプロシージャをコールして、いずれかまたはすべてのサブスクライバ・データ・ストアのレプリケーション状態を再設定するようにマスター・データ・ストアに指示します。

データ・ストアの状態を問い合せる方法については、「レプリケーションの監視」を参照してください。

マスター・データ・ストアは、サブスクライバ・データ・ストアをStart、PauseまたはStopのいずれかの状態に設定できます。データ・ストアの状態は、次の表に示すように、TTREP.REPPEERS表のSTATE列に整数値として示されます。

状態 | 説明
--- | ---
Start 状態値: 0 | レプリケーション更新が収集され、できるかぎり早くサブスクライバ・データ・ストアに送信されます。サブスクライバ・データ・ストアのレプリケーションが動作していない場合、更新は、送信可能になるまでログ・ファイルに保存されます。
Pause 状態値: 1 | レプリケーション更新は、送信を試行されずにログに保存されます。状態がStartに変更されると、送信が開始します。
Stop 状態値: 2 | レプリケーション更新は、サブスクライバ・データ・ストアに送信されずに破棄されます。サブスクライバ・データ・ストアをPause状態にすると、マスターのトランザクション・ログに保留されている更新がすべて破棄されます。
Failed 状態値: 4 | しきい値制限（ログ・データ）を超えているため、サブスクライバへのレプリケーションは失敗したとみなされます。この状態は、システムによって設定されます。システムが状態をPauseに設定する前の遷移状態です。 Failedデータ・ストアに接続するアプリケーションは警告を受信します。Failedデータ・ストアをアンロードしても、そのデータは失われ、アプリケーションは接続できません。詳細は、「一般的なフェイルオーバーおよびリカバリの手順」を参照してください。

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

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

##### 例4.8

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

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

注意: 異なるホストに同じ名前のサブスクライバが複数ある場合は、ttRepAdmin -hostパラメータでサブスクライバのホストを識別します。

##### 例4.9

レプリケーション・スキームがrepl.schemeであると想定した場合は、次のttRepSubscriberStateSetプロシージャで、サブスクライバ・データ・ストア（system1のsubscriberds）の状態をStopに設定するようにマスター・データ・ストアに指示します。

    rc = SQLAllocStmt( hdbc, &hstmt );
    rc = SQLExecDirect( hstmt, (SQLCHAR *)
        "CALL ttRepSubscriberStateSet('repscheme', 'repl',
         'subscriberds', 'system1', 2)", SQL_NTS );

##### 例4.10

次のttRepSubscriberStateSetプロシージャで、すべてのサブスクライバ・データ・ストアの状態をPauseに設定するようにマスター・データ・ストアに指示します。

    rc = SQLAllocStmt( hdbc, &hstmt );
    rc = SQLExecDirect( hstmt, (SQLCHAR *)
        "CALL ttRepSubscriberStateSet( , , , , 1 )", SQL_NTS );

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