CREATE REPLICATION

この文は、TimesTen Scaleoutではサポートされていません。

TimesTen Classicの場合:

CREATE REPLICATION文は、次の処理を実行します。

  • 関連するデータベースにクラシック・レプリケーション・スキームを定義します。

  • 実行するデータベースのレプリケーション・システム表に、指定した構成を組み込みます。

  • 通常は、1つ以上のレプリケーション要素の指定、および0(ゼロ)以上のSTOREの指定が含まれています。

TimesTen SQLによるレプリケーションの構成では、クラシック・レプリケーションをプログラム的な方法で構成できます。この構成は、C、C++またはJavaコードに埋め込むことができます。レプリケーションをローカルで構成したり、クライアント/サーバーを使用してリモート・システムから構成できます。

また、サポートされているSQL文ではカバーされていない処理に対応する場合は、ttRepAdminユーティリティを使用する必要があります。ttRepAdminを使用すると、レプリケーションの状態の変更、データベースの複製、レプリケーション構成の一覧表示およびレプリケーション状態の表示を実行できます。

必要な権限

ADMIN

TimesTen Scaleoutでの使用

この文は、TimesTen Scaleoutではサポートされていません。

定義

レプリケーション要素は、TimesTenがデータベース間で同期を取るエンティティです。レプリケーション要素は、表全体またはデータベースです。データベースには、ほとんどのタイプの表および順序を含めることができます。指定した表および順序のみを含めるか、または指定した表および順序を除くすべての表を含めることができます。一時表またはビュー(マテリアライズドか非マテリアライズドかは関係ありません)を含めることはできません。

レプリケーション・スキームは、レプリケーション要素および要素のコピーを管理するデータベースのセットです。

クラシック・レプリケーションのSQL構成の詳細は、『Oracle TimesTen In-Memory Databaseレプリケーション・ガイド』「クラシック・レプリケーション・スキームの定義」を参照してください。

SQL構文

CREATE REPLICATION [Owner.]ReplicationSchemeName
{ ELEMENT ElementName
  { DATASTORE | { TABLE [Owner.]TableName [CheckConflicts]} | 
       SEQUENCE [Owner.]SequenceName}
     { MASTER | PROPAGATOR } FullStoreName
     [TRANSMIT { NONDURABLE | DURABLE }]
     { SUBSCRIBER FullStoreName [,...]
        [ReturnServiceAttribute] } [,...] }
     [...]
     [{INCLUDE | EXCLUDE}
          {TABLE [[Owner.]TableName[,...]] |
           SEQUENCE [[Owner.]SequenceName[,...]} [,...]] 
[ STORE FullStoreName [StoreAttribute [... ]]] [...]
[ NetworkOperation[...]]

CheckConflicts構文の詳細は、「CHECK CONFLICTS」を参照してください。

ReturnServiceAttributeの構文:

{ RETURN RECEIPT [BY REQUEST] |
  RETURN TWOSAFE [BY REQUEST] |
  NO RETURN }

StoreAttributeの構文:

  DISABLE RETURN {SUBSCRIBER | ALL} NumFailures 
  RETURN SERVICES {ON | OFF} WHEN [REPLICATION] STOPPED 
  DURABLE COMMIT {ON | OFF}
  RESUME RETURN Milliseconds 
  LOCAL COMMIT ACTION {NO ACTION | COMMIT} 
  RETURN WAIT TIME Seconds 
  COMPRESS TRAFFIC {ON | OFF}
  PORT PortNumber 
  TIMEOUT Seconds 
  FAILTHRESHOLD Value 
  CONFLICT REPORTING SUSPEND AT Value 
  CONFLICT REPORTING RESUME AT Value 
  TABLE DEFINITION CHECKING {RELAXED|EXACT}

NetworkOperationの構文:

ROUTE MASTER FullStoreName SUBSCRIBER FullStoreName
  { { MASTERIP MasterHost | SUBSCRIBERIP SubscriberHost }
      PRIORITY Priority } [...]

パラメータ

パラメータ 説明

[Owner.]ReplicationSchemeName

新しいクラシック・レプリケーション・スキームに割り当てる名前です。クラシック・レプリケーション・スキームは、他のすべてのデータベース・オブジェクトとは別の一意の名前である必要があります。

CheckConflicts

双方向にレプリケートされたデータベースへの同時書込みで、レプリケーションの競合をチェックします。CheckConflictsの詳細は、「CHECK CONFLICTS」を参照してください。

COMPRESS TRAFFIC {ON | OFF}

レプリケートされた通信量を圧縮して、ネットワークの帯域幅の量を削減します。ONは、STOREで定義されたデータベースに対してレプリケートされた通信量をすべて圧縮するように指定します。OFF(デフォルト)は、通信量を圧縮しないように指定します。詳細は、『Oracle TimesTen In-Memory Databaseレプリケーション・ガイド』「レプリケートの通信量の圧縮」を参照してください。

CONFLICT REPORTING SUSPEND AT Value

競合解消のレポートを一時停止します。

Valueは、負ではない整数です。デフォルトは0(一時停止なし)です。競合のレポートは、競合の割合がValueを超えると一時的に停止されます。Valueを0に設定すると、競合のレポートの一時停止が無効になります。

この句は、表レベルのレプリケーションで有効です。

CONFLICT REPORTING RESUME AT Value

競合解消のレポートを再開します。

Valueは、負ではない整数です。競合のレポートは、競合の割合がValueを下回ると再開されます。デフォルトは1です。

この句は、表レベルのレプリケーションで有効です。

DATASTORE

データベース全体を要素として定義します。この種類の要素は、同一または異なるレプリケーション・スキームでTABLE型の要素が構成されていないマスター・データベースに対してのみ定義できます。

{INCLUDE|EXCLUDE}

{[TABLE[Owner.]TableName [,...]]|

SEQUENCE

[[Owner.]SequenceName[,...]]} [,...]

INCLUDEは、指定された表または順序のみをDATASTORE要素に含めます。INCLUDE句は、オブジェクト型(表または順序)ごとに1つ使用します。

EXCLUDEは、指定された表および順序を除外して、すべての表および順序をDATASTORE要素に含めます。EXCLUDE句は、オブジェクト型(表または順序)ごとに1つ使用します。

DISABLE RETURN {SUBSCRIBER|ALL} NumFailures

NumFailuresで指定されているタイムアウト回数を経過した後、RETURNサービスのブロッキングを無効にするようにRETURNサービス障害ポリシーを設定します。SUBSCRIBERを選択すると、レプリケートされた更新を、指定されているタイムアウト期間内に確認できなかったサブスクライバのみにこのポリシーが適用されます。ALLを選択すると、いずれかのサブスクライバから応答がなかった場合、すべてのサブスクライバにこのポリシーが適用されます。この障害ポリシーは、RETURN RECEIPTまたはRETURN TWOSAFEサービスのいずれかで指定できます。

DISABLE RETURNが指定され、RESUME RETURNが指定されていない場合、データベースのレプリケーション・エージェントが再起動されるまでRETURNサービスはオフのままです。

DURABLE COMMIT {ON|OFF}

DurableCommits一般接続属性設定を上書きします。DURABLE COMMIT ONは、レプリケーション・エージェントが実行中か停止しているかに関係なく、永続コミットを有効にします。

ELEMENT ElementName

TimesTenがデータベース間で同期を取るエンティティです。レプリケーション要素として、TimesTenでは、データベース全体(DATASTORE)および表全体(TABLE)がサポートされています。

ElementNameは、レプリケーション要素に指定される名前です。TABLE要素のElementNameの長さは、最大30文字です。DATASTORE要素のElementNameは、他のDATASTORE要素名について、最初の20文字以内が一意である必要があります。ElementNameは、クラシック・レプリケーション・スキーム内で一意である必要があります。また、同じ要素に対して2つの要素記述を定義することはできません。

詳細は、『Oracle TimesTen In-Memory Databaseレプリケーション・ガイド』「レプリケーション要素の定義」を参照してください。

FAILTHRESHOLD Value

サブスクライバ・データベースのために累積できるログ・ファイルの数。この値を超えると、サブスクライバはFailedの状態に設定されます。0を指定すると、この上限は設定されません。これがデフォルトです。

『Oracle TimesTen In-Memory Databaseレプリケーション・ガイド』「トランザクション・ログ障害しきい値の設定」を参照してください。

FullStoreName

次のいずれかとして指定されたデータベースです。

  • SELF

  • データベース・ファイル名の接頭辞

たとえば、データベースのパスがdirectory/subdirectory/data.ds0の場合、使用するデータベース名はdataになります。

この名前は、DSNの記述のDataStore属性で指定されるデータベース・ファイル名で、オプションでホストIDを次の書式で指定できます。

DataStoreName [ON Host]

Hostは、『Oracle TimesTen In-Memory Databaseレプリケーション・ガイド』「ネットワークの構成」で説明されているように、IPアドレスか、または1つ以上のIPアドレスに割り当てられたリテラル・ホスト名です。ホスト名に特殊文字が含まれている場合は、二重引用符で囲む必要があります。たとえば、"MyHost-500"のようになります。ホスト名は30文字以下で指定します。

LOCAL COMMIT ACTION {NO ACTION | COMMIT}

タイムアウト・イベントのRETURN TWOSAFEトランザクションで実行されるデフォルトのアクションを指定します。

ノート: この属性は、RETURN TWOSAFEまたはRETURN TWOSAFE BY REQUEST属性がSUBSCRIBER句で設定されている場合にのみ有効です。

NO ACTION: タイムアウト時、コミット関数はアプリケーションに戻り、トランザクションをコミット・コールに入ったときと同じ状態のままにしますが、レプリケートされた表をアプリケーションが更新できない場合を除きます。アプリケーションはコミットのみを再発行できます。トランザクションはロールバックできません。これがデフォルトです。

COMMIT: タイムアウト時、コミット関数はCOMMITを実行して、トランザクションをローカルに終了しようとします。同じトランザクション上でこれ以上の処理を行うことはできません。

この設定は、ttRepSyncSetプロシージャのlocalActionパラメータをコールすることで、特定のトランザクションに対して無効にすることができます。

MASTER FullStoreName

アプリケーションで特定の要素が更新されるデータベース。更新はMASTERデータベースによってSUBSCRIBERデータベースに送信されます。FullStoreNameは、DSNの記述のDataStore属性で指定したデータベースである必要があります。

NO RETURN

RETURNサービスを使用しないように指定します。これがデフォルトです。

RETURNサービスの使用の詳細は、『Oracle TimesTen In-Memory Databaseレプリケーション・ガイド』「RETURNサービスの使用」を参照してください。

PORT PortNumber

データベースのレプリケーション・エージェントが接続をリスニングするTCP/IPポート番号です。指定しない場合は、レプリケーション・エージェントによってポート番号が自動的に割り当てられます。

PROPAGATOR FullStoreName

レプリケートされた更新を受け取って他のデータベースに渡すデータベース。FullStoreNameは、DSNの記述のDataStore属性で指定したデータベースである必要があります。

RESUME RETURN Milliseconds

DISABLE RETURNによってRETURNサービスのブロッキングが無効になった場合、この属性によって、RETURNサービスのブロッキングを再度有効にするタイミングに関するポリシーを設定します。RETURNサービスのブロッキングは、障害が発生したサブスクライバが、Millisecondsで指定された時間よりも短い間隔でレプリケートされた更新を確認するとすぐに再度有効になります。

DISABLE RETURNが指定され、RESUME RETURNが指定されていない場合、データベースのレプリケーション・エージェントが再起動されるまでRETURNサービスはオフのままです。

RETURN RECEIPT [BY REQUEST]

RETURN RECEIPTサービスを有効にし、これによって、マスター・データベースに対してトランザクションをコミットするアプリケーションは、すべてのサブスクライバがトランザクションを受信するまでブロックされます。

RETURN RECEIPTにより、すべてのトランザクションにサービスが適用されます。RETURN REQUEST BY REQUESTを指定した場合は、ttRepSyncSetプロシージャを使用して、選択したトランザクションに対してRETURN RECEIPTサービスを有効にできます。RETURNサービスの使用の詳細は、『Oracle TimesTen In-Memory Databaseレプリケーション・ガイド』「RETURNサービスの使用」を参照してください。

RETURN SERVICES {ON|OFF} WHEN [REPLICATION] STOPPED

レプリケーションが無効になっている場合のRETURNサービスのオンまたはオフを設定します。

OFFは、レプリケーション無効時にRETURNサービスを無効する設定であり、RETURN RECEIPTサービスのデフォルトです。ONは、レプリケーション無効時にもRETURNサービスを有効のままにできる設定であり、RETURN TWOSAFEサービスのデフォルトです。

RETURN TWOSAFE [BY REQUEST]

RETURN TWOSAFEサービスを有効にし、これによって、マスター・データベースに対してトランザクションをコミットするアプリケーションは、すべてのサブスクライバがトランザクションをコミットするまでブロックされます。

ノート: このサービスは、要素がDATASTOREと定義される場合の双方向レプリケーション・スキームでのみ使用できます。

RETURN TWOSAFEを指定すると、すべてのトランザクションにサービスが適用されます。RETURN TWOSAFE BY REQUESTを指定した場合は、ttRepSyncSetプロシージャを使用して、選択したトランザクションに対してRETURN RECEIPTサービスを有効にできます。RETURNサービスの使用の詳細は、『Oracle TimesTen In-Memory Databaseレプリケーション・ガイド』「RETURNサービスの使用」を参照してください。

RETURN WAIT TIME Seconds

RETURNサービスの応答を待機する秒数を指定します。デフォルト値は10秒です。値が0(ゼロ)の場合は、タイムアウトがないことを意味します。returnWaitパラメータを設定してアプリケーションからttRepSyncSetプロシージャをコールすることで、このタイムアウト設定を無効にすることができます。

SEQUENCE [Owner.]SequenceName

[Owner.]SequenceNameによって要素として指定された順序を定義します。詳細は、『Oracle TimesTen In-Memory Databaseレプリケーション・ガイド』「レプリケーション要素の定義」を参照してください。

STORE FullStoreName

指定されたデータベースの属性を定義します。属性には、PORTTIMEOUTおよびFAILTHRESHOLDがあります。FullStoreNameは、DSNの記述のDataStore属性で指定したデータベースである必要があります。

SUBSCRIBER FullStoreName

MASTERデータベースから更新を受け取るデータベース。FullStoreNameは、DSNの記述のDataStore属性で指定したデータベースである必要があります。

TABLE [Owner.]TableName

[Owner.]TableNameによって要素として指定された表を定義します。詳細は、『Oracle TimesTen In-Memory Databaseレプリケーション・ガイド』「レプリケーション要素の定義」を参照してください。

TIMEOUT Seconds

レプリケーション・エージェントがリモート・レプリケーション・エージェントからの応答を待機する最大時間(秒)。デフォルトは120秒です。

ノート: リモート・レプリケーション・エージェントからの応答の遅延の原因となる大規模なトランザクションの場合、エージェントは、トランザクションのサイズに基づいて、タイムアウトをスケーリングします。TIMEOUTを60秒以下に設定した場合、このスケーリングは無効になります。『Oracle TimesTen In-Memory Databaseレプリケーション・ガイド』「リモート・レプリケーション・エージェントからの応答の待機タイムアウトの設定」も参照してください。

TRANSMIT {DURABLE | NONDURABLE}

コミットされたトランザクション群をサブスクライバに転送する前に、マスターのログをファイル・システムにフラッシュするかどうかを指定します。

TRANSMIT NONDURABLEは、マスターのログ内のレコードがサブスクライバに転送される前にファイル・システムにフラッシュされないように指定します。この設定は、指定された要素がDATASTOREである場合にのみ使用できます。この設定は、RETURN TWOSAFEトランザクションのデフォルト値です。

TRANSMIT DURABLEは、サブスクライバに転送される前にレコードがファイル・システムにフラッシュされるように指定します。この設定は、非同期およびRETURN RECEIPTトランザクションのデフォルト値です。

ノート: TRANSMIT DURABLEは、RETURN TWOSAFEトランザクションに影響を与えません。

ノート: アクティブ・スタンバイ・ペアに対してTRANSMIT DURABLEを設定することはできません。

詳細は、『Oracle TimesTen In-Memory Databaseレプリケーション・ガイド』「DATASTORE要素に対する送信永続性の設定」を参照してください。

TABLE DEFINITION CHECKING {EXACT|RELAXED}

サブスクライバで実行される表定義チェックの種類を指定します。

  • EXACT: マスターおよびサブスクライバで表が一致している必要があります。

  • RELAXED: 表には同じキー定義、列の数および列のデータ型が必要です。

デフォルトはRELAXEDです。

ノート: TABLE DEFINITION CHECKING EXACTを使用している場合、データベースを移行するにはttMigrate -exactUpgradeを使用します。TABLE DEFINITION CHECKING RELAXEDを使用している場合、データベースを移行するにはttMigrate -relaxedUpgradeを使用します。

ROUTE MASTER FullStoreName SUBSCRIBER FullStoreName

NetworkOperation句を表します。指定されている場合、各サブスクライバ・ストアへのすべてのアウトバウンド接続にマスター・ストアが使用するネットワーク・インタフェースを制御できます。

複数回指定できます。

FullStoreNameには、ON "host"を指定する必要があります。

MASTERIP MasterHost | SUBSCRIBERIP SubscriberHost

MasterHostおよびSubscriberHostは、マスターおよびサブスクライバ・ストアのネットワーク・インタフェースのIPアドレスです。IPV6のドット表記または正規形式で指定するか、あるいはコロン表記で指定します。

句は複数回指定できます。

PRIORITY Priority

1から99の整数で表される変数。IPアドレスの優先順位を示します。整数値が小さいほど、優先度は高くなります。同じ優先度を持つアドレスが複数指定されている場合は、エラーが返されます。ピア接続の確立に使用する複数のIPアドレスの順序を制御します。

NetworkOperation 句の構文で必須です。MASTERIP MasterHost | SUBSCRIBERIP SubscriberHost句の後ろに記述します。

CHECK CONFLICTS

構文

CHECK CONFLICTSの構文は、次のとおりです。

{NO CHECK |
CHECK CONFLICTS BY ROW TIMESTAMP
      COLUMN ColumnName
      [ UPDATE BY { SYSTEM | USER } ]
      [ ON EXCEPTION { ROLLBACK [ WORK ] | NO ACTION } ]
      [ {REPORT TO 'FileName'
             [ FORMAT { XML | STANDARD } ] | NO REPORT
      } ]
}

ノート:

CHECK CONFLICT句は、TABLE型の要素に対してのみ使用できます。

パラメータ

CREATE REPLICATIONまたはALTER REPLICATION文のCHECK CONFLICTS句には、次のパラメータがあります。

パラメータ 説明

CHECK CONFLICTS BY ROW TIMESTAMP

すべての更新競合と一意性競合の検出を指定します。競合はON EXCEPTIONパラメータで指定された方法で解消されます。

DELETE処理とUPDATE処理の競合についても検出します。

COLUMN ColumnName

レプリケートされた表の列を使用してタイムスタンプを比較します。表はELEMENTの説明でTableNameによって指定されます。

ColumnNameはNULL値可能なBINARY(8)型の列で、行が最後に更新されたタイムスタンプの格納に使用されます。TimesTenでは、格納された値よりも小さいタイムスタンプ値を持つ行の更新要求が拒否されます。指定されたColumnNameは、マスター・データベースとサブスクライバ・データベース両方のレプリケートされた表に存在している必要があります。

NO CHECK

指定された要素に対する競合解消を行わないように指定します。

UPDATE BY {SYSTEM | USER}

タイムスタンプ値をTimesTen(SYSTEM)またはアプリケーション(USER)のどちらで管理するかを指定します。マスター・データベースおよびサブスクライバ・データベースのレプリケートされた表は、同じUPDATE BY指定を使用する必要があります。詳細は、『Oracle TimesTen In-Memory Databaseレプリケーション・ガイド』「システム・タイムスタンプ列のメンテナンスの有効化」「ユーザー・タイムスタンプ列のメンテナンスの有効化」を参照してください。デフォルト値は、UPDATE BY SYSTEMです。

ON EXCEPTION {ROLLBACK[WORK |NO ACTION}

検出された競合の解消方法を指定します。ROW TIMESTAMP競合の検出には、次の解消オプションがあります。

  • ROLLBACK [WORK]: 競合するアクションを含むトランザクションを強制終了します。

  • NO ACTION: 競合するアクション(UPDATEINSERTまたはDELETE)を実行せずに、トランザクションを完了します。

デフォルトはON EXCEPTION ROLLBACK [WORK]です。

REPORT TO 'FileName'

タイムスタンプ比較に失敗した更新を記録するファイルを指定します。FileNameは、1,000文字以下のSQL文字列です。(SQL文字列リテラルは、空白を含む任意の順序の文字が含まれた一重引用符付き文字列です。)複数の表の失敗した更新を記録するために同じファイルを使用できます。

[FORMAT {XML|STANDARD}]

オプションで、要素の競合レポートの形式を指定します。デフォルトの形式はSTANDARDです。

NO REPORT

失敗したタイムスタンプの比較を記録しないように指定します。

説明

  • 同じホスト上のすべてのデータベース名は、各TimesTenインスタンスの各クラシック・レプリケーション・スキームについて一意である必要があります。

  • レプリケーション要素の更新(通常のアプリケーション・トランザクションによる)は、MASTERデータベースを使用してのみ可能です。PROPAGATORおよびSUBSCRIBERデータベースは読取り専用です。

  • 複数のデータベースで同じ表を更新できるクラシック・レプリケーション・スキームを定義する場合は、行を更新する際に競合を回避する方法の推奨事項について、『Oracle TimesTen In-Memory Databaseレプリケーション・ガイド』「レプリケーション競合の解消」を参照してください。

  • SELFは、関連するデータベースがすべてローカルであるクラシック・レプリケーション・スキーム用です。本番環境(スクリプトで各データベースのホスト名を省略しないで記述すると、関連する各データベースで使用できる)では、分散クラシック・レプリケーション・スキームに対してSELFを使用しないでください。

  • 指定したSTOREの各属性は一度だけ指定するか、または何も指定しません。

  • 単一のクラシック・レプリケーション・スキームのデータベースのPORTを指定すると、すべてのクラシック・レプリケーション・スキームに対して指定されます。その他すべての接続属性は、コマンドで指定したクラシック・レプリケーション・スキームによって異なります。

  • レプリケーション・スキームでは、DataStoreNameは、常にTimesTenデータベースのチェックポイント・ファイル名の接頭辞になります。チェックポイント処理によってファイル・システムに保存される、接尾辞.ds0.ds1のファイルがチェックポイント・ファイルです。

  • デフォルト値NOT INLINE VARCHARが指定されている行がレプリケートされる場合、受信者側のノードのデフォルト値が送信者側のノードのデフォルト値と異なる場合にのみ、受信者はデフォルト値を指すかわりに、各行に対してこの値のコピーを作成します。

  • レプリケートされた表でタイムスタンプ比較を使用するには、NULL値可能なBINARY(8)型の列を指定して、タイムスタンプ値を保持する必要があります。タイムスタンプ列は、表の作成時に定義します。ALTER TABLE文でタイムスタンプ列を追加することはできません。また、タイムスタンプ列を主キーまたは索引に含めることはできません。

  • XMLのレポート形式を指定した場合、2つのXMLドキュメントが生成されます。

    • FileName.xml: このファイルには、レポート用のDTDおよびレポートのルート・ノードが含まれます。このファイルには、ドキュメント定義とINCLUDEディレクティブが含まれます。

    • FileName.include: このファイルはFileName.xmlに含まれており、実際の競合がすべて含まれます。

    • FileName.includeファイルは切捨て可能です。FileName.xmlファイルは切り捨てないでください。

    • 各競合の例を含むXML書式の詳細は、『Oracle TimesTen In-Memory Databaseレプリケーション・ガイド』「XMLファイルへの競合のレポート」を参照してください。

  • 要素のレポート形式を指定した後でその要素を削除しても、対応するレポート・ファイルは削除されません。

  • 競合解消のレポートを一時停止する最高水位標のしきい値を指定するには、CONFLICT REPORTING SUSPEND AT句を使用します。

  • 競合解消のレポートを再開する最低水位標のしきい値を指定するには、CONFLICT REPORTING RESUME AT句を使用します。競合の割合が最低水位標のしきい値を下回ると、競合解消のレポートが再開されます。

  • レプリケーション・エージェントによって競合のレポートが一時停止されている状態または一時停止されていない状態は、ローカル・レプリケーション・エージェントとピア・エージェントが停止および再起動された後は維持されません。

  • キャッシュ・グループをレプリケートする場合にCREATE REPLICATION文を使用しないでください。アクティブ・スタンバイ・ペアのみがキャッシュ・グループをレプリケートできます。CREATE ACTIVE STANDBY PAIR文を参照してください。

repl.tabの内容をmasterdsから2つのサブスクライバsubscriber1dsおよびsubscriber2dsにレプリケートします。

CREATE REPLICATION repl.twosubscribers
       ELEMENT e TABLE repl.tab
         MASTER masterds ON "server1"
         SUBSCRIBER subscriber1ds ON "server2",
                    subscriber2ds ON "server3";

masterdsデータベース全体をサブスクライバsubscriber1dsにレプリケートします。FAILTHRESHOLDを指定すると、subscriber1dsが失敗したとみなされる前に、最大10のログ・ファイルをmasterdsに蓄積します。

CREATE REPLICATION repl.wholestore
  ELEMENT e DATASTORE
     MASTER masterds ON "server1"
     SUBSCRIBER subscriber1ds ON "server2"
  STORE masterds FAILTHRESHOLD 10;

westdsおよびeastdsデータベース全体を双方向にレプリケートして、RETURN TWOSAFEサービスを有効にします。

CREATE REPLICATION repl.biwholestore
  ELEMENT e1 DATASTORE
     MASTER westds ON "westcoast"
     SUBSCRIBER eastds ON "eastcoast"
        RETURN TWOSAFE
  ELEMENT e2 DATASTORE
     MASTER eastds ON "eastcoast"
     SUBSCRIBER westds ON "westcoast"
        RETURN TWOSAFE;

subscriber1dsサブスクライバへの選択トランザクション更新に対して、RETURN RECEIPTサービスを有効にします。

CREATE REPLICATION repl.twosubscribers
  ELEMENT e TABLE repl.tab
     MASTER masterds ON "server1"
     SUBSCRIBER subscriber1ds ON "server2"
        RETURN RECEIPT BY REQUEST
     SUBSCRIBER subscriber2ds ON "server3";

customerswest表の内容をwestデータベースから、customerseast表の内容をeastデータベースから、ROUNDUPデータベースにレプリケートします。すべてのトランザクションに対してRETURN RECEIPTサービスを有効にします。

CREATE REPLICATION r
       ELEMENT west TABLE customerswest
         MASTER west ON "serverwest"
         SUBSCRIBER roundup ON "serverroundup"
            RETURN RECEIPT
       ELEMENT east TABLE customerseast
         MASTER east ON "servereast"
         SUBSCRIBER roundup ON "serverroundup"
            RETURN RECEIPT;

repl.tab表の内容をcentraldsデータベースからpropdsデータベースにレプリケートし、これにより、backup1dsおよびbackup2dsデータベースに変更が伝播されます。

CREATE REPLICATION repl.propagator
       ELEMENT a TABLE repl.tab
         MASTER centralds ON "finance"
         SUBSCRIBER proprds ON "nethandler"
       ELEMENT b TABLE repl.tab
         PROPAGATOR proprds ON "nethandler"
         SUBSCRIBER backup1ds ON "backupsystem1"
                    bakcup2ds ON "backupsystem2";

eastdswestdsデータベースの間で、repl.accounts表の内容を双方向でレプリケートします。各データベースは、repl.accounts表に対してマスターおよびサブスクライバの両方になります。

repl.accounts表がeastdswestdsデータベースのいずれかで更新されるため、ここにはタイムスタンプ列(tstamp)が含まれます。CHECK CONFLICTS句により、2つのデータベース間で発生した更新競合を検出するための自動タイムスタンプ比較が開始されます。比較が失敗すると、古いタイムスタンプを持つ更新が含まれるトランザクションの全体がロールバック(破棄)されます。

CREATE REPLICATION repl.r1
ELEMENT elem_accounts_1 TABLE repl.accounts
   CHECK CONFLICTS BY ROW TIMESTAMP
      COLUMN tstamp
      UPDATE BY SYSTEM
      ON EXCEPTION ROLLBACK
   MASTER westds ON "westcoast"
   SUBSCRIBER eastds ON "eastcoast"
ELEMENT elem_accounts_2 TABLE repl.accounts
   CHECK CONFLICTS BY ROW TIMESTAMP
      COLUMN tstamp
      UPDATE BY SYSTEM
      ON EXCEPTION ROLLBACK
   MASTER eastds ON "eastcoast"
   SUBSCRIBER westds ON "westcoast";

RETURN TWOSAFEサービスを使用し、activedsでTCP/IPポート40000、backupdsでTCP/IPポート40001を使用して、repl.accounts表の内容をactivedsデータベースからbackupdsデータベースにレプリケートします。activedsでのトランザクションはできるかぎりコミットする必要があるため、レプリケーションを構成し、LOCAL COMMIT ACTIONを使用してレプリケーション・タイムアウトの後でもトランザクションがコミットされるようにし、レプリケーションの停止時はRETURN TWOSAFEサービスが無効になるようにします。backupdsデータベースへの接続が割り込まれた場合にアプリケーションでの大幅な遅延を回避するために、5個のトランザクションがタイムアウトした後にRETURNサービスが無効になるように構成しますが、さらにbackupdsデータベースのレプリケーション・エージェントが100ミリ秒未満で応答したときはRETURNサービスを再度有効にするように構成します。最後に、データベース間の帯域幅は制限されるため、activedsデータベースからレプリケートされるときにデータが圧縮されるようにレプリケーションを構成します。

CREATE REPLICATION repl.r
ELEMENT elem_accounts_1 TABLE repl.accounts
   MASTER activeds ON "active"
   SUBSCRIBER backupds ON "backup"
      RETURN TWOSAFE
ELEMENT elem_accounts_2 TABLE repl.accounts
   MASTER activeds ON "active"
   SUBSCRIBER backupds ON "backup"
      RETURN TWOSAFE
STORE activeds ON "active"
   PORT 40000
   LOCAL COMMIT ACTION COMMIT
   RETURN SERVICES OFF WHEN REPLICATION STOPPED
   DISABLE RETURN SUBSCRIBER 5
   RESUME RETURN 100
   COMPRESS TRAFFIC ON
STORE backupds ON "backup"
   PORT 40001;

表レベルのレプリケーションで競合のレポートを一時停止する句と競合のレポートを再開する句の例を示します。これらの句は、データベース・レプリケーションではなく、表レベルのレプリケーションに対して使用します。repschemesコマンドを発行して、レプリケーション・スキームが作成されていることを表示します。

Command> CREATE TABLE repl.accounts (tstamp BINARY (8) NOT NULL 
           PRIMARY KEY, tstamp1 BINARY (8));
Command> CREATE REPLICATION repl.r2
           ELEMENT elem_accounts_1 TABLE repl.accounts
           CHECK CONFLICTS BY ROW TIMESTAMP
           COLUMN tstamp1
           UPDATE BY SYSTEM
           ON EXCEPTION ROLLBACK WORK
           MASTER westds ON "west1"
           SUBSCRIBER eastds ON "east1"
  ELEMENT elem_accounts_2 TABLE repl.accounts
  CHECK CONFLICTS BY ROW TIMESTAMP 
  COLUMN tstamp1
  UPDATE BY SYSTEM 
  ON EXCEPTION ROLLBACK WORK 
  MASTER eastds ON "east1"
  SUBSCRIBER westds ON "west1"
  STORE westds
  CONFLICT REPORTING SUSPEND AT 20
  CONFLICT REPORTING RESUME AT 10;
Command> REPSCHEMES;

Replication Scheme REPL.R2:

  Element: ELEM_ACCOUNTS_1
  Type: Table REPL.ACCOUNTS
  Conflict Check Column: TSTAMP1
  Conflict Exception Action: Rollback Work
  Conflict Timestamp Update: System
  Conflict Report File: (none)
  Master Store: WESTDS on WEST1 Transmit Durable
  Subscriber Store: EASTDS on EAST1

  Element: ELEM_ACCOUNTS_2
  Type: Table REPL.ACCOUNTS
  Conflict Check Column: TSTAMP1
  Conflict Exception Action: Rollback Work
  Conflict Timestamp Update: System
  Conflict Report File: (none)
  Master Store: EASTDS on EAST1 Transmit Durable
  Subscriber Store: WESTDS on WEST1

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

  Store: WESTDS on WEST1
    Port: (auto)
    Log Fail Threshold: (none)
    Retry Timeout: 120 seconds
    Compress Traffic: Disabled
    Conflict Reporting Suspend: 20
    Conflict Reporting Resume: 10

1 replication scheme found.

2つのMASTERIP句とSUBSCRIBERIP句を使用したNetworkOperation句の例を示します。

CREATE REPLICATION r ELEMENT e DATASTORE
MASTER rep1 SUBSCRIBER rep2 RETURN RECEIPT
MASTERIP "1.1.1.1" PRIORITY 1 SUBSCRIBERIP "2.2.2.2"
    PRIORITY 1
MASTERIP "3.3.3.3" PRIORITY 2 SUBSCRIBERIP "4.4.4.4"
    PRIORITY 2;

NetworkOperation句の例。送信側にはデフォルトのインタフェースを使用しますが、受信側には特定のネットワークを使用します。

CREATE REPLICATION r
ELEMENT e DATASTORE
MASTER rep1 SUBSCRIBER rep2
ROUTE MASTER rep1 ON "machine1" SUBSCRIBER rep2 ON "machine2"
SUBSCRIBERIP "rep2nic2" PRIORITY 1;

複数のサブスクライバを使用するNetworkOperation句の使用例を示します。

CREATE REPLICATION r ELEMENT e DATASTORE
MASTER rep1 SUBSCRIBER rep2,rep3
ROUTE MASTER rep1 ON "machine1" SUBSCRIBER rep2 ON "machine2"
MASTERIP "1.1.1.1" PRIORITY 1 SUBSCRIBERIP "2.2.2.2"
    PRIORITY 1
ROUTE MASTER Rep1 ON "machine1" SUBSCRIBER Rep3 ON "machine2"
MASTERIP "3.3.3.3" PRIORITY 2 SUBSCRIBERIP "4.4.4.4";