この章では、レプリケーション・マネージメントAPIを使用して、デプロイメント・テンプレートを作成する方法を説明します。
この章には、次の項が含まれます。
マテリアライズド・ビュー環境を構築する前に、マスター・サイトの設定、マスター・グループの作成および目的のマテリアライズド・ビュー・サイトの設定を行います。また、作成したマテリアライズド・ビュー・サイトでのアクティビティによって、マスター・サイトで競合が発生する可能性がある場合は、マテリアライズド・ビュー・グループを作成する前に、マテリアライズド・ビューのマスター表に対して競合解消を設定します。
Oracleで提供されるデプロイメント・テンプレートを使用すると、データベース管理者はマテリアライズド・ビュー環境をパッケージ化して、その配布とインストールを簡単かつ安全に行ったり、カスタマイズしたりできます。デプロイメント・テンプレートは、1つのマテリアライズド・ビューと固定データ・セットのみで単純に構成することも、数百のマテリアライズド・ビューと1つ以上の変数に基づく動的データ・セットで複雑に構成することもできます。この目的は、環境を1回定義して、必要に応じてそのデプロイメント・テンプレートをデプロイすることです。Oracleデプロイメント・テンプレートの特徴を次に示します。
集中管理
マテリアライズド・ビュー環境を繰り返しデプロイ可能
テンプレート・パラメータを使用したリモート・サイトでのデータのサブセット化
テンプレートのインスタンス化とデータ・アクセスの制御を認証されたユーザーのリスト
マテリアライズド・ビュー環境を適用するために、DBAがマスター・サイトにデプロイメント・テンプレートを作成します。このテンプレートには、マテリアライズド・ビュー環境をデプロイするために必要なすべての情報を格納します(たとえば、リモート・サイトとターゲット・リフレッシュ・グループでオブジェクトを作成するためのDDLなどを格納します)。また、このテンプレートには、ユーザーのセキュリティ情報やカスタム・マテリアライズド・ビューを作成するためのテンプレート・パラメータへのリンクも含まれています。
次のオブジェクト型のインスタンス化では、デプロイメント・テンプレートは使用できません。
ユーザー定義型
ユーザー定義型本体
ユーザー定義演算子
索引タイプ
これらのオブジェクト型に基づいたオブジェクトのインスタンス化でも、デプロイメント・テンプレートは使用できません。
関連項目: デプロイメント・テンプレートの概念については、『Oracle Databaseアドバンスト・レプリケーション』を参照してください。 |
マスター・サイトの1つで、高速リフレッシュのマテリアライズド・ビューをサポートするには、マテリアライズド・ビューにレプリケートされる各マスター表のマテリアライズド・ビュー・ログを作成する必要があります。
この章の例では、hr
サンプル・スキーマを使用します。hr
スキーマの表のマテリアライズド・ビュー・ログを作成するには、次の命令を入力します。
CONNECT hr@orc3.example.com
Enter password: password
CREATE MATERIALIZED VIEW LOG ON hr.countries;
CREATE MATERIALIZED VIEW LOG ON hr.departments;
CREATE MATERIALIZED VIEW LOG ON hr.employees;
CREATE MATERIALIZED VIEW LOG ON hr.jobs;
CREATE MATERIALIZED VIEW LOG ON hr.job_history;
CREATE MATERIALIZED VIEW LOG ON hr.locations;
CREATE MATERIALIZED VIEW LOG ON hr.regions;
関連項目: このSQL文の詳細は、『Oracle Database SQL言語リファレンス』のCREATE MATERIALIZED VIEW LOG 文に関する説明を参照してください。 |
この項では、レプリケーション・マネージメントAPIを使用してデプロイメント・テンプレートを作成する、完全なスクリプト例を示します。
関連項目: デプロイメント・テンプレートの概念およびアーキテクチャについては、『Oracle Databaseアドバンスト・レプリケーション』を参照してください。 |
スクリプト内のコメントにも、必ず目を通してください。コメントには、レプリケーション・マネージメントAPIで配置テンプレートを作成するための重要で役立つ情報が記述されています。
注意:
|
/************************* BEGINNING OF SCRIPT ******************************
このスクリプトでは、4つのテンプレート・オブジェクト、2つのテンプレート・パラメータ、ユーザー・パラメータ値セットおよび許可されたユーザーを含むプライベート・デプロイメント・テンプレートが作成されます。次に示す手順に従って、テンプレートを構築します。
デプロイメント・テンプレートの構成要素を作成する前に、CREATE_RERESH_TEMPLATE
プロシージャを使用して、デプロイメント・テンプレートの名前、テンプレートの特性(パブリックまたはプライベートのステータス、ターゲット・リフレッシュ・グループおよび所有者)を定義します。
*/ SET ECHO ON SPOOL create_dt.out CONNECT repadmin@orc3.example.com DECLARE a NUMBER; BEGIN a := DBMS_REPCAT_RGT.CREATE_REFRESH_TEMPLATE ( owner => 'hr', refresh_group_name => 'hr_refg', refresh_template_name => 'hr_refg_dt', template_comment => 'Human Resources Deployment Template', public_template => 'N'); END; / /*
countries_mv
マテリアライズド・ビューを作成します。
*/ DECLARE tempstring VARCHAR2(3000); a NUMBER; BEGIN tempstring := 'CREATE MATERIALIZED VIEW hr.countries_mv REFRESH FAST WITH PRIMARY KEY FOR UPDATE AS SELECT country_id, country_name, region_id FROM hr.countries@:dblink'; a := DBMS_REPCAT_RGT.CREATE_TEMPLATE_OBJECT ( refresh_template_name => 'hr_refg_dt', object_name => 'countries_mv', object_type => 'MATERIALIZED VIEW', ddl_text => tempstring, master_rollback_seg => 'rbs'); END; / /*
マテリアライズド・ビューを作成するときは、必ず、マテリアライズド・ビューに対する問合せの中で表の所有者のスキーマ名を指定します。前述の例では、countries
表の所有者としてhr
を指定しました。
departments_mv
マテリアライズド・ビューを作成します。
*/ DECLARE tempstring VARCHAR2(3000); a NUMBER; BEGIN tempstring := 'CREATE MATERIALIZED VIEW hr.departments_mv REFRESH FAST WITH PRIMARY KEY FOR UPDATE AS SELECT department_id, department_name, manager_id, location_id FROM hr.departments@:dblink'; a := DBMS_REPCAT_RGT.CREATE_TEMPLATE_OBJECT ( refresh_template_name => 'hr_refg_dt', object_name => 'departments_mv', object_type => 'MATERIALIZED VIEW', ddl_text => tempstring, master_rollback_seg => 'rbs'); END; / /*
employees_mv
マテリアライズド・ビューを作成します。
*/ DECLARE tempstring VARCHAR2(3000); a NUMBER; BEGIN tempstring := 'CREATE MATERIALIZED VIEW hr.employees_mv REFRESH FAST WITH PRIMARY KEY FOR UPDATE AS SELECT employee_id, first_name, last_name, email, phone_number, hire_date, job_id, salary, commission_pct, manager_id, department_id FROM hr.employees@:dblink WHERE department_id = :dept'; a := DBMS_REPCAT_RGT.CREATE_TEMPLATE_OBJECT ( refresh_template_name => 'hr_refg_dt', object_name => 'employees_mv', object_type => 'MATERIALIZED VIEW', ddl_text => tempstring, master_rollback_seg => 'rbs'); END; / /*
jobs_mv
マテリアライズド・ビューを作成します。
*/ DECLARE tempstring VARCHAR2(3000); a NUMBER; BEGIN tempstring := 'CREATE MATERIALIZED VIEW hr.jobs_mv REFRESH FAST WITH PRIMARY KEY FOR UPDATE AS SELECT job_id, job_title, min_salary, max_salary FROM hr.jobs@:dblink'; a := DBMS_REPCAT_RGT.CREATE_TEMPLATE_OBJECT ( refresh_template_name => 'hr_refg_dt', object_name => 'jobs_mv', object_type => 'MATERIALIZED VIEW', ddl_text => tempstring, master_rollback_seg => 'rbs'); END; / /*
job_history_mv
マテリアライズド・ビューを作成します。
*/ DECLARE tempstring VARCHAR2(3000); a NUMBER; BEGIN tempstring := 'CREATE MATERIALIZED VIEW hr.job_history_mv REFRESH FAST WITH PRIMARY KEY FOR UPDATE AS SELECT employee_id, start_date, end_date, job_id, department_id FROM hr.job_history@:dblink'; a := DBMS_REPCAT_RGT.CREATE_TEMPLATE_OBJECT ( refresh_template_name => 'hr_refg_dt', object_name => 'job_history_mv', object_type => 'MATERIALIZED VIEW', ddl_text => tempstring, master_rollback_seg => 'rbs'); END; / /*
locations_mv
マテリアライズド・ビューを作成します。
*/ DECLARE tempstring VARCHAR2(3000); a NUMBER; BEGIN tempstring := 'CREATE MATERIALIZED VIEW hr.locations_mv REFRESH FAST WITH PRIMARY KEY FOR UPDATE AS SELECT location_id, street_address, postal_code, city, state_province, country_id FROM hr.locations@:dblink'; a := DBMS_REPCAT_RGT.CREATE_TEMPLATE_OBJECT ( refresh_template_name => 'hr_refg_dt', object_name => 'locations_mv', object_type => 'MATERIALIZED VIEW', ddl_text => tempstring, master_rollback_seg => 'rbs'); END; / /*
regions_mv
マテリアライズド・ビューを作成します。
*/ DECLARE tempstring VARCHAR2(3000); a NUMBER; BEGIN tempstring := 'CREATE MATERIALIZED VIEW hr.regions_mv REFRESH FAST WITH PRIMARY KEY FOR UPDATE AS SELECT region_id, region_name FROM hr.regions@:dblink'; a := DBMS_REPCAT_RGT.CREATE_TEMPLATE_OBJECT ( refresh_template_name => 'hr_refg_dt', object_name => 'regions_mv', object_type => 'MATERIALIZED VIEW', ddl_text => tempstring, master_rollback_seg => 'rbs'); END; / /*
他の手順では、CREATE_*
ファンクションおよびプロシージャではなく、ALTER_TEMPLATE_PARM
プロシージャを使用して、テンプレート・パラメータの値とプロンプト文字列を定義します。実パラメータは、手順1で作成されたので、ALTER_*
プロシージャを使用します。:dblink
および:dept
テンプレート・パラメータはddl_text
パラメータで定義済です。OracleはDDL中のこれらのパラメータを検出して、自動的にテンプレート・パラメータを作成します。テンプレート・パラメータ情報の残り(すなわち、デフォルトのパラメータ値とプロンプト文字列)を定義するには、ALTER_TEMPLATE_PARM
プロシージャを使用します。
次のタスクを実行して、パラメータのデフォルト値を定義します。
dept
パラメータのデフォルト値を定義します。
*/ BEGIN DBMS_REPCAT_RGT.ALTER_TEMPLATE_PARM ( refresh_template_name => 'hr_refg_dt', parameter_name => 'dept', new_default_parm_value => '30', new_prompt_string => 'Enter your department number:', new_user_override => 'Y'); END; / /*
dblink
パラメータのデフォルト値を定義します。
*/ BEGIN DBMS_REPCAT_RGT.ALTER_TEMPLATE_PARM ( refresh_template_name => 'hr_refg_dt', parameter_name => 'dblink', new_default_parm_value => 'orc3.example.com', new_prompt_string => 'Enter your master site:', new_user_override => 'Y'); END; / /*
個々のリモート・マテリアライズド・ビュー・サイトにおけるカスタム・データ・セットのインスタンス化を自動的に行うためには、指定したユーザーが、ターゲット・テンプレートをインスタンス化した場合に自動的に使用されるユーザー・パラメータ値を定義します。CREATE_USER_PARM_VALUE
プロシージャを使用すると、ユーザー・パラメータに値を割り当てることができます。
次のタスクを実行して、ユーザー・パラメータ値を定義します。
ユーザーhr
に対するdept
ユーザー・パラメータ値を定義します。
*/ DECLARE a NUMBER; BEGIN a := DBMS_REPCAT_RGT.CREATE_USER_PARM_VALUE ( refresh_template_name => 'hr_refg_dt', parameter_name => 'dept', user_name => 'hr', parm_value => '20'); END; / /*
ユーザーhr
に対するdblink
ユーザー・パラメータ値を定義します。
*/ DECLARE a NUMBER; BEGIN a := DBMS_REPCAT_RGT.CREATE_USER_PARM_VALUE ( refresh_template_name => 'hr_refg_dt', parameter_name => 'dblink', user_name => 'hr', parm_value => 'orc3.example.com'); END; / /*
これはプライベート・テンプレート(手順1で定義したDBMS_REPCAT_RGT.CREATE_REFRESH_TEMPLATE
ファンクションのpublic_template => 'N'
)であるため、dt_personnel
デプロイメント・テンプレートのインスタンス化をユーザーに認証する必要があります。認証ユーザーを作成するには、DBMS_REPCAT_RGT
パッケージのCREATE_USER_AUTHORIZATION
ファンクションを使用します。
*/ DECLARE a NUMBER; BEGIN a := DBMS_REPCAT_RGT.CREATE_USER_AUTHORIZATION ( user_name => 'hr', refresh_template_name => 'hr_refg_dt'); END; / COMMIT; SET ECHO OFF SPOOL OFF /************************* END OF SCRIPT **********************************/
デプロイメント・テンプレートを作成した後、テンプレートをパッケージ化してインスタンス化を行う必要があります。ここでは、オンラインとオフラインのインスタンス化プロシージャの使用例を示します。オンラインとオフラインのインスタンス化プロシージャは非常に類似しており、必要に応じてINSTANTIATE_ONLINE
ファンクションとINSTANTIATE_OFFLINE
ファンクションのいずれかを使用します。この項では、インスタンス化スクリプトの作成およびファイルへのそのスクリプトの保存という2つのタスクについて説明します。
INSTANTIATE_OFFLINE
またはINSTANTIATE_ONLINE
ファンクションを実行すると、OracleではUSER_REPCAT_TEMP_OUTPUT
データ・ディクショナリ・ビューにスクリプトが移入されて、リモート・マテリアライズド・ビュー環境が構築されます。オンラインとオフラインのスクリプトのいずれにも、デプロイメント・テンプレートで指定されたオブジェクトを作成するためのSQL文が含まれます。ただし、オフライン・インスタンシエーション・スクリプトには、オブジェクトに移入するデータが含まれます。オンライン・インスタンシエーション・スクリプトには、このデータは含まれません。オンライン・インスタンシエーションでは、マテリアライズド・ビュー・サイトがマスター・サイトに接続して、このデータをダウンロードします。
必要に応じて、「デプロイメント・テンプレートをパッケージ化してオフライン・インスタンシエーション」または「デプロイメント・テンプレートをパッケージ化してオンライン・インスタンシエーション」に示す手順を実行してください。
注意: INSTANTIATE_OFFLINE またはINSTANTIATE_ONLINE ファンクションのいずれかを、特定のマテリアライズド・ビュー・サイトに対して複数回実行する必要がある場合は、サイトのテンプレートを再パッケージする前に、DBMS_REPCAT_RGT パッケージのDROP_SITE_INSTANTIATION プロシージャを実行します。このプロシージャを実行しない場合は、テンプレート・サイトの重複を示すエラーがOracleから戻されます。 |
INSTANTIATE_OFFLINE
ファンクションは、指定されたデプロイメント・テンプレートの内容に従って、マテリアライズド・ビュー環境を構築するスクリプトを生成します。このスクリプトには、マテリアライズド・ビュー環境を構築するためのDDL(CREATE
文)の他に、マテリアライズド・ビュー環境に適切なデータ・セットを移入するためのDML(INSERT
文)が含まれています。
注意: デプロイメント・テンプレートをパッケージ化するマスター・サイトに、デプロイメント・テンプレート用のターゲット・マスター・オブジェクトが含まれている場合は、ループバック・データベース・リンクを作成する必要があります。 |
--Use the INSTANTIATE_OFFLINE function to package the --template for offline instantiation by a remote materialized view --site. Executing this procedure both creates a script that --creates that materialized view environment and populates the --environment with the proper data set. This script is stored --in the temporary USER_REPCAT_TEMP_OUTPUT view. CONNECT repadmin@orc3.example.com Enter password: password SET SERVEROUTPUT ON DECLARE dt_num NUMBER; BEGIN dt_num := DBMS_REPCAT_RGT.INSTANTIATE_OFFLINE( refresh_template_name => 'hr_refg_dt', user_name => 'hr', site_name => 'mv4.example.com', next_date => SYSDATE, interval => 'SYSDATE + (1/144)'); DBMS_OUTPUT.PUT_LINE('Template ID = ' || dt_num); END; / COMMIT; /
dt_num
変数に戻される値を記録しておきます。この値は、USER_REPCAT_TEMP_OUTPUT
データ・ディクショナリ・ビューから選択して、生成されたスクリプトを取り出すときに使用する必要があります。このタスクを実行した後、「インスタンス化スクリプトのファイルへの保存」に示す手順に従ってください。このスクリプトは、個々のマテリアライズド・ビュー・サイトに一意であり、他のマテリアライズド・ビュー・サイトでは使用できません。
INSTANTIATE_ONLINE
ファンクションは、指定されたデプロイメント・テンプレートの内容に従って、マテリアライズド・ビュー環境を構築するスクリプトを生成します。このスクリプトがリモート・マテリアライズド・ビュー・サイトで実行されると、スクリプト内のDDL(CREATE
文)に従ってマテリアライズド・ビュー・サイトが作成され、マスター・サイトから適切なデータ・セットが移入されます。この処理では、リモート・マテリアライズド・ビュー・サイトが、マスター・サイトにオンラインで接続されている必要があります。
関連項目: マテリアライズド・ビュー・サイトのその他の要件は、『Oracle Databaseアドバンスト・レプリケーション』を参照してください。 |
--Use the INSTANTIATE_ONLINE function to "package" the --template for online instantiation by a remote materialized view --site. Executing this procedure creates a script which can --then be used to create a materialized view environment. This script --is stored in the temporary USER_REPCAT_TEMP_OUTPUT view. CONNECT repadmin@orc3.example.com Enter password: password SET SERVEROUTPUT ON DECLARE dt_num NUMBER; BEGIN dt_num := DBMS_REPCAT_RGT.INSTANTIATE_ONLINE( refresh_template_name => 'hr_refg_dt', user_name => 'hr', site_name => 'mv4.example.com', next_date => SYSDATE, interval => 'SYSDATE + (1/144)'); DBMS_OUTPUT.PUT_LINE('Template ID = ' || dt_num); END; / COMMIT; /
dt_num
変数に戻される値を記録しておきます。この値は、USER_REPCAT_TEMP_OUTPUT
データ・ディクショナリ・ビューから選択して、生成されたスクリプトを取り出すときに使用する必要があります。このタスクを実行した後、「インスタンス化スクリプトのファイルへの保存」に示す手順に従ってください。
USER_REPCAT_TEMP_OUTPUT
データ・ディクショナリ・ビューの内容を効率的に保存するには、UTL_FILE
パッケージを使用して、USER_REPCAT_TEMP_OUTPUT
ビューのTEXT
列の内容をファイルに保存します。
これらの内容は、ディレクトリ・オブジェクトに対応するディレクトリに保存されます。ディレクトリ・オブジェクトを作成するには、CREATE
ANY
DIRECTORY
権限が必要です。レプリケーション管理者がこの権限を持っていない場合は、権限を付与できる管理ユーザーとして接続します。次に例を示します。
GRANT CREATE ANY DIRECTORY TO repadmin;
注意: USER_REPCAT_TEMP_OUTPUT データ・ディクショナリ・ビューの内容は一時的なため、INSTANTIATE_OFFLINE ファンクションまたはINSTANTIATE_ONLINE ファンクションのいずれかをコールした直後に次のアクションを実行する必要があります。「デプロイメント・テンプレートのパッケージ化」の手順を完了していない場合には、ここで実行し、次のアクションを完了します。 |
関連項目: UTL_FILE パッケージの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。 |
次の項目を入力して、デプロイメント・テンプレート・スクリプトをファイルに保存します。
DECLARE fh UTL_FILE.FILE_TYPE; CURSOR ddlcursor(myid NUMBER) IS SELECT TEXT FROM USER_REPCAT_TEMP_OUTPUT WHERE OUTPUT_ID = myid ORDER BY LINE; BEGIN fh := UTL_FILE.FOPEN ('file_location', 'file_name', 'w'); UTL_FILE.PUT_LINE (fh, 'SET ECHO OFF;'); FOR myrec IN ddlcursor(template_id) LOOP UTL_FILE.PUT_LINE(fh, myrec.text); END LOOP; UTL_FILE.PUT_LINE (fh, 'SET ECHO ON;'); UTL_FILE.FFLUSH(fh); UTL_FILE.FCLOSE(fh); END; /
file_location
、file_name
およびtemplate_id
はプレースホルダであることに注意してください。使用している環境に合わせて正しい値に置換します。
file_location
プレースホルダを、テンプレート・スクリプトの保存先ディレクトリを表すディレクトリ・オブジェクトの名前に置換します。
file_name
プレースホルダを、テンプレートのスクリプトに使用する名前で置換します。
template_id
プレースホルダを、以前テンプレートをパッケージ化したときに、INSTANTIATE_OFFLINE
またはINSTANTIATE_ONLINE
ファンクションから戻された番号で置換します。
たとえば、次のような値があるとします。
プレースホルダ | 値 |
---|---|
file_location |
/home/gen_files/ |
file_name |
sf.sql |
template_id |
18 |
これらの値を指定した後、レプリケーション管理者としてマスター・サイトに接続します。次のプロシージャを実行してテンプレートのスクリプトをファイルに保存します。
CONNECT repadmin@orc3.example.com
Enter password: password
CREATE DIRECTORY GFILES AS '/home/gen_files';
DECLARE
fh UTL_FILE.FILE_TYPE;
CURSOR ddlcursor(myid NUMBER) IS
SELECT TEXT FROM USER_REPCAT_TEMP_OUTPUT WHERE OUTPUT_ID = myid
ORDER BY LINE;
BEGIN
fh := UTL_FILE.FOPEN ('GFILES', 'sf.sql', 'w');
UTL_FILE.PUT_LINE (fh, 'SET ECHO OFF;');
FOR myrec IN ddlcursor(18) LOOP
UTL_FILE.PUT_LINE(fh, myrec.text);
END LOOP;
UTL_FILE.PUT_LINE (fh, 'SET ECHO ON;');
UTL_FILE.FFLUSH(fh);
UTL_FILE.FCLOSE(fh);
END;
/
インスタンス化スクリプトを作成して、それをファイルに保存した後、テンプレートをインスタンス化するリモート・マテリアライズド・ビュー・サイトにこのファイルを配布する必要があります。ファイルを配布するには、FTPサイトにファイルを送信するか、CD-ROM、フロッピィ・ディスクなどに保存します。ファイルは、DBMS_FILE_TRANSFER
パッケージを使用して転送することもできます。
インスタンス化スクリプトがリモート・マテリアライズド・ビュー・サイトに配布された後、そこでデプロイメント・テンプレートをインスタンス化できます。デプロイメント・テンプレートをインスタンス化する前に、マテリアライズド・ビュー・サイトが設定されていることを確認してください。次のスクリプトは、リモート・マテリアライズド・ビュー・サイトでインスタンス化処理を実行する方法を示します。
関連項目:
|
注意: このドキュメントをオンラインで参照している場合は、次の「BEGINNING OF SCRIPT」の行から「END OF SCRIPT」の行までのテキストをテキスト・エディタにコピーして編集し、使用している環境に適したスクリプトを作成します。 |
/************************* BEGINNING OF SCRIPT ******************************
リモート・マテリアライズド・ビュー・サイトでインスタンス化スクリプトを実行する前に、レプリケート・オブジェクトを含むスキーマを作成します。
次の例は、hr
スキーマの作成方法を示します。このスキーマは、データベースに存在する場合があります。その場合、そのスキーマには、CREATE
MATERIALIZED
VIEW
、ALTER
ANY
MATERIALIZED
VIEW
、CREATE
DATABASE
LINK
などの追加の権限が必要な場合があります。
*/ SET ECHO ON SPOOL instant_mv.out CONNECT system@mv4.example.com CREATE TABLESPACE demo_mv DATAFILE 'demo_mv.dbf' SIZE 10M AUTOEXTEND ON EXTENT MANAGEMENT LOCAL AUTOALLOCATE; CREATE TEMPORARY TABLESPACE temp_mv TEMPFILE 'temp_mv.dbf' SIZE 5M AUTOEXTEND ON; ACCEPT password PROMPT 'Enter password for user: ' HIDE CREATE USER hr IDENTIFIED BY &password; ALTER USER hr DEFAULT TABLESPACE demo_mv QUOTA UNLIMITED ON demo_mv; ALTER USER hr TEMPORARY TABLESPACE temp_mv; GRANT CREATE SESSION, CREATE TABLE, CREATE PROCEDURE, CREATE SEQUENCE, CREATE TRIGGER, CREATE VIEW, CREATE SYNONYM, ALTER SESSION, CREATE MATERIALIZED VIEW, ALTER ANY MATERIALIZED VIEW, CREATE DATABASE LINK TO hr; /*
デプロイメント・テンプレートをインスタンス化する前に、レプリケーション・スキーマへの必要なデータベース・リンクが存在することを確認します。マテリアライズド・ビューの所有者は、マスター・サイトの設定時に作成したproxy_refresher
へのデータベース・リンクが必要です。
*/ CREATE PUBLIC DATABASE LINK orc3.example.com USING 'orc3.example.com'; CONNECT hr@mv4.example.com CREATE DATABASE LINK orc3.example.com CONNECT TO proxy_refresher IDENTIFIED BY &password; /*
*/
CONNECT mviewadmin@mv4.example.com @d:\sf.sql SET ECHO OFF SPOOL OFF /*
構築するマテリアライズド・ビュー環境の規模やロードされるデータ量によっては、インスタンス化処理にかなり時間がかかる場合があります。
************************** END OF SCRIPT **********************************/
オフライン・インスタンシエーション・メソッドを使用してデプロイメント・テンプレートをインスタンス化した場合は、次の実行文を発行して、できるだけ早くリフレッシュ・グループをリフレッシュします。
CONNECT hr@mv4.example.com Enter password: password EXECUTE DBMS_REFRESH.REFRESH ('hr_refg');