Oracle® TimesTen In-Memory Database TimesTen to TimesTen開発者および管理者ガイド リリース11.2.1 B56053-02 |
|
戻る |
次へ |
この章では、既存のレプリケーション・システムを変更する方法について説明します。表13-1に、既存のレプリケート・システムに対してよく実行するタスクを示します。
表13-1 既存のレプリケート・システムに対して実行するタスク
タスク | 説明 |
---|---|
レプリケーション・スキームの変更または削除 |
「レプリケーション・スキームの変更」および「レプリケーション・スキームの削除」を参照してください。 |
レプリケーション・スキームで使用されている表の変更 |
「レプリケート表の変更」を参照してください。 |
レプリケーション・スキームで使用されている表の切捨て |
「レプリケート表の切捨て」を参照してください。 |
サブスクライバ・データベースのレプリケーション状態の変更 |
「サブスクライバのレプリケーション状態の設定」を参照してください。 |
更新競合の解消 |
第14章「レプリケーション競合の解消」を参照してください。 |
障害からのリカバリ |
第11章「データベースのフェイルオーバーおよびリカバリの管理」を参照してください。 |
データベースのアップグレード |
|
ALTER REPLICATION
を使用して、マスターおよびサブスクライバのデータベースのレプリケーション・スキームを変更することができます。また、マスター・データベースに対する変更は、そのサブスクライバに対しても行う必要があります。
注意: ALTER REPLICATION 文を使用するには、ADMIN 権限が必要です。 |
ALTER REPLICATION
を使用してDATASTORE
要素を指定するレプリケーション・スキームを変更する場合は、次のことに注意してください。
SET NAME
を使用して、DATASTORE
要素の名前を変更することはできません。
SET CHECK CONFLICTS
を使用して、競合解消を有効にすることはできません。
ほとんどのALTER REPLICATION
処理は、レプリケーション・エージェントが停止している場合(ttAdmin
-repStop
)にのみサポートされます。ただし、レプリケーション・エージェントの実行中にデータベースをレプリケーション・スキームに動的に追加することは可能です(「サブスクライバ・データベースの作成および追加」を参照)。
レプリケーション・エージェントを停止する必要があるALTER REPLICATION
処理の手順は、次のとおりです。
ttRepStop
プロシージャまたはttAdmin
-repStop
を使用して、マスターおよびサブスクライバのデータベースのレプリケーション・エージェントを停止します。レプリケーション・エージェントの停止中、マスター・データベースへの変更はログに格納されます。
マスターとサブスクライバの両方のデータベースで、同じALTER REPLICATION
文を発行します。
ttRepStart
プロシージャまたはttAdmin
-repStart
を使用して、マスターおよびサブスクライバのデータベースのレプリケーション・エージェントを再起動します。マスター・データベースのログに格納されている変更がサブスクライバ・データベースに送信されます。
この項の内容は次のとおりです。
既存のレプリケーション・スキームに表または順序を追加するには、次の2つの方法があります。
レプリケーション・スキームの要素レベルがTABLE
またはSEQUENCE
の場合は、ADD ELEMENT
句を指定してALTER REPLICATION
文を使用し、表または順序を追加します。詳細は、例13-1を参照してください。
レプリケーション・スキームの要素レベルがDATASTORE
の場合は、ALTER ELEMENT
句を指定してALTER REPLICATION
文を使用し、表または順序を含めます。詳細は、例13-2を参照してください。
例13-1 レプリケーション・スキームへの順序および表の追加
この例では、例9-29で定義したレプリケーション・スキームr1
を使用します。レプリケーション・スキームr1
を変更して、順序seq
および表westleads
を追加します。この表は、データベースwestds
で更新され、データベースeastds
にレプリケートされます。
ALTER REPLICATION r1 ADD ELEMENT elem_seq SEQUENCE seq MASTER westds ON "westcoast" SUBSCRIBER eastds ON "eastcoast" ADD ELEMENT elem_westleads TABLE westleads MASTER westds ON "westcoast" SUBSCRIBER eastds ON "eastcoast";
ADD ELEMENT
句を指定してALTER REPLICATION
文を使用すると、既存のレプリケーション・スキームにDATASTORE
要素を追加できます。INCLUDE
またはEXCLUDE
句を使用しない場合、一時表を除くすべての表、マテリアライズド・ビューまたは非マテリアライズド・ビューがデータベースに含まれます。「DATASTORE要素追加時の表または順序の挿入」および「DATASTORE要素追加時の表または順序の除外」を参照してください。
例13-3 レプリケーション・スキームへのDATASTORE要素の追加
既存のレプリケーション・スキームにDATASTORE
要素を追加します。
ALTER REPLICATION my.rep1 ADD ELEMENT ds1 DATASTORE MASTER rep2 SUBSCRIBER rep1, rep3;
既存のレプリケーション・スキームにデータベースを追加する場合、レプリケーションを特定の表または順序に制限できます。ADD ELEMENT
句と、INCLUDE TABLE
句またはINCLUDE SEQUENCE
句を指定してALTER REPLICATION
文を使用します。同じALTER REPLICATION
文の表または順序ごとに1つのINCLUDE
句を使用できます。
この項の内容は次のとおりです。
DATASTORE
レベルでレプリケーション・スキームに含まれている表または順序を削除するには、次のタスクを実行します。
レプリケーション・エージェントを停止します。
レプリケーション・スキームのDATASTORE
要素から表または順序を除外します。
表または順序を削除します。
その表または順序が含まれているDATASTORE
要素が複数存在する場合は、それを削除する前に各要素からその表または順序を除外する必要があります。
TABLE
またはSEQUENCE
レベルでレプリケーション・スキームに含まれている表を削除するには、次のタスクを実行します。
レプリケーション・エージェントを停止します。
要素をレプリケーション・スキームから削除します。
表または順序を削除します。
レプリケーション・エージェントの実行中は、新しいサブスクライバ・データベースを追加できます。データベースをレプリケーション・スキームに追加するには、次のタスクを実行します。
新しいデータベースが存在しないことを確認します。
関連するすべてのデータベースに適切な文を適用します。
ALTER REPLICATION ... ALTER ELEMENT ... ADD SUBSCRIBER ...
ttRepAdmin
-duplicate
コマンドを実行し、新しく作成したサブスクライバにマスター・データベースの内容をコピーします。-setMasterRepStart
オプションを使用すると、複製処理後にマスターに対して行われた更新もサブスクライバにコピーできます。
新しく作成したデータベースでレプリケーション・エージェントを起動します(ttAdmin
-repStart
)。
サブスクライバ・データベースを削除する前に、レプリケーション・エージェントを停止します。
この例では、r1
レプリケーション・スキームを変更して、westleads
表のbackup3
サブスクライバを削除します。
TABLE
またはSEQUENCE
要素名を変更する前に、レプリケーション・エージェントを停止します。
westleads
表の要素名をelem_westleads
からnewelname
に変更します。
注意: SET NAME 句を使用して、DATASTORE 要素の名前を変更することはできません。 |
マスター・データベースを交換する前に、レプリケーション・エージェントを停止します。
この例では、現在はマスターとしてwestds
が構成されているすべての要素に新しいマスターnewwestds
を構成します。
この例では、例14-2に示されているスキームのCHECK CONFLICTS
句で構成した競合検出を、elem_accounts_1
表に対して無効にします。
例13-12 表の競合検出の無効化
ALTER REPLICATION r1 ALTER ELEMENT elem_accounts_1 SET NO CHECK;
競合検出の詳細は、第14章「レプリケーション競合の解消」を参照してください。
この例では、例9-29に示されているスキームの最初のサブスクライバに対してRETURN RECEIPTサービスを無効にします。
ポート番号とは、サブスクライバ・データベースのレプリケーション・エージェントがマスター・レプリケーション・エージェントからの接続リクエストを受け入れるTCP/IPポート番号のことです。レプリケーション・エージェントへのポートの割当て方法の詳細は、「ポート割当て」を参照してください。
この例では、r1
レプリケーション・スキームを変更して、eastds
のポート番号を22251に変更します。
レプリケーション・ホストにネットワーク・インタフェースが複数ある場合は、レプリケーション・トラフィックに使用するインタフェースをROUTE
句で指定できます。レプリケーションで使用するインタフェースの変更が必要な場合は、ROUTE
句のIPアドレスを削除または追加して変更できます。
例13-15 レプリケーション・ルートの変更
この例では、rep.r1
レプリケーション・スキームを変更して、マスター・データベースの優先順位2のIPアドレスを192.168.1.100から192.168.1.101に変更します。
ALTER REPLICATION r1 DROP ROUTE MASTER eastds ON "eastcoast" SUBSCRIBER westds ON "westcoast" MASTERIP "192.168.1.100" ADD ROUTE MASTER eastds ON "eastcoast" SUBSCRIBER westds ON "westcoast" MASTERIP "192.168.1.101" PRIORITY 2;
STORE
パラメータのFAILTHRESHOLD
属性を使用すると、ログ障害しきい値を再設定できます。レプリケーション・エージェントを停止してから、ALTER REPLICATION
またはALTER ACTIVE STANDBY PAIR
を使用して新しいしきい値を定義します。その後、レプリケーション・エージェントを再起動します。
ログ障害しきい値の詳細は、「ログ障害しきい値の設定」および「ログ障害しきい値の設定」を参照してください。
ALTER TABLE
を使用すると、マスター・データベースで列を追加または削除できます。ALTER TABLE
処理をレプリケートすると、サブスクライバ・データベースが変更されます。
双方向レプリケーションに構成されているデータベースでALTER TABLE
を使用する場合は、まず、すべてのレプリケーション・データベース上にある表への更新を停止し、表へのすべてのレプリケート対象の更新がデータベースによって受信されていることを確認してから、ALTER TABLE
文を発行します。ALTER TABLE
処理がすべてのデータベースにレプリケートされるまで、更新は再開しないでください。これは、すべてのデータベースで表が変更された後まで書込み処理が行われないようにするために必要です。
注意: データベースで更新が受信およびコミットされたことを確認するには、第12章「レプリケーションの監視」で説明されているttRepSubscriberWait プロシージャまたはモニタリング・ツールを使用できます。 |
また、データベース上で連続した多数のALTER TABLE
処理を実行する場合は、前のALTER TABLE
がすべてのサブスクライバに到達したことを確認してから、次のALTER TABLE
に進む必要があります。
TRUNCATE TABLE
を使用すると、表自身を削除せずに表のすべての行を削除できます。表の切捨ての処理は、DELETE FROM
Table文よりも高速です。
レプリケート表の切捨て処理がレプリケートされると、結果としてサブスクライバ・データベースの表が切り捨てられます。ただし、削除処理とは異なり、個々の行は削除されません。切捨て処理時に表の内容が一致していない場合でも、サブスクライバ・データベースの行は削除されます。
TRUNCATE
文を使用すると、処理対象の行が存在しない場合でも、サブスクライバにレプリケートされます。
タイムスタンプ競合検出が有効な状態で表をレプリケートすると、競合はレポートされません。
DROP REPLICATION
文を使用して、データベースからレプリケーション・スキームを削除できます。レプリケーション・スキームがデータベース内の唯一のレプリケーション・スキームでないかぎり、マスター・キャッチアップが必要な場合はレプリケーション・スキームを削除できません。
注意: DROP REPLICATION 文を使用するには、ADMIN 権限が必要です。 |
レプリケーション・スキームを削除する前に、レプリケーション・エージェントを停止する必要があります。