ヘッダーをスキップ
Oracle Databaseアドバンスト・レプリケーション・マネージメントAPIリファレンス
11g リリース1(11.1)
E05779-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   マスター・サイトでスキーマを作成します。

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