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 } [...]
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
新しいクラシック・レプリケーション・スキームに割り当てる名前です。クラシック・レプリケーション・スキームは、他のすべてのデータベース・オブジェクトとは別の一意の名前である必要があります。 |
|
|
双方向にレプリケートされたデータベースへの同時書込みで、レプリケーションの競合をチェックします。 |
|
|
レプリケートされた通信量を圧縮して、ネットワークの帯域幅の量を削減します。 |
|
|
競合解消のレポートを一時停止します。
この句は、表レベルのレプリケーションで有効です。 |
|
|
競合解消のレポートを再開します。
この句は、表レベルのレプリケーションで有効です。 |
|
|
データベース全体を要素として定義します。この種類の要素は、同一または異なるレプリケーション・スキームで |
|
|
|
|
|
|
|
|
|
|
|
TimesTenがデータベース間で同期を取るエンティティです。レプリケーション要素として、TimesTenでは、データベース全体(
詳細は、『Oracle TimesTen In-Memory Databaseレプリケーション・ガイド』の「レプリケーション要素の定義」を参照してください。 |
|
|
サブスクライバ・データベースのために累積できるログ・ファイルの数。この値を超えると、サブスクライバは 『Oracle TimesTen In-Memory Databaseレプリケーション・ガイド』の「トランザクション・ログ障害しきい値の設定」を参照してください。 |
|
|
次のいずれかとして指定されたデータベースです。
たとえば、データベースのパスが この名前は、DSNの記述の
|
|
|
タイムアウト・イベントのRETURN TWOSAFEトランザクションで実行されるデフォルトのアクションを指定します。 ノート: この属性は、
この設定は、 |
|
|
アプリケーションで特定の要素が更新されるデータベース。更新は |
|
|
RETURNサービスを使用しないように指定します。これがデフォルトです。 RETURNサービスの使用の詳細は、『Oracle TimesTen In-Memory Databaseレプリケーション・ガイド』の「RETURNサービスの使用」を参照してください。 |
|
|
データベースのレプリケーション・エージェントが接続をリスニングするTCP/IPポート番号です。指定しない場合は、レプリケーション・エージェントによってポート番号が自動的に割り当てられます。 |
|
|
レプリケートされた更新を受け取って他のデータベースに渡すデータベース。 |
|
|
|
|
|
RETURN RECEIPTサービスを有効にし、これによって、マスター・データベースに対してトランザクションをコミットするアプリケーションは、すべてのサブスクライバがトランザクションを受信するまでブロックされます。
|
|
|
レプリケーションが無効になっている場合のRETURNサービスのオンまたはオフを設定します。
|
|
|
RETURN TWOSAFEサービスを有効にし、これによって、マスター・データベースに対してトランザクションをコミットするアプリケーションは、すべてのサブスクライバがトランザクションをコミットするまでブロックされます。 ノート: このサービスは、要素が
|
|
|
RETURNサービスの応答を待機する秒数を指定します。デフォルト値は10秒です。値が0(ゼロ)の場合は、タイムアウトがないことを意味します。 |
|
|
|
|
|
指定されたデータベースの属性を定義します。属性には、 |
|
|
|
|
|
|
|
|
レプリケーション・エージェントがリモート・レプリケーション・エージェントからの応答を待機する最大時間(秒)。デフォルトは120秒です。 ノート: リモート・レプリケーション・エージェントからの応答の遅延の原因となる大規模なトランザクションの場合、エージェントは、トランザクションのサイズに基づいて、タイムアウトをスケーリングします。 |
|
|
コミットされたトランザクション群をサブスクライバに転送する前に、マスターのログをファイル・システムにフラッシュするかどうかを指定します。
ノート: ノート: アクティブ・スタンバイ・ペアに対して 詳細は、『Oracle TimesTen In-Memory Databaseレプリケーション・ガイド』の「DATASTORE要素に対する送信永続性の設定」を参照してください。 |
|
|
サブスクライバで実行される表定義チェックの種類を指定します。
デフォルトは ノート: |
|
|
複数回指定できます。
|
|
|
句は複数回指定できます。 |
|
|
1から99の整数で表される変数。IPアドレスの優先順位を示します。整数値が小さいほど、優先度は高くなります。同じ優先度を持つアドレスが複数指定されている場合は、エラーが返されます。ピア接続の確立に使用する複数のIPアドレスの順序を制御します。
|
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句には、次のパラメータがあります。
| パラメータ | 説明 |
|---|---|
|
|
すべての更新競合と一意性競合の検出を指定します。競合は DELETE処理と |
|
|
レプリケートされた表の列を使用してタイムスタンプを比較します。表は
|
|
|
指定された要素に対する競合解消を行わないように指定します。 |
|
|
タイムスタンプ値をTimesTen( |
|
|
検出された競合の解消方法を指定します。
デフォルトは |
|
|
タイムスタンプ比較に失敗した更新を記録するファイルを指定します。 |
|
|
オプションで、要素の競合レポートの形式を指定します。デフォルトの形式は |
|
|
失敗したタイムスタンプの比較を記録しないように指定します。 |
説明
-
同じホスト上のすべてのデータベース名は、各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";
eastdsとwestdsデータベースの間で、repl.accounts表の内容を双方向でレプリケートします。各データベースは、repl.accounts表に対してマスターおよびサブスクライバの両方になります。
repl.accounts表がeastdsとwestdsデータベースのいずれかで更新されるため、ここにはタイムスタンプ列(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";