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

前
 
次
 

2 レプリケーション・サイトの構成

この章では、レプリケーション・マネージメントAPIを使用して、マスター・サイトとマテリアライズド・ビュー・レプリケーション・サイトを設定する方法を説明します。

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

レプリケーション・サイト設定の概要

レプリケーション環境を構築する前に、その環境に関係するサイトを設定する必要があります。図2-2図2-3に示すように、マスター・サイトとマテリアライズド・ビュー・サイトでは設定方法が異なります。

このマニュアルの例では、次のデータベースを使用します。

  • orc1.example.com

  • orc2.example.com

  • orc3.example.com

  • orc4.example.com

  • orc5.example.com

  • mv1.example.com

  • mv2.example.com

第2章から第6章では、図2-1に示すレプリケーション環境で作業します。この章では、指示に従ってこの環境を構築していきます。mv2.example.commv1.example.comマテリアライズド・ビューに基づいたマテリアライズド・ビューであり、複数層のマテリアライズド・ビュー環境を構築することに注意してください。図2-1の矢印はデータベース・リンクを表しています。

図2-1 3つのマスター・サイトと2つのマテリアライズド・ビュー・サイト

図2-1の説明が続きます。
「図2-1 3つのマスター・サイトと2つのマテリアライズド・ビュー・サイト」の説明

新しいマスター・サイトを構築する場合は図2-2の手順、新しいマテリアライズド・ビュー・サイトを構築する場合は図2-3の手順に従います。

図2-2 マスター・サイトの設定

図2-2の説明が続きます。
「図2-2 マスター・サイトの設定」の説明

マスター・サイトの設定

次の項では、サンプル・レプリケーション環境にorc1.example.comorc2.example.comおよびorc3.example.comの3つのマスター・サイトを設定する手順について説明します。マスター・サイトを設定する前に、3つのすべてのデータベースが相互に通信できるようにネットワークおよびOracle Netを構成します。


注意:

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

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

orc1.example.comの設定

次に示す手順に従って、orc1.example.comマスター・サイトを設定します。

手順1   SYSTEMとしてorc1.example.comのマスター・サイトに接続します。

SYSTEMとして、レプリケーションを設定するデータベースに接続します。orc1.example.comの設定を終えてから、orc2.example.comサイトの手順1およびorc3.example.comサイトの手順1を再開します。

*/

SET ECHO ON

SPOOL setup_masters.out

CONNECT system@orc1.example.com

/*
手順2   orc1.example.comのレプリケーション管理者を作成します。

レプリケーション管理者には、レプリケーション環境の構築および管理に必要な権限が付与されます。レプリケーション管理者は、レプリケーション環境に関係するデータベースごとに配置します。

*/

ACCEPT password PROMPT 'Enter password for user: ' HIDE

CREATE USER repadmin IDENTIFIED BY &password;

/*

注意:

管理ユーザーの適切なパスワードを入力します。


関連項目:

パスワードを選択する場合のガイドラインについては、『Oracle Databaseセキュリティ・ガイド』を参照してください。

手順3   orc1.example.comのレプリケーション管理者に権限を付与します。

レプリケーション管理者に強力な権限を付与してレプリケーション環境を構築し、管理するには、GRANT_ADMIN_ANY_SCHEMAプロシージャを実行します。

*/

BEGIN
   DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_SCHEMA (
      username => 'repadmin');
END;
/

/*

repadminが任意のレプリケート表に対するマテリアライズド・ビュー・ログを作成できるようにするには、repadminに対しCOMMENT ANY TABLEおよびLOCK ANY TABLEを付与します。

*/

GRANT COMMENT ANY TABLE TO repadmin;
GRANT LOCK ANY TABLE TO repadmin;

/*

repadminがOracle Enterprise ManagerのAdvanced Replicationインタフェースに接続できるようにするには、repadminSELECT ANY DICTIONARYを付与します。

*/

GRANT SELECT ANY DICTIONARY TO repadmin;

/*
手順4   orc1.example.comでプロパゲータを登録します。

プロパゲータは、遅延トランザクション・キューを他のマスター・サイトに伝播します。

*/

BEGIN
   DBMS_DEFER_SYS.REGISTER_PROPAGATOR (
      username => 'repadmin');
END;
/

/*
手順5    orc1.example.comで受信者を登録します。

受信者は、他のマスター・サイトからプロパゲータにより伝播された遅延トランザクションを受信します。

*/

BEGIN
   DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP (
      username => 'repadmin',
      privilege_type => 'receiver',
      list_of_gnames => NULL);
END;
/

/*
手順6   マスター・サイトorc1.example.comでスケジュール・パージを行います。

チェック中の遅延トランザクション・キューのサイズを一定に保つためには、完了した遅延トランザクションをパージします。SCHEDULE_PURGEプロシージャにより、パージ・プロセスが自動化されます。レプリケーション管理者としてこのプロシージャを実行します。


注意:

日付式はNEXT_DATEおよびINTERVALのパラメータとして使用します。次に例を示します。
  • 現在の日付はSYSDATEと指定します。

  • 1時間の間隔はSYSDATE + 1/24と指定します。

  • 7日間の間隔はSYSDATE + 7と指定します。


*/

CONNECT repadmin@orc1.example.com

BEGIN
   DBMS_DEFER_SYS.SCHEDULE_PURGE (
      next_date => SYSDATE,
      interval => 'SYSDATE + 1/24',
      delay_seconds => 0);
END;
/

/*

関連項目:

日付式の詳細は、『Oracle Database管理者ガイド』および『Oracle Database SQL言語リファレンス』を参照してください。

手順7   orc1.example.comにプロキシ・マスター・サイト・ユーザーを作成します。

このマスター・サイトに基づいてマテリアライズド・ビュー・サイトを構築する場合は、マテリアライズド・ビュー・サイトのユーザーに該当するorc1.example.comにプロキシ・マスター・サイト・ユーザーを作成します。

プロキシ・マテリアライズド・ビュー管理者を作成します。

プロキシ・マテリアライズド・ビュー管理者は、マテリアライズド・ビュー・サイトのマテリアライズド・ビュー管理者の代理としてターゲット・マスター・サイトでタスクを実行します。

*/

CONNECT system@orc1.example.com

CREATE USER proxy_mviewadmin IDENTIFIED BY &password;

BEGIN
   DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP (
      username => 'proxy_mviewadmin',
      privilege_type => 'proxy_snapadmin',
      list_of_gnames => NULL);
END;
/

-- Place GRANT SELECT_CATALOG_ROLE statement here if necessary.

/*

マテリアライズド・ビュー・サイトのマテリアライズド・ビュー管理者が、Oracle Enterprise ManagerのAdvanced Replicationインタフェースを使用した管理操作を行えるようにするには、proxy_mviewadminSELECT_CATALOG_ROLEを付与します。

GRANT SELECT_CATALOG_ROLE TO proxy_mviewadmin;

Oracle Enterprise ManagerでAdvanced Replicationインタフェースを使用しない場合は、この権限をproxy_mviewadminに付与する必要はありません。ただし、Advanced Replicationインタフェースを使用する場合は、GRANT文を、前行のREGISTER_USER_REPGROUP文の直後の行に移動します。

プロキシ・リフレッシャを作成します。

プロキシ・リフレッシャはマスター・サイトで、マテリアライズド・ビュー・サイトのリフレッシャの代理としてタスクを実行します。

*/

CREATE USER proxy_refresher IDENTIFIED BY &password;

GRANT CREATE SESSION TO proxy_refresher;
GRANT SELECT ANY TABLE TO proxy_refresher;

/*

orc2.example.comの設定

次に示す手順に従って、orc2.example.comマスター・サイトを設定します。

手順1   SYSTEMとしてorc2.example.comに接続します。

SYSTEMとして、レプリケーションを設定するデータベースに接続します。orc2.example.comの設定を終えてから、orc3.example.comサイトの手順1を開始します。

*/

CONNECT system@orc2.example.com

/*
手順2   orc2.example.comのレプリケーション管理者を作成します。

レプリケーション管理者には、レプリケーション環境の構築および管理に必要な権限が付与されます。レプリケーション管理者は、レプリケーション環境に関係するデータベースごとに配置します。

*/

CREATE USER repadmin IDENTIFIED BY &password;

/*

注意:

管理ユーザーの適切なパスワードを入力します。


関連項目:

パスワードを選択する場合のガイドラインについては、『Oracle Databaseセキュリティ・ガイド』を参照してください。

手順3   orc2.example.comのレプリケーション管理者に権限を付与します。

レプリケーション管理者に強力な権限を付与してレプリケーション環境を構築し、管理するには、GRANT_ADMIN_ANY_SCHEMAプロシージャを実行します。

*/

BEGIN
   DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_SCHEMA (
      username => 'repadmin');
END;
/

/*

repadminが任意のレプリケート表に対するマテリアライズド・ビュー・ログを作成できるようにするには、repadminに対しCOMMENT ANY TABLEおよびLOCK ANY TABLE権限を付与します。

*/

GRANT COMMENT ANY TABLE TO repadmin;
GRANT LOCK ANY TABLE TO repadmin;

/*

repadminがOracle Enterprise ManagerのAdvanced Replicationインタフェースに接続できるようにするには、repadminSELECT ANY DICTIONARYを付与します。

*/

GRANT SELECT ANY DICTIONARY TO repadmin;

/*
手順4   orc2.example.comでプロパゲータを登録します。

プロパゲータは、遅延トランザクション・キューを他のマスター・サイトに伝播します。

*/

BEGIN
   DBMS_DEFER_SYS.REGISTER_PROPAGATOR (
      username => 'repadmin');
END;
/

/*
手順5   orc2.example.comで受信者を登録します。

受信者は、他のマスター・サイトからプロパゲータにより伝播された遅延トランザクションを受信します。

*/

BEGIN
   DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP (
      username => 'repadmin',
      privilege_type => 'receiver',
      list_of_gnames => NULL);
END;
/

/*
手順6   マスター・サイトorc2.example.comでスケジュール・パージを行います。

チェック中の遅延トランザクション・キューのサイズを一定に保つためには、完了した遅延トランザクションをパージします。SCHEDULE_PURGEプロシージャにより、パージ・プロセスが自動化されます。レプリケーション管理者としてこのプロシージャを実行します。

*/

CONNECT repadmin@orc2.example.com

BEGIN
   DBMS_DEFER_SYS.SCHEDULE_PURGE (
      next_date => SYSDATE,
      interval => 'SYSDATE + 1/24',
      delay_seconds => 0);
END;
/

/*
手順7   orc2.example.comにプロキシ・マスター・サイト・ユーザーを作成します。

このマスター・サイトに基づいてマテリアライズド・ビュー・サイトを構築する場合は、マテリアライズド・ビュー・サイトのユーザーに該当するorc2.example.comにプロキシ・マスター・サイト・ユーザーを作成します。

プロキシ・マテリアライズド・ビュー管理者を作成します。

プロキシ・マテリアライズド・ビュー管理者は、マテリアライズド・ビュー・サイトのマテリアライズド・ビュー管理者の代理としてターゲット・マスター・サイトでタスクを実行します。

*/

CONNECT system@orc2.example.com

CREATE USER proxy_mviewadmin IDENTIFIED BY &password;

BEGIN
   DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP (
      username => 'proxy_mviewadmin',
      privilege_type => 'proxy_snapadmin',
      list_of_gnames => NULL);
END;
/

-- Place GRANT SELECT_CATALOG_ROLE statement here if necessary.

/*

マテリアライズド・ビュー・サイトのマテリアライズド・ビュー管理者が、Oracle Enterprise ManagerのAdvanced Replicationインタフェースを使用した管理操作を行えるようにするには、proxy_mviewadminSELECT_CATALOG_ROLEを付与します。

*/

GRANT SELECT_CATALOG_ROLE TO proxy_mviewadmin;

/*

Oracle Enterprise ManagerでAdvanced Replicationインタフェースを使用しない場合は、この権限をproxy_mviewadminに付与する必要はありません。ただし、Advanced Replicationインタフェースを使用する場合は、GRANT文を、前行のREGISTER_USER_REPGROUP文の直後の行に移動します。

プロキシ・リフレッシャを作成します。

プロキシ・リフレッシャはマスター・サイトで、マテリアライズド・ビュー・サイトのリフレッシャの代理としてタスクを実行します。

*/

CREATE USER proxy_refresher IDENTIFIED BY &password;

GRANT CREATE SESSION TO proxy_refresher;
GRANT SELECT ANY TABLE TO proxy_refresher;

/*

orc3.example.comの設定

次に示す手順に従って、orc3.example.comマスター・サイトを設定します。

手順1   SYSTEMとしてorc3.example.comに接続します。

SYSTEMとして、レプリケーションを設定するデータベースに接続します。

*/

CONNECT system@orc3.example.com

/*
手順2   orc3.example.comのレプリケーション管理者を作成します。

レプリケーション管理者には、レプリケーション環境の構築および管理に必要な権限が付与されます。レプリケーション管理者は、レプリケーション環境に関係するデータベースごとに配置します。

*/

CREATE USER repadmin IDENTIFIED BY &password;

/*

注意:

管理ユーザーの適切なパスワードを入力します。


関連項目:

パスワードを選択する場合のガイドラインについては、『Oracle Databaseセキュリティ・ガイド』を参照してください。

手順3   orc3.example.comのレプリケーション管理者に権限を付与します。

レプリケーション管理者に強力な権限を付与してレプリケーション環境を構築し、管理するには、GRANT_ADMIN_ANY_SCHEMAプロシージャを実行します。

*/

BEGIN
   DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_SCHEMA (
      username => 'repadmin');
END;
/

/*

repadminが任意のレプリケート表に対するマテリアライズド・ビュー・ログを作成できるようにするには、repadminに対しCOMMENT ANY TABLEおよびLOCK ANY TABLEを付与します。

*/

GRANT COMMENT ANY TABLE TO repadmin;
GRANT LOCK ANY TABLE TO repadmin;

/*

repadminがOracle Enterprise ManagerのAdvanced Replicationインタフェースに接続できるようにするには、repadminSELECT ANY DICTIONARYを付与します。

*/

GRANT SELECT ANY DICTIONARY TO repadmin;

/*
手順4   orc3.example.comでプロパゲータを登録します。

プロパゲータは、遅延トランザクション・キューを他のマスター・サイトに伝播します。

*/

BEGIN
   DBMS_DEFER_SYS.REGISTER_PROPAGATOR (
      username => 'repadmin');
END;
/

/*
手順5   orc3.example.comで受信者を登録します。

受信者は、他のマスター・サイトからプロパゲータにより伝播された遅延トランザクションを受信します。

*/

BEGIN
   DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP (
      username => 'repadmin',
      privilege_type => 'receiver',
      list_of_gnames => NULL);
END;
/

/*
手順6   マスター・サイトorc3.example.comでスケジュール・パージを行います。

チェック中の遅延トランザクション・キューのサイズを一定に保つためには、完了した遅延トランザクションをパージします。SCHEDULE_PURGE APIにより、パージ・プロセスが自動化されます。レプリケーション管理者としてこのプロシージャを実行します。

*/

CONNECT repadmin@orc3.example.com

BEGIN
   DBMS_DEFER_SYS.SCHEDULE_PURGE (
      next_date => SYSDATE,
      interval => 'SYSDATE + 1/24',
      delay_seconds => 0);
END;
/

/*
手順7   orc1.example.comにプロキシ・マスター・サイト・ユーザーを作成します。

このマスター・サイトに基づいてマテリアライズド・ビュー・サイトを構築する場合は、マテリアライズド・ビュー・サイトのユーザーに該当するorc1.example.comにプロキシ・マスター・サイト・ユーザーを作成します。

プロキシ・マテリアライズド・ビュー管理者を作成します。

プロキシ・マテリアライズド・ビュー管理者は、マテリアライズド・ビュー・サイトのマテリアライズド・ビュー管理者の代理としてターゲット・マスター・サイトでタスクを実行します。

*/

CONNECT system@orc3.example.com

CREATE USER proxy_mviewadmin IDENTIFIED BY &password;

BEGIN
   DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP (
      username => 'proxy_mviewadmin',
      privilege_type => 'proxy_snapadmin',
      list_of_gnames => NULL);
END;
/

-- Place GRANT SELECT_CATALOG_ROLE statement here if necessary.

/*

マテリアライズド・ビュー・サイトのマテリアライズド・ビュー管理者が、Oracle Enterprise ManagerのAdvanced Replicationインタフェースを使用した管理操作を行えるようにするには、proxy_mviewadminSELECT_CATALOG_ROLEを付与します。

*/

GRANT SELECT_CATALOG_ROLE TO proxy_mviewadmin;

/*

Oracle Enterprise ManagerでAdvanced Replicationインタフェースを使用しない場合は、この権限をproxy_mviewadminに付与する必要はありません。ただし、Advanced Replicationインタフェースを使用する場合は、GRANT文を、前行のREGISTER_USER_REPGROUP文の直後の行に移動します。

プロキシ・リフレッシャを作成します。

プロキシ・リフレッシャはマスター・サイトで、マテリアライズド・ビュー・サイトのリフレッシャの代理としてタスクを実行します。

*/

CREATE USER proxy_refresher IDENTIFIED BY &password;

GRANT CREATE SESSION TO proxy_refresher;
GRANT SELECT ANY TABLE TO proxy_refresher;

/*

マスター・サイト間のスケジュール・リンクの作成

次に示す手順に従って、マスター・サイト間のスケジュール・リンクを作成します。

手順1   マスター・サイト間でデータベース・リンクを作成します。

データベース・リンクは必要な配布メカニズムを備えていて、複数のレプリケーション・サイト間でデータをレプリケートできます。プライベート・データベース・リンクを作成する前に、各プライベート・データベース・リンクが使用するパブリック・データベース・リンクを作成する必要があります。次に、設定した各マスター・サイトのすべてのレプリケーション管理者間のデータベース・リンクを作成します。


関連項目:

データベース・リンクの詳細は、『Oracle Database管理者ガイド』を参照してください。

*/

CONNECT system@orc1.example.com
CREATE PUBLIC DATABASE LINK orc2.example.com USING 'orc2.example.com';
CREATE PUBLIC DATABASE LINK orc3.example.com USING 'orc3.example.com';

CONNECT repadmin@orc1.example.com
CREATE DATABASE LINK orc2.example.com CONNECT TO repadmin 
 IDENTIFIED BY &password;
CREATE DATABASE LINK orc3.example.com CONNECT TO repadmin 
 IDENTIFIED BY &password;

CONNECT system@orc2.example.com
CREATE PUBLIC DATABASE LINK orc1.example.com USING 'orc1.example.com';
CREATE PUBLIC DATABASE LINK orc3.example.com USING 'orc3.example.com';

CONNECT repadmin@orc2.example.com
CREATE DATABASE LINK orc1.example.com CONNECT TO repadmin 
 IDENTIFIED BY &password;
CREATE DATABASE LINK orc3.example.com CONNECT TO repadmin 
 IDENTIFIED BY &password;

CONNECT system@orc3.example.com
CREATE PUBLIC DATABASE LINK orc1.example.com USING 'orc1.example.com';
CREATE PUBLIC DATABASE LINK orc2.example.com USING 'orc2.example.com';

CONNECT repadmin@orc3.example.com
CREATE DATABASE LINK orc1.example.com CONNECT TO repadmin 
 IDENTIFIED BY &password;
CREATE DATABASE LINK orc2.example.com CONNECT TO repadmin 
 IDENTIFIED BY &password;

/*
手順2   各データベース・リンクのスケジュールを定義してスケジュール・リンクを作成します。

SCHEDULE_PUSHプロシージャを実行するときは、データベース・リンクを定義してスケジュール・リンクを作成します。スケジュール・リンクは、遅延トランザクション・キューが他のマスター・サイトの各々に伝播される頻度を決定します。手順1で作成した各データベース・リンクに対してSCHEDULE_PUSHプロシージャを実行する必要があります。データベース・リンクは、SCHEDULE_PUSHプロシージャの接続先パラメータで指定します。

Oracleの非同期レプリケーション・メカニズムを使用する場合でも、スケジュール・リンクを構成して、連続的、リアルタイムなレプリケーションをシミュレートできます。この例におけるスケジュール・リンクでは、連続的なレプリケーションをシミュレートします。


関連項目:

連続的なレプリケーションのシミュレーションの詳細は、『Oracle Databaseアドバンスト・レプリケーション』を参照してください。

*/

CONNECT repadmin@orc1.example.com

BEGIN
   DBMS_DEFER_SYS.SCHEDULE_PUSH (
      destination => 'orc2.example.com',
      interval => 'SYSDATE + (1/144)',
      next_date => SYSDATE,
      parallelism => 1,
      execution_seconds => 1500,
      delay_seconds => 1200);
END;
/

BEGIN
   DBMS_DEFER_SYS.SCHEDULE_PUSH (
      destination => 'orc3.example.com',
      interval => 'SYSDATE + (1/144)',
      next_date => SYSDATE,
      parallelism => 1,
      execution_seconds => 1500,
      delay_seconds => 1200);
END;
/

CONNECT repadmin@orc2.example.com

BEGIN
   DBMS_DEFER_SYS.SCHEDULE_PUSH (
      destination => 'orc1.example.com',
      interval => 'SYSDATE + (1/144)',
      next_date => SYSDATE,
      parallelism => 1,
      execution_seconds => 1500,
      delay_seconds => 1200);
END;
/

BEGIN
   DBMS_DEFER_SYS.SCHEDULE_PUSH (
      destination => 'orc3.example.com',
      interval => 'SYSDATE + (1/144)',
      next_date => SYSDATE,
      parallelism => 1,
      execution_seconds => 1500,
      delay_seconds => 1200);
END;
/

CONNECT repadmin@orc3.example.com

BEGIN
   DBMS_DEFER_SYS.SCHEDULE_PUSH (
      destination => 'orc1.example.com',
      interval => 'SYSDATE + (1/144)',
      next_date => SYSDATE,
      parallelism => 1,
      execution_seconds => 1500,
      delay_seconds => 1200);
END;
/

BEGIN
   DBMS_DEFER_SYS.SCHEDULE_PUSH (
      destination => 'orc2.example.com',
      interval => 'SYSDATE + (1/144)',
      next_date => SYSDATE,
      parallelism => 1,
      execution_seconds => 1500,
      delay_seconds => 1200);
END;
/

SET ECHO OFF

SPOOL OFF

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

マテリアライズド・ビュー・サイトの設定

図2-3 マテリアライズド・ビュー・サイトの設定

図2-3の説明が続きます。
「図2-3 マテリアライズド・ビュー・サイトの設定」の説明

mv1.example.comの設定

次の手順を実行してmv1.example.comマスター・マテリアライズド・ビュー・サイトを設定します。mv1.example.comは、mv2.example.comがこれに基づくことになるため、マスター・マテリアライズド・ビュー・サイトとなります。マテリアライズド・ビュー・サイトを設定する前に、mv1.example.comorc1.example.comと通信でき、mv2.example.commv1.example.comと通信できるようにネットワークおよびOracle Netを構成してください。


注意:

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

/************************* BEGINNING OF SCRIPT ******************************
手順1   SYSTEMとしてmv1.example.comのマテリアライズド・ビュー・サイトに接続します。

SYSTEMとして、マテリアライズド・ビュー・サイトとして設定するデータベースに接続します。

*/

SET ECHO ON

SPOOL setup_mvs.out

CONNECT system@mv1.example.com

/*
手順2   マテリアライズド・ビュー・サイト・ユーザーをmv1.example.comに作成します。

マテリアライズド・ビュー・サイトには複数のユーザーを作成します。必要なユーザーは、次のとおりです。

  • マテリアライズド・ビュー管理者

  • プロパゲータ

  • リフレッシャ

  • 受信者(サイトがmv1.example.comのように、他のマテリアライズド・ビューのマスター・マテリアライズド・ビュー・サイトとして機能する場合)

次のタスクを実行して、これらのユーザーを作成します。

マテリアライズド・ビュー管理者を作成します。

マテリアライズド・ビュー管理者は、マテリアライズド・ビュー・サイトの作成と管理を行います。マテリアライズド・ビュー管理者に適切な権限を付与するには、GRANT_ADMIN_ANY_SCHEMAプロシージャを実行します。

*/

ACCEPT password PROMPT 'Enter password for user: ' HIDE

CREATE USER mviewadmin IDENTIFIED BY &password;

BEGIN
   DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_SCHEMA (
      username => 'mviewadmin');
END;
/

GRANT COMMENT ANY TABLE TO mviewadmin;

GRANT LOCK ANY TABLE TO mviewadmin;

/*

mviewadminがOracle Enterprise ManagerのAdvanced Replicationインタフェースに接続できるようにするには、mviewadminSELECT ANY DICTIONARYを付与します。

*/

GRANT SELECT ANY DICTIONARY TO mviewadmin;

/*

プロパゲータを作成します。

プロパゲータは、遅延トランザクション・キューをターゲット・マスター・サイトに伝播します。

*/

CREATE USER propagator IDENTIFIED BY &password;

BEGIN
   DBMS_DEFER_SYS.REGISTER_PROPAGATOR (
      username => 'propagator');
END;
/

/*

リフレッシャを作成します。

リフレッシャは、マテリアライズド・ビュー・サイトに対するターゲット・マスター・サイトのレプリケート表に対する変更の取込みを行います。このユーザーは、1つ以上のマテリアライズド・ビューをリフレッシュします。mviewadminユーザーをリフレッシャとする場合、この手順は必須ではありません。

*/

CREATE USER refresher IDENTIFIED BY &password;

GRANT CREATE SESSION TO refresher;

GRANT ALTER ANY MATERIALIZED VIEW TO refresher;

/*

受信者を登録します。

受信者は、マテリアライズド・ビュー・サイトからプロパゲータにより伝播された遅延トランザクションを受信します。サイトが、他のマテリアライズド・ビュー・サイトのマスター・マテリアライズド・ビュー・サイトとして機能する場合のみ、受信者が必要です。

*/

BEGIN
   DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP (
      username => 'mviewadmin',
      privilege_type => 'receiver',
      list_of_gnames => NULL);
END;
/

/*

注意:

管理ユーザーの適切なパスワードを入力します。


関連項目:

パスワードを選択する場合のガイドラインについては、『Oracle Databaseセキュリティ・ガイド』を参照してください。

手順3   マスター・サイトへのデータベース・リンクを作成します。

パブリック・データベース・リンクを作成します。

*/

CONNECT system@mv1.example.com

CREATE PUBLIC DATABASE LINK orc1.example.com USING 'orc1.example.com';

/*

マテリアライズド・ビュー管理者のデータベース・リンクを作成します。

マテリアライズド・ビュー・サイトのマテリアライズド・ビュー管理者からマスター・サイトのプロキシ・マテリアライズド・ビュー管理者に至るデータベース・リンクを作成する必要があります。

*/

CONNECT mviewadmin@mv1.example.com;

CREATE DATABASE LINK orc1.example.com 
  CONNECT TO proxy_mviewadmin IDENTIFIED BY &password;

/*

プロパゲータ/受信者のデータベース・リンクを作成します。

マテリアライズド・ビュー・サイトのプロパゲータからマスター・サイトの受信者に至るデータベース・リンクを作成する必要があります。マスター・サイトの作成時に受信者は定義されています。

*/

CONNECT propagator@mv1.example.com

CREATE DATABASE LINK orc1.example.com 
  CONNECT TO repadmin IDENTIFIED BY &password;

/*

関連項目:

手順5

手順4   mv1.example.comマテリアライズド・ビュー・サイトでスケジュール・パージを行います。

チェック中の遅延トランザクション・キューのサイズを一定に保つためには、完了した遅延トランザクションをパージします。SCHEDULE_PURGEプロシージャにより、パージ・プロセスが自動化されます。マテリアライズド・ビュー・サイトに含まれるマテリアライズド・ビューが、読取り専用のみの場合は、このプロシージャを実行する必要はありません。

*/

CONNECT mviewadmin@mv1.example.com

BEGIN
   DBMS_DEFER_SYS.SCHEDULE_PURGE (
   next_date => SYSDATE,
   interval => 'SYSDATE + 1/24',
   delay_seconds => 0,
   rollback_segment => '');
END;
/

/*
手順5   mv1.example.comマテリアライズド・ビュー・サイトでスケジュール・プッシュを行います(オプション)。

マテリアライズド・ビュー・サイトがマスター・サイトと常時接続されている場合は、mv1.example.comマテリアライズド・ビュー・サイトでスケジュール・プッシュのオプションを選択できます。マテリアライズド・ビュー・サイトがマスター・サイトと長期間接続されていない場合は、スケジュール・プッシュは使用しないで必要に応じてリフレッシュを行ってください(スケジュール・プッシュはマスター・サイトを変更します)。

SCHEDULE_PUSHプロシージャは、遅延トランザクション・キューをターゲット・マスター・サイトに伝播するタイミングをスケジュール設定します。

*/

BEGIN
   DBMS_DEFER_SYS.SCHEDULE_PUSH (
      destination => 'orc1.example.com',
      interval => 'SYSDATE + 1/24',
      next_date => SYSDATE,
      stop_on_error => FALSE,
      delay_seconds => 0,
      parallelism => 0);
END;
/

/*
手順6   mv1.example.comマテリアライズド・ビュー・サイトでプロキシ・ユーザーを作成します。

プロキシ・マテリアライズド・ビュー管理者を作成します。

プロキシ・マテリアライズド・ビュー管理者は、このマテリアライズド・ビュー・サイトに基づいて、マテリアライズド・ビュー・サイトのマテリアライズド・ビュー管理者にかわってターゲット・マスター・マテリアライズド・ビュー・サイトのタスクを実行します。サイトが、他のマテリアライズド・ビュー・サイトのマスター・マテリアライズド・ビュー・サイトとして機能しない場合、このユーザーは必須ではありません。

*/

CONNECT system@mv1.example.com

CREATE USER proxy_mviewadmin IDENTIFIED BY &password;

BEGIN
   DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP (
      username => 'proxy_mviewadmin',
      privilege_type => 'proxy_snapadmin',
      list_of_gnames => NULL);
END;
/

-- Place GRANT SELECT_CATALOG_ROLE statement here if necessary.

/*

このマテリアライズド・ビュー・サイトに基づくマテリアライズド・ビュー・サイトのマテリアライズド・ビュー管理者が、Oracle Enterprise ManagerのAdvanced Replicationインタフェースを使用した管理操作を行えるようにするには、proxy_mviewadminSELECT_CATALOG_ROLEを付与します。

GRANT SELECT_CATALOG_ROLE TO proxy_mviewadmin;

Oracle Enterprise ManagerでAdvanced Replicationインタフェースを使用しない場合は、この権限をproxy_mviewadminに付与する必要はありません。ただし、Advanced Replicationインタフェースを使用する場合は、GRANT文を、前行のREGISTER_USER_REPGROUP文の直後の行に移動します。

プロキシ・リフレッシャを作成します。

プロキシ・リフレッシャは、このマテリアライズド・ビュー・サイトに基づいたマテリアライズド・ビュー・サイトのリフレッシャのかわりに、マスター・マテリアライズド・ビュー・サイトのタスクを実行します。サイトが、他のマテリアライズド・ビュー・サイトのマスター・マテリアライズド・ビュー・サイトとして機能しない場合、このユーザーは必須ではありません。

*/

CREATE USER proxy_refresher IDENTIFIED BY &password;

GRANT CREATE SESSION TO proxy_refresher;
GRANT SELECT ANY TABLE TO proxy_refresher;

/*

mv2.example.comの設定

次の手順に従って、mv2.example.comマテリアライズド・ビュー・サイトを設定します。mv2.example.comは、mv1.example.com、その他のマテリアライズド・ビューに基づいているため、複数層マテリアライズド・ビュー構成の一部です。

手順1   SYSTEMとしてレベル2マテリアライズド・ビュー・サイトmv2.example.comに接続します。

SYSTEMとして、レベル 2マテリアライズド・ビュー・サイトとして設定するデータベースに接続します。このサイト、mv2.example.comは、mv1.example.comに基づいたマテリアライズド・ビュー・サイトになります。

*/

CONNECT system@mv2.example.com

/*
手順2   レベル2マテリアライズド・ビュー・サイト・ユーザーをmv2.example.comに作成します。

レベル2マテリアライズド・ビュー・サイトには複数のユーザーを作成します。必要なユーザーは、次のとおりです。

  • マテリアライズド・ビュー管理者

  • プロパゲータ

  • リフレッシャ

次のタスクを実行して、これらのユーザーを作成します。

マテリアライズド・ビュー管理者を作成します。

マテリアライズド・ビュー管理者は、レベル2マテリアライズド・ビュー・サイトの作成と管理を行います。マテリアライズド・ビュー管理者に適切な権限を付与するには、GRANT_ADMIN_ANY_SCHEMAプロシージャを実行します。

*/

CREATE USER mviewadmin IDENTIFIED BY &password;

BEGIN
   DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_SCHEMA (
      username => 'mviewadmin');
END;
/

/*

mviewadminがOracle Enterprise ManagerのAdvanced Replicationインタフェースに接続できるようにするには、mviewadminSELECT ANY DICTIONARYを付与します。

*/

GRANT SELECT ANY DICTIONARY TO mviewadmin;

/*

プロパゲータを作成します。

プロパゲータは、遅延トランザクション・キューをターゲット・マスター・マテリアライズド・ビュー・サイトに伝播します。

*/

CREATE USER propagator IDENTIFIED BY &password;

BEGIN
   DBMS_DEFER_SYS.REGISTER_PROPAGATOR (
      username => 'propagator');
END;
/

/*

リフレッシャを作成します。

リフレッシャは、レベル2マテリアライズド・ビュー・サイトに対するターゲット・マスター・マテリアライズド・ビュー・サイトのレプリケート・マテリアライズド・ビューに対する変更の取込みを行います。

*/

CREATE USER refresher IDENTIFIED BY &password;

GRANT CREATE SESSION TO refresher;
GRANT ALTER ANY MATERIALIZED VIEW TO refresher;

/*

注意:

管理ユーザーの適切なパスワードを入力します。


関連項目:

パスワードを選択する場合のガイドラインについては、『Oracle Databaseセキュリティ・ガイド』を参照してください。

手順3   マスター・マテリアライズド・ビュー・サイトへのデータベース・リンクを作成します。

パブリック・データベース・リンクを作成します。

*/

CONNECT system@mv2.example.com

CREATE PUBLIC DATABASE LINK mv1.example.com USING 'mv1.example.com';

/*

マテリアライズド・ビュー管理者のデータベース・リンクを作成します。

レベル2マテリアライズド・ビュー・サイトのマテリアライズド・ビュー管理者からマスター・サイトのプロキシ・マテリアライズド・ビュー管理者に至るデータベース・リンクを作成する必要があります。

*/

CONNECT mviewadmin@mv2.example.com;

CREATE DATABASE LINK mv1.example.com 
  CONNECT TO proxy_mviewadmin IDENTIFIED BY &password;

/*

プロパゲータ/受信者のデータベース・リンクを作成します。

レベル2マテリアライズド・ビュー・サイトのプロパゲータからマスター・マテリアライズド・ビュー・サイトの受信者に至るデータベース・リンクを作成する必要があります。マスター・マテリアライズド・ビュー・サイトの作成時に受信者は定義されています。

*/

CONNECT propagator@mv2.example.com

CREATE DATABASE LINK mv1.example.com 
  CONNECT TO mviewadmin IDENTIFIED BY &password;

/*
手順4   mv2.example.comのレベル2マテリアライズド・ビュー・サイトでスケジュール・パージを行います。

チェック中の遅延トランザクション・キューのサイズを一定に保つためには、完了した遅延トランザクションをパージします。SCHEDULE_PURGEプロシージャにより、パージ・プロセスが自動化されます。レベル2マテリアライズド・ビュー・サイトに含まれるマテリアライズド・ビューが、読取り専用のみの場合は、このプロシージャを実行する必要はありません。

*/

CONNECT mviewadmin@mv2.example.com

BEGIN
   DBMS_DEFER_SYS.SCHEDULE_PURGE (
     next_date => SYSDATE,
     interval => 'SYSDATE + 1/24',
     delay_seconds => 0,
     rollback_segment => '');
END;
/

/*
手順5   mv2.example.comマテリアライズド・ビュー・サイトでスケジュール・プッシュを行います(オプション)。

マテリアライズド・ビュー・サイトがマスター・マテリアライズド・ビュー・サイトと常時接続されている場合は、mv2.example.comマテリアライズド・ビュー・サイトでスケジュール・プッシュのオプションを選択できます。マテリアライズド・ビュー・サイトがマスター・マテリアライズド・ビュー・サイトと長期間接続されていない場合は、スケジュール・プッシュは使用しないで必要に応じてリフレッシュを行ってください(スケジュール・プッシュはマスター・マテリアライズド・ビュー・サイトを変更します)。

SCHEDULE_PUSHプロシージャは、遅延トランザクション・キューをターゲット・マスター・マテリアライズド・ビュー・サイトに伝播するタイミングをスケジュール設定します。

*/

CONNECT mviewadmin@mv2.example.com

BEGIN
   DBMS_DEFER_SYS.SCHEDULE_PUSH (
      destination => 'mv1.example.com',
      interval => 'SYSDATE + 1/24',
      next_date => SYSDATE,
      stop_on_error => FALSE,
      delay_seconds => 0,
      parallelism => 0);
END;
/

SET ECHO OFF

SPOOL OFF

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