ヘッダーをスキップ
Oracle® Databaseアドバンスト・レプリケーション・マネージメントAPIリファレンス
12cリリース1 (12.1)
E52979-02
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

3 マスター・グループの作成

この章では、マスター・レプリケーション・サイトでマスター・グループを作成する方法を説明します。

この章には、次の項が含まれます。

マスター・グループ作成の概要

マスター・サイトを設定した後、マスター・グループを作成できます。レプリケーション環境を正しく構築するには、図3-2に示す手順に従う必要があります。


関連項目:

マスター・サイトの設定の詳細は、「レプリケーション・サイトの構成」を参照してください。

この章では、hr_repgマスター・グループを作成して、図3-1に示すオブジェクトをレプリケートします。

図3-1 全サイト間のhrスキーマの表をレプリケート

図3-1の説明が続きます。
「図3-1 全サイト間のhrスキーマの表をレプリケート」の説明

作業を開始する前に

この章のスクリプトを設計どおりに動作させるために、orc1.example.comorc2.example.comおよびorc3.example.comhrスキーマが存在することを確認してください。hrスキーマには次のデータベース・オブジェクトが含まれます。

  • countries

  • departments

  • employees

  • jobs

  • job_history

  • locations

  • regions

  • dept_location_ix索引

  • emp_department_ix索引

  • emp_job_ix索引

  • emp_manager_ix索引

  • jhist_department_ix索引

  • jhist_employee_ix索引

  • jhist_job_ix索引

  • loc_country_ix索引

リストされている索引は、hrスキーマの外部キー列を基準とした索引です。親表の更新や削除が許可されていない場合を除き、外部キー参照制約がある表のレプリケーションでは、常に外部キーに索引を作成してからこれらの索引をレプリケートすることをお薦めします。索引は自動でレプリケートされません。

デフォルトでは、Oracle Databaseのインストール時に、hrスキーマが自動的にインストールされます。この章のスクリプト例では、すべてのマスター・サイトにhrスキーマが存在し、そのスキーマには各サイトのデータベース・オブジェクトのすべてが含まれることを前提としています。また、表には、Oracleのインストール時に自動的に挿入されたデータが含まれるものとします。hrスキーマがレプリケーション・サイトにインストールされていない場合は、手動でインストールできます。

図3-2 マスター・グループの作成

図3-2の説明が続きます。
「図3-2 マスター・グループの作成」の説明


関連項目:

hrスキーマやその他のサンプル・スキーマ、およびサンプル・スキーマの手動インストールについては、『Oracle Databaseサンプル・スキーマ』を参照してください。

マスター・グループの作成

次に示す手順に従って、hr_repgマスター・グループを作成します。


注意:

このドキュメントをオンラインで参照している場合は、次の「BEGINNING OF SCRIPT」の行から「END OF SCRIPT」の行までのテキストをテキスト・エディタにコピーして編集し、使用している環境に適したスクリプトを作成します。

/************************* BEGINNING OF SCRIPT ******************************/

SET ECHO ON

SPOOL create_mg.out

CONNECT repadmin@orc1.example.com

/*
手順1   マスター・サイトでスキーマを作成します。

マスター・グループに関係するすべてのマスター・サイトに、スキーマが存在しない場合は、スキーマを作成して、必要な権限を付与します。この例では、Oracleのインストール時にデフォルトでインストールされたスキーマの1つであるhrスキーマを使用します。したがって、hrスキーマはすべてのマスター・サイトに存在します。

*/

PAUSE Press <RETURN> to continue when the schema exists at all master sites.

/*
手順2   マスター・グループを作成します。

新しいマスター・グループを定義するには、CREATE_MASTER_REPGROUPプロシージャを使用します。オブジェクトをマスター・グループに追加する場合または他のレプリケーション管理タスクを実行する場合は、この手順で定義したマスター・グループ名を参照します。この手順はレプリケーション管理者が実行します。

*/

BEGIN
   DBMS_REPCAT.CREATE_MASTER_REPGROUP (
      gname => 'hr_repg');
END;
/

/*
手順3   マスター・グループにオブジェクトを追加します。

オブジェクトをマスター・グループに追加するには、CREATE_MASTER_REPOBJECTプロシージャを使用します。多くの場合、表と索引をマスター・グループへ追加しますが、プロシージャ、ビューその他も追加できます。

*/

BEGIN
   DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
      gname => 'hr_repg',
      type => 'TABLE',
      oname => 'countries',
      sname => 'hr',
      use_existing_object => TRUE,
      copy_rows => FALSE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
      gname => 'hr_repg',
      type => 'TABLE',
      oname => 'departments',
      sname => 'hr',
      use_existing_object => TRUE,
      copy_rows => FALSE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
      gname => 'hr_repg',
      type => 'TABLE',
      oname => 'employees',
      sname => 'hr',
      use_existing_object => TRUE,
      copy_rows => FALSE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
      gname => 'hr_repg',
      type => 'TABLE',
      oname => 'jobs',
      sname => 'hr',
      use_existing_object => TRUE,
      copy_rows => FALSE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
      gname => 'hr_repg',
      type => 'TABLE',
      oname => 'job_history',
      sname => 'hr',
      use_existing_object => TRUE,
      copy_rows => FALSE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
      gname => 'hr_repg',
      type => 'TABLE',
      oname => 'locations',
      sname => 'hr',
      use_existing_object => TRUE,
      copy_rows => FALSE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
      gname => 'hr_repg',
      type => 'TABLE',
      oname => 'regions',
      sname => 'hr',
      use_existing_object => TRUE,
      copy_rows => FALSE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
      gname => 'hr_repg',
      type => 'INDEX',
      oname => 'dept_location_ix',
      sname => 'hr',
      use_existing_object => TRUE,
      copy_rows => FALSE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
      gname => 'hr_repg',
      type => 'INDEX',
      oname => 'emp_department_ix',
      sname => 'hr',
      use_existing_object => TRUE,
      copy_rows => FALSE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
      gname => 'hr_repg',
      type => 'INDEX',
      oname => 'emp_job_ix',
      sname => 'hr',
      use_existing_object => TRUE,
      copy_rows => FALSE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
      gname => 'hr_repg',
      type => 'INDEX',
      oname => 'emp_manager_ix',
      sname => 'hr',
      use_existing_object => TRUE,
      copy_rows => FALSE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
      gname => 'hr_repg',
      type => 'INDEX',
      oname => 'jhist_department_ix',
      sname => 'hr',
      use_existing_object => TRUE,
      copy_rows => FALSE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
      gname => 'hr_repg',
      type => 'INDEX',
      oname => 'jhist_employee_ix',
      sname => 'hr',
      use_existing_object => TRUE,
      copy_rows => FALSE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
      gname => 'hr_repg',
      type => 'INDEX',
      oname => 'jhist_job_ix',
      sname => 'hr',
      use_existing_object => TRUE,
      copy_rows => FALSE);
END;
/

BEGIN
   DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
      gname => 'hr_repg',
      type => 'INDEX',
      oname => 'loc_country_ix',
      sname => 'hr',
      use_existing_object => TRUE,
      copy_rows => FALSE);
END;
/

/*
手順4   マスター・サイトを追加します。

マスター定義サイト(デフォルトではマスター・グループが作成されたサイトがマスター定義サイトになります)でマスター・グループを定義すれば、レプリケーション環境に関係する他のサイトを定義できます。orc2.example.comおよびorc3.example.comサイトをレプリケーション環境に追加する場合があります。この例では、すべてのマスター・サイトにマスター・グループを作成しますが、データベースを静止することなく、まず1つのマスター・サイトにマスター・グループを作成して、後でマスター・サイトを追加することもできます。この場合には、この手順をスキップします。

この例では、hrスキーマがすべてのマスター・サイトに存在することが前提となっているため、ADD_MASTER_DATABASEプロシージャのuse_existing_objectsパラメータにTRUEが設定されています。つまり、hrスキーマのオブジェクトは、すべてのマスター・サイトで事前に作成されていることが前提となっています。また、各マスター・サイトの表には同一データが格納されていることが前提となるため、copy_rowsパラメータにFALSEが設定されています。


注意:

循環依存性を持つ表または自己参照型制約のある表を含むマスター・グループに新規マスター・サイトを追加する場合は、新規マスター・サイトで表定義を再作成し、データを手動でロードする必要があります。循環依存性の例としては、「表Aには表Bに対する外部キー制約があり、表Bには表Aに対する外部キー制約がある」などがあります。

*/

BEGIN
   DBMS_REPCAT.ADD_MASTER_DATABASE (
      gname => 'hr_repg',
      master => 'orc2.example.com',
      use_existing_objects => TRUE,
      copy_rows => FALSE,
      propagation_mode => 'ASYNCHRONOUS');
END;
/

/*

注意:

DBA_REPSITESビューにorc2.example.comが表示されてから作業を続けます。他のSQL*Plusセッションで、次のSELECT文を実行し、orc2.example.comが表示されることを確認します。
SELECT DBLINK FROM DBA_REPSITES WHERE GNAME = 'HR_REPG';

*/

PAUSE Press <RETURN> to continue.

BEGIN
   DBMS_REPCAT.ADD_MASTER_DATABASE (
      gname => 'hr_repg',
      master => 'orc3.example.com',
      use_existing_objects => TRUE,
      copy_rows => FALSE,
      propagation_mode => 'ASYNCHRONOUS');
END;
/

/*

注意:

DBA_REPSITESビューにorc3.example.comが表示されてから作業を続けます。他のSQL*Plusセッションで、次のSELECT文を実行し、orc3.example.comが表示されることを確認します。
SELECT DBLINK FROM DBA_REPSITES WHERE GNAME = 'HR_REPG';

*/

PAUSE Press <RETURN> to continue.

/*
手順5   競合の可能性がある場合は、競合解消メソッドを設定します。

関連項目:

競合解消メソッド構成の詳細は、第6章「競合解消の構成」を参照してください。

*/

PAUSE Press <RETURN> to continue after configuring conflict resolution methods 
or if no conflict resolution methods are required.

/*
手順6   レプリケーション・サポートを生成します。
*/
BEGIN 
    DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
      sname => 'hr',
      oname => 'countries', 
      type => 'TABLE',
      min_communication => TRUE); 
END;
/

BEGIN 
    DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
      sname => 'hr',
      oname => 'departments', 
      type => 'TABLE',
      min_communication => TRUE); 
END;
/

BEGIN 
    DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
      sname => 'hr',
      oname => 'employees', 
      type => 'TABLE',
      min_communication => TRUE); 
END;
/

BEGIN 
    DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
      sname => 'hr',
      oname => 'jobs', 
      type => 'TABLE',
      min_communication => TRUE); 
END;
/

BEGIN 
    DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
      sname => 'hr',
      oname => 'job_history', 
      type => 'TABLE',
      min_communication => TRUE); 
END;
/

BEGIN 
    DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
      sname => 'hr',
      oname => 'locations', 
      type => 'TABLE',
      min_communication => TRUE); 
END;
/

BEGIN 
    DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
      sname => 'hr',
      oname => 'regions', 
      type => 'TABLE',
      min_communication => TRUE); 
END;
/

/*

注意:

DBA_REPCATLOGビューが空になってから、マスター・アクティビティを再開します。DBA_REPCATLOGビューを監視するには、次のSELECT文を実行します。
SELECT COUNT(*) FROM DBA_REPCATLOG WHERE GNAME = 'HR_REPG';

*/

PAUSE Press <RETURN> to continue.

/*
手順7   レプリケーションを開始します。

マスター・グループの作成、レプリケーション・オブジェクトの追加、レプリケーション・サポートの生成および追加マスター・データベースの追加を行った後で、レプリケーション・アクティビティを開始する必要があります。RESUME_MASTER_ACTIVITYプロシージャを使用して、指定したマスター・グループのレプリケーションをオンにします。

*/

BEGIN 
   DBMS_REPCAT.RESUME_MASTER_ACTIVITY (
      gname => 'hr_repg'); 
END;
/

SET ECHO OFF

SPOOL OFF

/************************* END OF SCRIPT **********************************/