この章では、レプリケーション・マネージメント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.com
はmv1.example.com
マテリアライズド・ビューに基づいたマテリアライズド・ビューであり、複数層のマテリアライズド・ビュー環境を構築することに注意してください。図2-1の矢印はデータベース・リンクを表しています。
新しいマスター・サイトを構築する場合は図2-2の手順、新しいマテリアライズド・ビュー・サイトを構築する場合は図2-3の手順に従います。
次の項では、サンプル・レプリケーション環境にorc1.example.com
、orc2.example.com
およびorc3.example.com
の3つのマスター・サイトを設定する手順について説明します。マスター・サイトを設定する前に、3つのすべてのデータベースが相互に通信できるようにネットワークおよびOracle Netを構成します。
注意: このドキュメントをオンラインで参照している場合は、次の「BEGINNING OF SCRIPT」の行から「END OF SCRIPT」の行までのテキストをテキスト・エディタにコピーして編集し、使用している環境に適したスクリプトを作成します。 |
/************************* BEGINNING OF SCRIPT ******************************
次に示す手順に従って、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 /*
レプリケーション管理者には、レプリケーション環境の構築および管理に必要な権限が付与されます。レプリケーション管理者は、レプリケーション環境に関係するデータベースごとに配置します。
*/ ACCEPT password PROMPT 'Enter password for user: ' HIDE CREATE USER repadmin IDENTIFIED BY &password; /*
注意: 管理ユーザーの適切なパスワードを入力します。 |
関連項目: パスワードを選択する場合のガイドラインについては、『Oracle Databaseセキュリティ・ガイド』を参照してください。 |
レプリケーション管理者に強力な権限を付与してレプリケーション環境を構築し、管理するには、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 Cloud ControlのAdvanced Replicationインタフェースに接続できるようにするには、repadmin
にSELECT
ANY
DICTIONARY
を付与します。
*/ GRANT SELECT ANY DICTIONARY TO repadmin; /*
プロパゲータは、遅延トランザクション・キューを他のマスター・サイトに伝播します。
*/ BEGIN DBMS_DEFER_SYS.REGISTER_PROPAGATOR ( username => 'repadmin'); END; / /*
受信者は、他のマスター・サイトからプロパゲータにより伝播された遅延トランザクションを受信します。
*/ BEGIN DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP ( username => 'repadmin', privilege_type => 'receiver', list_of_gnames => NULL); END; / /*
チェック中の遅延トランザクション・キューのサイズを一定に保つためには、完了した遅延トランザクションをパージします。SCHEDULE_PURGE
プロシージャにより、パージ・プロセスが自動化されます。レプリケーション管理者としてこのプロシージャを実行します。
注意: 日付式はNEXT_DATE およびINTERVAL のパラメータとして使用します。次に例を示します。
|
*/ 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言語リファレンス』を参照してください。 |
このマスター・サイトに基づいてマテリアライズド・ビュー・サイトを構築する場合は、マテリアライズド・ビュー・サイトのユーザーに該当する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 Cloud ControlのAdvanced Replicationインタフェースを使用した管理操作を行えるようにするには、proxy_mviewadmin
にSELECT_CATALOG_ROLE
を付与します。
GRANT SELECT_CATALOG_ROLE TO proxy_mviewadmin;
Oracle Enterprise Manager Cloud Controlで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
マスター・サイトを設定します。
SYSTEM
として、レプリケーションを設定するデータベースに接続します。orc2.example.com
の設定を終えてから、orc3.example.com
サイトの手順1を開始します。
*/ CONNECT system@orc2.example.com /*
レプリケーション管理者には、レプリケーション環境の構築および管理に必要な権限が付与されます。レプリケーション管理者は、レプリケーション環境に関係するデータベースごとに配置します。
*/ CREATE USER repadmin IDENTIFIED BY &password; /*
注意: 管理ユーザーの適切なパスワードを入力します。 |
関連項目: パスワードを選択する場合のガイドラインについては、『Oracle Databaseセキュリティ・ガイド』を参照してください。 |
レプリケーション管理者に強力な権限を付与してレプリケーション環境を構築し、管理するには、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 Cloud ControlのAdvanced Replicationインタフェースに接続できるようにするには、repadmin
にSELECT
ANY
DICTIONARY
を付与します。
*/ GRANT SELECT ANY DICTIONARY TO repadmin; /*
プロパゲータは、遅延トランザクション・キューを他のマスター・サイトに伝播します。
*/ BEGIN DBMS_DEFER_SYS.REGISTER_PROPAGATOR ( username => 'repadmin'); END; / /*
受信者は、他のマスター・サイトからプロパゲータにより伝播された遅延トランザクションを受信します。
*/ BEGIN DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP ( username => 'repadmin', privilege_type => 'receiver', list_of_gnames => NULL); END; / /*
チェック中の遅延トランザクション・キューのサイズを一定に保つためには、完了した遅延トランザクションをパージします。SCHEDULE_PURGE
プロシージャにより、パージ・プロセスが自動化されます。レプリケーション管理者としてこのプロシージャを実行します。
*/ CONNECT repadmin@orc2.example.com BEGIN DBMS_DEFER_SYS.SCHEDULE_PURGE ( next_date => SYSDATE, interval => 'SYSDATE + 1/24', delay_seconds => 0); END; / /*
このマスター・サイトに基づいてマテリアライズド・ビュー・サイトを構築する場合は、マテリアライズド・ビュー・サイトのユーザーに該当する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 Cloud ControlのAdvanced Replicationインタフェースを使用した管理操作を行えるようにするには、proxy_mviewadmin
にSELECT_CATALOG_ROLE
を付与します。
*/ GRANT SELECT_CATALOG_ROLE TO proxy_mviewadmin; /*
Oracle Enterprise Manager Cloud Controlで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
マスター・サイトを設定します。
SYSTEM
として、レプリケーションを設定するデータベースに接続します。
*/ CONNECT system@orc3.example.com /*
レプリケーション管理者には、レプリケーション環境の構築および管理に必要な権限が付与されます。レプリケーション管理者は、レプリケーション環境に関係するデータベースごとに配置します。
*/ CREATE USER repadmin IDENTIFIED BY &password; /*
注意: 管理ユーザーの適切なパスワードを入力します。 |
関連項目: パスワードを選択する場合のガイドラインについては、『Oracle Databaseセキュリティ・ガイド』を参照してください。 |
レプリケーション管理者に強力な権限を付与してレプリケーション環境を構築し、管理するには、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 Cloud ControlのAdvanced Replicationインタフェースに接続できるようにするには、repadmin
にSELECT
ANY
DICTIONARY
を付与します。
*/ GRANT SELECT ANY DICTIONARY TO repadmin; /*
プロパゲータは、遅延トランザクション・キューを他のマスター・サイトに伝播します。
*/ BEGIN DBMS_DEFER_SYS.REGISTER_PROPAGATOR ( username => 'repadmin'); END; / /*
受信者は、他のマスター・サイトからプロパゲータにより伝播された遅延トランザクションを受信します。
*/ BEGIN DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP ( username => 'repadmin', privilege_type => 'receiver', list_of_gnames => NULL); END; / /*
チェック中の遅延トランザクション・キューのサイズを一定に保つためには、完了した遅延トランザクションをパージします。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; / /*
このマスター・サイトに基づいてマテリアライズド・ビュー・サイトを構築する場合は、マテリアライズド・ビュー・サイトのユーザーに該当する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 Cloud ControlのAdvanced Replicationインタフェースを使用した管理操作を行えるようにするには、proxy_mviewadmin
にSELECT_CATALOG_ROLE
を付与します。
*/ GRANT SELECT_CATALOG_ROLE TO proxy_mviewadmin; /*
Oracle Enterprise Manager Cloud Controlで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; /*
次に示す手順に従って、マスター・サイト間のスケジュール・リンクを作成します。
データベース・リンクは必要な配布メカニズムを備えていて、複数のレプリケーション・サイト間でデータをレプリケートできます。プライベート・データベース・リンクを作成する前に、各プライベート・データベース・リンクが使用するパブリック・データベース・リンクを作成する必要があります。次に、設定した各マスター・サイトのすべてのレプリケーション管理者間のデータベース・リンクを作成します。
関連項目: データベース・リンクの詳細は、『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; /*
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***********************************/
次の手順を実行してmv1.example.com
マスター・マテリアライズド・ビュー・サイトを設定します。mv1.example.com
は、mv2.example.com
がこれに基づくことになるため、マスター・マテリアライズド・ビュー・サイトとなります。マテリアライズド・ビュー・サイトを設定する前に、mv1.example.com
がorc1.example.com
と通信でき、mv2.example.com
がmv1.example.com
と通信できるようにネットワークおよびOracle Netを構成してください。
注意: このドキュメントをオンラインで参照している場合は、次の「BEGINNING OF SCRIPT」の行から「END OF SCRIPT」の行までのテキストをテキスト・エディタにコピーして編集し、使用している環境に適したスクリプトを作成します。 |
/************************* BEGINNING OF SCRIPT ******************************
SYSTEM
として、マテリアライズド・ビュー・サイトとして設定するデータベースに接続します。
*/ SET ECHO ON SPOOL setup_mvs.out CONNECT system@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 Cloud ControlのAdvanced Replicationインタフェースに接続できるようにするには、mviewadmin
にSELECT
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セキュリティ・ガイド』を参照してください。 |
パブリック・データベース・リンクを作成します。
*/ 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; /*
チェック中の遅延トランザクション・キューのサイズを一定に保つためには、完了した遅延トランザクションをパージします。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; / /*
マテリアライズド・ビュー・サイトがマスター・サイトと常時接続されている場合は、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; / /*
プロキシ・マテリアライズド・ビュー管理者を作成します。
プロキシ・マテリアライズド・ビュー管理者は、このマテリアライズド・ビュー・サイトに基づいて、マテリアライズド・ビュー・サイトのマテリアライズド・ビュー管理者にかわってターゲット・マスター・マテリアライズド・ビュー・サイトのタスクを実行します。サイトが、他のマテリアライズド・ビュー・サイトのマスター・マテリアライズド・ビュー・サイトとして機能しない場合、このユーザーは必須ではありません。
*/ 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 Cloud ControlのAdvanced Replicationインタフェースを使用した管理操作を行えるようにするには、proxy_mviewadmin
にSELECT_CATALOG_ROLE
を付与します。
GRANT SELECT_CATALOG_ROLE TO proxy_mviewadmin;
Oracle Enterprise Manager Cloud Controlで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
は、mv1.example.com
、その他のマテリアライズド・ビューに基づいているため、複数層マテリアライズド・ビュー構成の一部です。
SYSTEM
として、レベル 2マテリアライズド・ビュー・サイトとして設定するデータベースに接続します。このサイト、mv2.example.com
は、mv1.example.com
に基づいたマテリアライズド・ビュー・サイトになります。
*/ CONNECT system@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 Cloud ControlのAdvanced Replicationインタフェースに接続できるようにするには、mviewadmin
にSELECT
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セキュリティ・ガイド』を参照してください。 |
パブリック・データベース・リンクを作成します。
*/ 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; /*
チェック中の遅延トランザクション・キューのサイズを一定に保つためには、完了した遅延トランザクションをパージします。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; / /*
マテリアライズド・ビュー・サイトがマスター・マテリアライズド・ビュー・サイトと常時接続されている場合は、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 **********************************/