ヘッダーをスキップ
Oracle® TimesTen In-Memory Database開発者および管理者ガイド
11gリリース2 (11.2.2)
B66443-07
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

10 クラシック・レプリケーション・スキームの変更

この章では、既存のクラシック・レプリケーション・システムを変更する方法について説明します。

表10-1に、既存のクラシック・レプリケート・システムに対してよく実行するタスクを示します。

表10-1 既存のクラシック・レプリケート・システムに対して実行するタスク

タスク 説明

クラシック・レプリケーション・スキームの変更または削除

「クラシック・レプリケーション・スキームの変更」および「クラシック・レプリケーション・スキームの削除」を参照してください。

レプリケーション・スキームで使用されている表の変更

「クラシック・レプリケーション・スキームでレプリケートされた表の変更」を参照してください。

レプリケーション・スキームで使用されている表の切捨て

「クラシック・レプリケーション・スキームでレプリケートされた表の切捨て」を参照してください。

サブスクライバ・データベースのレプリケーション状態の変更

「サブスクライバのレプリケーション状態の設定」を参照してください。

更新競合の解消

第13章「レプリケーション競合の解消」を参照してください。

障害からのリカバリ

第15章「データベースのフェイルオーバーおよびリカバリの管理」を参照してください。

データベースのアップグレード

ttMigrateおよびttRepAdminユーティリティを使用します(『Oracle TimesTen In-Memory Databaseインストレーション・ガイド』のデータベースのアップグレードに関する説明を参照)。


クラシック・レプリケーション・スキームの変更

レプリケーション・エージェントを停止せずに、次のタスクを実行できます。

ALTER REPLICATIONを使用すると、マスターおよびサブスクライバのデータベースのクラシック・レプリケーション・スキームを変更できます。また、マスター・データベースに対する変更は、そのサブスクライバに対しても行う必要があります。


注意:

ALTER REPLICATION文を使用するには、ADMIN権限が必要です。

ほとんどのALTER REPLICATION処理は、レプリケーション・エージェントが停止している場合(ttAdmin -repStop)にのみサポートされます。レプリケーション・エージェントを停止する必要があるALTER REPLICATION処理の手順は、次のとおりです。

  1. 組込みのttRepStopプロシージャまたはttAdmin -repStopを使用して、マスターおよびサブスクライバのデータベースのレプリケーション・エージェントを停止します。レプリケーション・エージェントの停止中、マスター・データベースへの変更はログに格納されます。

  2. マスターとサブスクライバの両方のデータベースで、同じALTER REPLICATION文を発行します。

  3. 組込みのttRepStartプロシージャまたはttAdmin -repStartを使用して、マスターおよびサブスクライバのデータベースのレプリケーション・エージェントを再起動します。マスター・データベースのログに格納されている変更がサブスクライバ・データベースに送信されます。

ALTER REPLICATIONを使用してDATASTORE要素を指定するクラシック・レプリケーション・スキームを変更する場合は、次のことに注意してください。

  • SET NAMEを使用して、DATASTORE要素の名前を変更することはできません。

  • SET CHECK CONFLICTSを使用して、競合解消を有効にすることはできません。

この項の内容は次のとおりです。

既存のクラシック・レプリケーション・スキームへの表または順序の追加

既存のクラシック・レプリケーション・スキームに表または順序を追加するには、次の2つの方法があります。

  • クラシック・レプリケーション・スキームの要素レベルがTABLEまたはSEQUENCEの場合は、ADD ELEMENT句を指定してALTER REPLICATION文を使用し、表または順序を追加します。例10-1を参照してください。

  • クラシック・レプリケーション・スキームの要素レベルがDATASTOREの場合は、ALTER ELEMENT句を指定してALTER REPLICATION文を使用し、表または順序を含めます。例10-2を参照してください。

例10-1 レプリケーション・スキームへの順序および表の追加

この例では、例9-10で定義したクラシック・レプリケーション・スキーム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";

例10-2 DATASTORE要素への順序および表の追加

順序my.seqおよび表my.tab1my.rep1レプリケーション・スキームのds1 DATASTORE要素に追加します。

ALTER REPLICATION my.rep1
  ALTER ELEMENT ds1 DATASTORE
    INCLUDE SEQUENCE my.seq
  ALTER ELEMENT ds1 DATASTORE
    INCLUDE TABLE my.tab1;

既存のクラシック・レプリケーション・スキームへのPL/SQLオブジェクトの追加

既存のレプリケーション・スキームに新しいPL/SQLプロシージャ、パッケージ、パッケージ本体またはファンクションを追加するには、次のタスクを実行します。

  1. マスター・データベースでPL/SQLオブジェクトを作成します。CREATE文はサブスクライバにレプリケートされません。

  2. サブスクライバでPL/SQLオブジェクトを作成します。

  3. マスター・データベースの新しいPL/SQLオブジェクトに権限を付与します。GRANT文はサブスクライバにレプリケートされます。

既存のクラシック・レプリケーション・スキームへのDATASTORE要素の追加

ADD ELEMENT句を指定してALTER REPLICATION文を使用すると、既存のクラシック・レプリケーション・スキームにDATASTORE要素を追加できます。INCLUDE句またはEXCLUDE句を使用しない場合、一時表を除くすべての表、マテリアライズド・ビューおよび非マテリアライズド・ビューがレプリケーション・スキームに含まれます。「DATASTORE要素追加時の表または順序の挿入」および「DATASTORE要素追加時の表または順序の除外」を参照してください。

例10-3 クラシック・レプリケーション・スキームへのDATASTORE要素の追加

既存のクラシック・レプリケーション・スキームにDATASTORE要素を追加します。

ALTER REPLICATION my.rep1
  ADD ELEMENT ds1 DATASTORE
       MASTER rep2
       SUBSCRIBER rep1, rep3;

DATASTORE要素追加時の表または順序の挿入

既存のクラシック・レプリケーション・スキームにデータベースを追加する場合、レプリケーションを特定の表または順序に制限できます。ADD ELEMENT句と、INCLUDE TABLE句またはINCLUDE SEQUENCE句を指定してALTER REPLICATION文を使用します。同じALTER REPLICATION文の表または順序ごとに1つのINCLUDE句を使用できます。

例10-4 DATASTORE要素への表および順序の挿入

ds1 DATASTORE要素をmy.rep1レプリケーション・スキームに追加します。DATASTORE要素に表my.tab2および順序my.seqを挿入します。

ALTER REPLICATION my.rep1
ADD ELEMENT ds1 DATASTORE
MASTER rep2
SUBSCRIBER rep1, rep3
INCLUDE TABLE my.tab2
INCLUDE SEQUENCE my.seq;

DATASTORE要素追加時の表または順序の除外

既存のクラシック・レプリケーション・スキームにDATASTORE要素を追加する場合、表または順序を除外できます。ADD ELEMENT句と、EXCLUDE TABLE句またはEXCLUDE SEQUENCE句を指定してALTER REPLICATION文を使用します。同じALTER REPLICATION文の表または順序ごとに1つのEXCLUDE句を使用できます。

例10-5 DATASTORE要素からの表または順序の除外

ds2 DATASTORE要素をレプリケーション・スキームに追加しますが、表my.tab1および順序my.seqを除外します。

ALTER REPLICATION my.rep1
ADD ELEMENT ds2 DATASTORE
MASTER rep2
SUBSCRIBER rep1
EXCLUDE TABLE my.tab1
EXCLUDE SEQUENCE my.seq;

クラシック・レプリケーション・スキームからの表または順序の削除

この項の内容は次のとおりです。

DATASTORE要素の一部としてレプリケートされる表または順序の削除

DATASTOREレベルでクラシック・レプリケーション・スキームに含まれている表または順序を削除するには、次のタスクを実行します。

  1. レプリケーション・エージェントを停止します。

  2. クラシック・レプリケーション・スキームのDATASTORE要素から表または順序を除外します。

  3. 表または順序を削除します。

その表または順序が含まれているDATASTORE要素が複数存在する場合は、それを削除する前に各要素からその表または順序を除外する必要があります。

例10-6 DATASTORE要素からの表の除外およびその後の表の削除

my.rep1レプリケーション・スキームのds1 DATASTORE要素から表my.tab1を除外します。その後、その表を削除します。

ALTER REPLICATION my.rep1
  ALTER ELEMENT ds1 DATASTORE
    EXCLUDE TABLE my.tab1;
DROP TABLE my.tab1;

TABLEまたはSEQUENCE要素としてレプリケートされる表または順序の削除

TABLEまたはSEQUENCEレベルでクラシック・レプリケーション・スキームに含まれている表を削除するには、次のタスクを実行します。

  1. レプリケーション・エージェントを停止します。

  2. 要素をクラシック・レプリケーション・スキームから削除します。

  3. 表または順序を削除します。

例10-7 レプリケーション・スキームからの要素の削除およびその後の順序の削除

SEQUENCEの要素elem_seqをクラシック・レプリケーション・スキームr1から削除します。その後、順序seqを削除します。

ALTER REPLICATION r1
  DROP ELEMENT elem_seq;
DROP SEQUENCE seq;

サブスクライバ・データベースの作成とクラシック・レプリケーション・スキームへの追加

レプリケーション・エージェントの実行中は、新しいサブスクライバ・データベースを追加できます。クラシック・レプリケーション・スキームにデータベースを追加するには、次の手順を実行します。

  1. 新しいサブスクライバ・データベースが存在しないことを確認します。

  2. 関連するすべてのデータベースに適切な文を適用します。

    ALTER REPLICATION ...
      ALTER ELEMENT ...
        ADD SUBSCRIBER ...
    
  3. ソース(マスター)・データベースで、次のように入力してユーザーを作成し、そのユーザーにADMIN権限を付与します。

    CREATE USER ttuser IDENTIFIED BY ttuser;
    User created.
    
    GRANT admin TO ttuser;
    
  4. インスタンス管理者としてログインして、ttRepAdmin -duplicateコマンドを実行し、新しく作成したサブスクライバにマスター・データベースの内容をコピーします。-setMasterRepStartオプションを使用すると、複製処理後にマスターに対して行われた更新もサブスクライバにコピーできます。

  5. 新しく作成したデータベースでレプリケーション・エージェントを起動します(ttAdmin -repStart)。

例10-8 レプリケート表へのサブスクライバの追加

この例では、r1レプリケーション・スキームを変更して、サブスクライバ(backup3)をwestleads表に追加します(前述の手順2)。

ALTER REPLICATION r1
  ALTER ELEMENT elem_westleads
    ADD SUBSCRIBER backup3 ON "backupserver";

クラシック・レプリケーション・スキームからのサブスクライバ・データベースの削除

サブスクライバ・データベースを削除する前に、レプリケーション・エージェントを停止します。

この例では、r1レプリケーション・スキームを変更して、westleads表のbackup3サブスクライバを削除します。

例10-9 レプリケート表のサブスクライバの削除

ALTER REPLICATION r1
  ALTER ELEMENT elem_westleads
    DROP SUBSCRIBER backup3 ON "backupserver";

クラシック・レプリケーション・スキームでのTABLEまたはSEQUENCE要素名の変更

クラシック・レプリケーション・スキームでTABLEまたはSEQUENCE要素名を変更する前に、レプリケーション・エージェントを停止します。

westleads表の要素名をelem_westleadsからnewelnameに変更します。

例10-10 表名の変更

ALTER REPLICATION r1
  ALTER ELEMENT Eelem_westleads
    SET NAME newelname;

注意:

SET NAME句を使用して、DATASTORE要素の名前を変更することはできません。

クラシック・レプリケーション・スキームでのマスター・データベースの交換

クラシック・レプリケーション・スキームでマスター・データベースを交換する前に、レプリケーション・エージェントを停止します。

この例では、現在はマスターとしてwestdsが構成されているすべての要素に新しいマスターnewwestdsを構成します。

例10-11 クラシック・レプリケーション・スキームでのマスター・データベースの交換

ALTER REPLICATION r1
  ALTER ELEMENT * IN westds
    SET MASTER newwestds;

クラシック・レプリケーション・スキームでの競合検出の無効化

この例では、例13-2に示されているクラシック・レプリケーション・スキームのCHECK CONFLICTS句で構成した競合検出を、elem_accounts_1表に対して無効にします。

例10-12 表の競合検出の無効化

ALTER REPLICATION r1
  ALTER ELEMENT elem_accounts_1
    SET NO CHECK;

競合検出の詳細は、第13章「レプリケーション競合の解消」を参照してください。

クラシック・レプリケーション・スキームでのRETURN RECEIPTサービスの無効化

この例では、例9-10に示されているクラシック・レプリケーション・スキームの最初のサブスクライバに対してRETURN RECEIPTサービスを無効にします。

例10-13 サブスクライバのRETURN RECEIPTサービスの無効化

ALTER REPLICATION r1
  ALTER ELEMENT elem_waccounts
    ALTER SUBSCRIBER eastds ON "eastcoast"
      SET NO RETURN;

クラシック・レプリケーション・スキームのポート番号の変更

ポート番号とは、サブスクライバ・データベースのレプリケーション・エージェントがマスター・レプリケーション・エージェントからの接続リクエストを受け入れるTCP/IPポート番号のことです。レプリケーション・エージェントへのポートの割当て方法の詳細は、「ポート割当て」を参照してください。

この例では、r1レプリケーション・スキームを変更して、eastdsのポート番号を22251に変更します。

例10-14 データベースのポート番号の変更

ALTER REPLICATION r1
  ALTER STORE eastds ON "eastcoast"
    SET PORT 22251;

レプリケーション・ルートの変更

レプリケーション・ホストにネットワーク・インタフェースが複数ある場合は、レプリケーション・トラフィックに使用するインタフェースをROUTE句で指定できます。レプリケーションで使用するインタフェースの変更が必要な場合は、ROUTE句のIPアドレスを削除または追加して変更できます。詳細は、「ROUTE句を使用したネットワーク・インタフェースの構成」を参照してください。

ログ障害しきい値の変更

STOREパラメータのFAILTHRESHOLD属性を使用すると、ログ障害しきい値を再設定できます。レプリケーション・エージェントを停止してから、ALTER REPLICATIONを使用して新しいしきい値を定義し、その後、レプリケーション・エージェントを再起動します。

ログ障害しきい値の詳細は、「トランザクション・ログ障害しきい値の設定」を参照してください。

クラシック・レプリケーション・スキームでレプリケートされた表の変更

ALTER TABLE ... ADD COLUMN文またはALTER TABLE ... DROP COLUMN文を使用すると、クラシック・レプリケーション・スキームのマスター・データベースで列を追加または削除できます。ALTER TABLE処理をレプリケートすると、サブスクライバ・データベースが変更されます。クラシック・レプリケーション・スキームでレプリケートされるALTER TABLE句は、これだけです。

双方向レプリケーションに構成されているデータベースでALTER TABLEを使用する場合は、まず、すべてのレプリケーション・データベース上にある表への更新を停止し、表へのすべてのレプリケート対象の更新がデータベースによって受信されていることを確認してから、ALTER TABLE文を発行します。ALTER TABLE処理がすべてのデータベースにレプリケートされるまで、更新は再開しないでください。これは、すべてのデータベースで表が変更された後まで書込み処理が行われないようにするために必要です。


注意:

データベースで更新が受信およびコミットされたことを確認するには、第12章「レプリケーションの監視」で説明されているttRepSubscriberWait組込みプロシージャまたはモニタリング・ツールを使用できます。

また、データベース上で連続した多数のALTER TABLE処理を実行する場合は、前のALTER TABLEがすべてのサブスクライバに到達したことを確認してから、次のALTER TABLEに進む必要があります。


注意:

ALTER TABLE文を使用してデフォルトの列値を変更することはできますが、ALTER TABLE文はレプリケートされません。したがって、すべてのノードでデフォルトの列値を同じにする必要はありません。

クラシック・レプリケーション・スキームでレプリケートされた表の切捨て

TRUNCATE TABLEを使用すると、表自身を削除せずに表のすべての行を削除できます。表の切捨ての処理は、DELETE FROM Table文よりも高速です。

レプリケート表の切捨て処理がレプリケートされると、結果としてサブスクライバ・データベースの表が切り捨てられます。ただし、削除処理とは異なり、個々の行は削除されません。切捨て処理時に表の内容が一致していない場合でも、サブスクライバ・データベースの行は削除されます。

TRUNCATE文を使用すると、処理対象の行が存在しない場合でも、サブスクライバにレプリケートされます。

タイムスタンプ競合検出が有効な状態で表をレプリケートすると、競合はレポートされません。

クラシック・レプリケーション・スキームの削除

DROP REPLICATION文を使用して、データベースからレプリケーション・スキームを削除できます。クラシック・レプリケーション・スキームがデータベース内の唯一のレプリケーション・スキームでないかぎり、マスター・キャッチアップが必要な場合はクラシック・レプリケーション・スキームを削除できません。


注意:

DROP REPLICATION文を使用するには、ADMIN権限が必要です。

クラシック・レプリケーション・スキームを削除する前に、レプリケーション・エージェントを停止する必要があります。

例10-15 レプリケーション・スキームの削除

データベースからrepschemeレプリケーション・スキームを削除するには、次のように入力します。

DROP REPLICATION repscheme;

レプリケート表を削除する場合は、レプリケート表を削除する前にクラシック・レプリケーション・スキームを削除する必要があります。そうしない場合、レプリケート表または索引を削除しようとしたことを示すエラーを受信します。

例10-16 データベースからの表およびクラシック・レプリケーション・スキームの削除

データベースからtab表およびrepschemeレプリケーション・スキームを削除するには、次のように入力します。

DROP REPLICATION repscheme;
DROP TABLE tab;