ヘッダーをスキップ

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

前へ | 次へ |

## レプリケーション・スキームの定義

「高可用性システムの設計」の説明に従ってレプリケーション・スキームを設計した後、SQL文CREATE REPLICATIONを使用してそのスキームをデータ・ストアに適用できます。

注意: アクティブ・スタンバイ・ペアを作成するには、SQL文CREATE ACTIVE STANDBY PAIRを使用する必要があります。詳細は、「アクティブ・スタンバイ・ペア」を参照してください。
注意: アクセス制御を有効にしてTimesTenをインストールした場合、CREATE REPLICATION文を使用するには、データ・ストアに対するDDL権限が必要です。詳細は、『Oracle TimesTen In-Memory Databaseインストレーション・ガイド』のアクセス制御とroot以外のインストールに関する章を参照してください。

CREATE REPLICATION文の完全な構文については、『Oracle TimesTen In-Memory Database APIおよびSQLリファレンス・ガイド』のCREATE REPLICATIONに関する項を参照してください。例3.1に、単純なレプリケーション・スキームの構成およびこの項の内容に関連するパラメータを示します。

##### 例 3.1

#####

レプリケーション・スキームの広範な例は、「レプリケーション・スキームの例」を参照してください。

注意: CREATE REPLICATION文でのネーミング・エラーは、多くの場合、解決が困難であるため、要素名、データ・ストア名、ホスト名の綴りは時間をかけて十分に確認してください。

データ・ストアで使用されるレプリケーション・スキームは、TTREP表に示され、システムが再起動されるまで有効です。TTREP表の詳細は、『Oracle TimesTen In-Memory Database APIおよびSQLリファレンス・ガイド』のシステムおよびレプリケーション表に関する章を参照してください。

注意: TTREP表の内容は直接変更できません。変更は、SQL文CREATE REPLICATIONまたはALTER REPLICATIONによってのみ行うことができます。

## レプリケーション・スキームおよび表の所有者

レプリケーション・スキームとレプリケーション表の所有者および名前は、マスターおよびサブスクライバの両方のデータ・ストアで同じである必要があります。すべてのデータ・ストアの所有者を共通にするには、CREATE REPLICATION文にレプリケーション・スキーム名とともに所有者名を明示的に指定します。

たとえば、repschemeという名前のレプリケーション・スキームにreplという名前の所有者を割り当てる場合、CREATE REPLICATION文の先頭行は次のようになります。

    CREATE REPLICATION repl.repscheme

    レプリケーション・スキームおよびレプリケート表の名前から所有者を省略した場合、デフォルトの所有者名（リクエスト・ユーザーのログイン名またはDSNのUID属性で設定されている名前）がかわりに使用されます。所有者名がデータ・ストア間で異なっている場合、レプリケーション・スキームは機能しません。

## レプリケーション要素の定義

レプリケーション・スキームは、1つ以上のELEMENT記述で構成されます。ELEMENT記述には、要素の名前、そのタイプ（DATASTOREまたはTABLE）、更新が行われるマスター・データ・ストア、更新がレプリケートされるサブスクライバ・データ・ストアが含まれます。

後でALTER REPLICATION文を使用して要素またはそのパラメータの削除または変更を行う場合は、スキーム内の各要素の名前を使用して要素を識別できます。要素名は、レプリケーション・スキーム内で一意である必要があります。

禁止事項

- 特定のオブジェクト（表またはデータ・ストア）を複数の要素記述に含めること
- マスターおよびプロパゲータの両方のロールに同じ要素を定義すること

複数のサブスクライバ・スキームに要素を定義する正しい方法については、「複数サブスクライバ・スキーム」を参照してください。要素を伝播する正しい方法については、「伝播スキーム」を参照してください。

ALTER REPLICATION文を使用すると、既存のレプリケーション・スキームに表、キャッシュ・グループおよびデータ・ストアを追加できます（「レプリケーション・スキームの変更」を参照）。また、既存のレプリケーション・スキームのデータ・ストアから表を削除することもできます（「レプリケーション・スキームからの表の削除」を参照）。

この項の後半では、次の内容について説明します。

- データ・ストア要素の定義
- 表要素の定義

### データ・ストア要素の定義

マスター・データ・ストア（masterds）のすべての内容（すべての表）をサブスクライバ・データ・ストア（subscriberds）にレプリケートする場合、ELEMENT記述（dsl）は次のようになります。

    ELEMENT ds1 DATASTORE
          MASTER masterds ON "system1"
          SUBSCRIBER subscriberds ON "system2"

    CREATE REPLICATION文のEXCLUDE TABLEおよびEXCLUDE CACHE GROUP句を使用すると、データ・ストア要素からの特定の表およびキャッシュ・グループの除外を選択できます。EXCLUDE句を使用すると、EXCLUDE句に指定されたオブジェクトを除くデータ・ストア全体がレプリケートされます。オブジェクトの種類（表またはキャッシュ・グループ）ごとに1つのみのEXCLUDE句を使用します。次に例を示します。

    ELEMENT ds1 DATASTORE
         MASTER masterds ON "system1"
         SUBSCRIBER subscriberds ON "system2"
         EXCLUDE TABLE tab1, tab2
         EXCLUDE CACHE GROUP cg3

    CREATE REPLICATION文のINCLUDE TABLEおよびINCLUDE CACHE GROUP句を使用すると、データ・ストア要素への特定の表およびキャッシュ・グループのみの挿入を選択できます。INCLUDE句を使用すると、INCLUDE句に指定されたオブジェクトのみがレプリケートされます。オブジェクトの種類（表またはキャッシュ・グループ）ごとに1つのみのINCLUDE句を使用します。次に例を示します。

    ELEMENT ds1 DATASTORE
         MASTER masterds ON "system1"
         SUBSCRIBER subscriberds ON "system2"
         INCLUDE TABLE tab3
         INCLUDE CACHE GROUP cg1, cg2

### 表要素の定義

表repl.tab1およびrepl.tab2を（masterdsという名前でホストsystem1に配置されている）マスター・データ・ストアから（subscriberdsという名前でホストsystem2に配置されている）サブスクライバ・データ・ストアにレプリケートする場合、ELEMENT記述（aおよびb）は次のようになります。

    ELEMENT a TABLE repl.tab1
          MASTER masterds ON "system1"
          SUBSCRIBER subscriberds ON "system2"
    ELEMENT b TABLE repl.tab2
          MASTER masterds ON "system1"
          SUBSCRIBER subscriberds ON "system2"

注意: レプリケーション・スキームに指定された各データ・ストアの名前は、データ・ストアに関するDSN定義内のData Store Path and Name属性に指定されたファイル名（パスなし）の接頭辞と一致する必要があります。Data Source Name属性に指定された名前を使用するレプリケーション・スキームは機能しません。混乱を避けるには、各DSN定義内のData Store Path and Name属性とData Source Name属性に同じ名前を使用します。たとえば、データ・ストア・パスがディレクトリ/サブディレクトリ/foo.ds0の場合は、CREATE REPLICATION文にfooというデータ・ストア名を使用する必要があります。

データ・ストア・ホストは、そのIPアドレスまたはそのホスト名で識別できます。IPアドレスにホスト名を割当てる方法の詳細は、「ホストIPアドレスの設定」を参照してください。

注意: 特殊文字が含まれているホスト名は、二重引用符（"）で囲む必要があります。

## 表要素の追加パラメータの設定

表の要素記述には、追加のパラメータを含めることができます。次の項では、それらのパラメータについて説明します。

- 表要素に対するレプリケーション競合の確認
- 送信永続性の設定
- RETURNサービス属性の設定

### 表要素に対するレプリケーション競合の確認

データ・ストアが双方向レプリケーションに設定されている場合、複数のデータ・ストアの同一表行が個別に同時に更新されると、レプリケーション競合が発生する可能性があります。

このような競合は、レプリケート表にタイムスタンプを含め、表のELEMENT記述にオプションのCHECK CONFLICTS句を指定してレプリケーション・スキームを設定することによって、表単位で検出および解消できます。

注意: CHECK CONFLICT句はDATASTORE要素には指定できません。

レプリケーション競合およびCREATE REPLICATION文へのCHECK CONFLICTS句の設定方法の詳細は、「レプリケーション競合の検出および解消」を参照してください。

### 送信永続性の設定

デフォルトでは、マスター・データ・ストアのログ・バッファ内のトランザクション・レコードは、サブスクライバに転送される前にディスクにフラッシュされます（「レプリケーションの動作」を参照）。マスター・データ・ストア全体をレプリケートする（ELEMENTのタイプがDATASTOREである）場合、マスターのログをディスクにフラッシュする処理をレプリケーション・サイクルから除くことによって、レプリケーション・パフォーマンスを向上できます。これを実現するには、ELEMENT記述にTRANSMIT NONDURABLEオプションを含めます。

注意: RETURN TWOSAFEサービスを使用している場合、レプリケーションはTRANSMIT NONDURABLEになります。TRANSMIT DURABLEを設定しても、RETURN TWOSAFEトランザクションに影響はありません。

##### 例3.2

マスター・データ・ストア（masterds）のすべての内容をサブスクライバ・データ・ストア（subscriberds）にレプリケートする場合およびログをディスクにフラッシュする処理を除く場合、ELEMENT記述（a）は次のようになります。

    ELEMENT a DATASTORE
           MASTER masterds ON "system1"
           TRANSMIT NONDURABLE
           SUBSCRIBER subscriberds ON "system2"

    TRANSMIT NONDURABLEが設定されている場合にマスター・データ・ストアで障害が発生すると、そのログ・ファイルからマスターをリカバリすることはできません。この場合は、「NONDURABLEデータ・ストアのリカバリ」の手順に従ってください。

注意: TRANSMITの設定に関係なく、サブスクライバではログをディスクにフラッシュする処理が実行されます。詳細は、「レプリケーションの動作」を参照してください。

### RETURNサービス属性の設定

RETURN RECEIPTまたはRETURN TWOSAFEサービスを使用すると、レプリケートしたデータがマスターおよびサブスクライバの両方のデータ・ストアで一貫していることをより高いレベルの信頼性を持って保証できます（「レプリケーション・エージェントによって更新をデータ・ストア間でコピーする方法」を参照）。

CREATE REPLICATIONまたはALTER REPLICATION文で定義されるいずれのサブスクライバに対してもRETURNサービス属性を個別に指定できます。また、要素で定義されるすべてのサブスクライバに、同じRETURNサービス属性を指定することもできます。例3.3に、SubDataStore1とSubDataStore2に異なるRETURNサービス属性を個別に定義するSUBSCRIBER句を示します。例3.4に、1つのSUBSCRIBER句を使用して、SubDataStore1とSubDataStore2の両方に同じRETURNサービス属性を定義する例を示します。

##### 例3.3

    CREATE REPLICATION Owner.SchemeName
     ELEMENT ElementName ElementType
      MASTER DataStoreName ON "HostName"
      SUBSCRIBER SubDataStore1 ON "HostName" ReturnServiceAttribute1
      SUBSCRIBER SubDataStore2 ON "HostName" ReturnServiceAttribute2;

##### 例3.4

    CREATE REPLICATION Owner.SchemeName
       ELEMENT ElementName ElementType
          MASTER DataStoreName ON "HostName"
          SUBSCRIBER SubDataStore1 ON "HostName",
                     SubDataStore2 ON "HostName"
                     ReturnServiceAttribute;

    レプリケーション・スキームの各SUBSCRIBERに、次のRETURNサービス属性を定義できます。これらの属性のそれぞれの使用方法については、「RETURNサービスの使用」を参照してください。

    RETURNサービス属性

     説明

    RETURN RECEIPT

    このサブスクライバに対して行われたすべてのトランザクション更新に対してRETURN RECEIPTサービスを有効にします。詳細は、「RETURN RECEIPT」を参照してください。

    RETURN RECEIPT BY REQUEST

    このサブスクライバに対して行われた特定のトランザクション更新に対してRETURN RECEIPTサービスを有効にします。詳細は、「RETURN RECEIPT BY REQUEST」を参照してください。

    RETURN TWOSAFE

    このサブスクライバに対して行われたすべてのトランザクション更新に対してRETURN TWOSAFEサービスを有効にします。詳細は、「RETURN TWOSAFE」を参照してください。

    RETURN TWOSAFE BY REQUEST

    このサブスクライバに対して行われた特定のトランザクション更新に対してRETURN TWOSAFEサービスを有効にします。詳細は、「RETURN TWOSAFE BY REQUEST」を参照してください。

    NO RETURN

    このサブスクライバのRETURNサービス（有効になっているサービスに応じてRETURN RECEIPTまたはRETURN TWOSAFEのいずれか）を無効にします（デフォルト）。詳細は、「NO RETURN」を参照してください。

## STORE属性の設定

CREATE REPLICATIONまたはALTER REPLICATION文でSTOREパラメータを使用して、1つ以上のデータ・ストアに次に示すオプションの属性を設定できます。最初の3つの属性は、データ・ストアにRETURNサービス障害/リカバリ・ポリシーを設定するために使用されます。これらの属性については、「RETURNサービス・タイムアウト・エラーおよびレプリケーションの状態変化の管理」を参照してください。

STORE属性 | 説明
--- | ---
RETURN SERVICES { ON | OFF } WHEN REPLICATION STOPPED | レプリケーションが停止された場合は、「RETURNサービス障害/リカバリ・ポリシーの設定」の説明に従って、RETURNサービスを続行または無効にします。
DISABLE RETURN | 「RETURNサービス障害/リカバリ・ポリシーの設定」の説明に従って、RETURNサービス障害ポリシーを設定します。
RESUME RETURN | RETURNサービス・ブロッキングがDISABLE RETURNによって無効になっている場合、この属性は、RETURNサービスを再度有効にするタイミングに関するポリシーを設定します。
DURABLE COMMIT | DISABLE RETURNによってRETURNサービス・ブロッキングが無効になった場合、データ・ストアのDurableCommits設定を上書きし、永続コミットを有効にします。
COMPRESS TRAFFIC | レプリケートの通信量を圧縮して、ネットワーク帯域幅の使用量を減らします。詳細は、「レプリケートの通信量の圧縮」を参照してください。
PORT | マスターからの更新をリスニングするためにサブスクライバ・データ・ストアで使用されるポート番号を設定します。PORT属性を設定しない場合、TimesTenデーモンが動的にポートを選択します。TimesTenでは、静的ポート割当ても行うことができますが、動的ポート割当てを行うことをお薦めします。 静的ポート割当ての詳細は、「動的ポート割当ておよび静的ポート割当て」を参照してください。
TIMEOUT | 応答のないサブスクライバにメッセージを再送する前にデータ・ストアが待機する最大時間（秒）を設定します。
RETURN WAIT TIME | RETURNサービスの応答を待機する時間（秒）を指定します。デフォルト値は10秒です。 アプリケーションでは、ttRepSyncSetプロシージャ内のreturnWaitパラメータをコールすることによって、このタイムアウト設定を上書きできます。 詳細は、「RETURNサービス・タイムアウト時間の設定」を参照してください。
LOCAL COMMIT ACTION | タイムアウト発生時にRETURNサービス・トランザクションで実行されるデフォルトのアクションを指定します。オプションは次のとおりです。 NO ACTION: タイムアウト発生時、コミット関数はアプリケーションに返され、トランザクションはコミット・コールに入ったときと同じ状態のままになります。ただし、アプリケーションがレプリケート対象の表を更新できない場合を除きます。アプリケーションはコミットを再発行できます。 COMMIT: タイムアウト発生時に、コミット関数がCOMMITをログ・レコードに書き込み、トランザクションをローカルで効率よく終了します。同じトランザクション上でこれ以上の処理を行うことはできません。 ttRepSyncSetプロシージャでlocalActionパラメータをコールすることによって、特定のトランザクションに対してこのデフォルト設定を無効にすることができます。
FAILTHRESHOLD | 「ログ障害しきい値の設定」の説明に従って、ログのしきい値を設定します。
RELEASE | 注意: TimesTen 5.0以降のリリースでRELEASE属性を指定するには、静的レプリケーション・ポートを使用していないかぎり、TimesTenのインストール時にデフォルトのTimesTenデーモン・ポート番号を使用するように設定しておく必要があります。 データ・ストアに対して使用するTimesTenリリース番号を指定します。ホストでリリースの異なるTimesTenデーモンを実行している場合、サブスクライバ・データ・ストアが含まれているホストの正しいTimesTenデーモンを検出して問い合せるためにマスター・データ・ストアで使用されるリリース番号を指定する必要があります。サブスクライバに動的に割り当てるポートはTimesTenデーモンで決定する必要があり、ポートを割り当てる方法がTimesTenのリリース間で異なる場合があるため、この指定が必要となります。

FAILTHRESHOLDおよびTIMEOUT属性は、特定のレプリケーション・スキーム定義に対して固有に設定できます。つまり、これらの属性は、レプリケート・データ・ストアに異なるレプリケーション・スキーム定義を適用している場合、異なって設定できます。これは、他の属性には適用されません。他の属性は、すべてのレプリケーション・スキーム定義で同じである必要があります。たとえば、1つのスキームにPORTまたはRELEASE属性を設定すると、すべてのスキームにその設定が適用されます。

STORE句を使用してFAILTHRESHOLD属性を設定するレプリケーション・スキームの例は、例3.19を参照してください。DISABLE RETURN属性を設定するレプリケーション・スキームの例は、例3.13および例3.14を参照してください。

注意: CREATE REPLICATIONを使用して、同じデータ・ストアに対してPORTまたはRELEASE属性が異なる様々なスキームを作成すると、前回のCREATE REPLICATION文の設定は無視されます。この場合は、ALTER REPLICATIONを使用して、PORTまたはRELEASE設定を変更する必要があります。

### レプリケートの通信量の圧縮

低帯域幅のネットワークを介してレプリケーションを行う場合、または大量のデータのレプリケーションを行う場合は、レプリケーションに必要な帯域幅の量を減らすCOMPRESS TRAFFIC属性を設定できます。このCOMPRESS TRAFFIC属性を使用すると、CREATE REPLICATIONまたはALTER REPLICATION文のSTOREパラメータによって指定されたデータ・ストアからレプリケートされたデータが圧縮されます。他のデータ・ストアからのレプリケートの通信量は圧縮されません。

注意: 圧縮アルゴリズムは速度に関しては最適化されますが、COMPRESS TRAFFIC属性を有効にすると、レプリケーションのスループットおよび待機時間になんらかの影響があります。

たとえば、データ・ストアdsn1からのレプリケートの通信量は圧縮し、dsn2からのレプリケートの通信量は圧縮しない場合、CREATE REPLICATION文は次のようになります。

    CREATE REPLICATION repl.repscheme
    ELEMENT d1 DATASTORE
            MASTER dsn1 ON machine1
            SUBSCRIBER dsn2 ON machine2
    ELEMENT d2 DATASTORE
            MASTER dsn2 ON machine2
            SUBSCRIBER dsn1 ON machine1
    STORE dsn1 ON machine1 COMPRESS TRAFFIC ON;

    dsn1 とdsn2のデータ・ストア間でのレプリケートの通信量を圧縮するには、次のように入力します。

    CREATE REPLICATION repl.scheme
    ELEMENT d1 DATASTORE
            MASTER dsn1 ON machine1
            SUBSCRIBER dsn2 ON machine2
    ELEMENT d2 DATASTORE
            MASTER dsn2 ON machine2
            SUBSCRIBER dsn1 ON machine1
    STORE dsn1 ON machine1 COMPRESS TRAFFIC ON
    STORE dsn2 ON machine2 COMPRESS TRAFFIC ON;

### 動的ポート割当ておよび静的ポート割当て

PORT属性を割り当てない場合、TimesTenデーモンが動的にポートを選択します（「STORE属性の設定」を参照）。ポートがこの方法でレプリケーション・エージェントに動的に割り当てられる場合は、TimesTenデーモンのポートも一致させる必要があります。

ポートを静的に割り当てる場合は、CREATE REPLICATION文のSTORE属性に完全なホスト名、DSNおよびPORTを指定する必要があります。

例:

    CREATE REPLICATION repl.repscheme
    ELEMENT el1 TABLE repl.tab
            MASTER dsn1 ON machine1
            SUBSCRIBER dsn2 ON machine2
    ELEMENT el2 TABLE repl.tab
            MASTER dsn2 ON machine2
            SUBSCRIBER dsn1 ON machine1
    STORE dsn1 ON machine1 PORT 16080
    STORE dsn2 ON machine2 PORT 16083;

    TimesTenデーモンおよびレプリケーション・エージェントの役割の概要は、『Oracle TimesTen In-Memory Databaseアーキテクチャ概要』のTimesTenプロセスに関する項を参照してください。