この章では、Oracle Streamsレプリケーション環境でインスタンス化を実行する方法について説明します。データベース・オブジェクトに対する変更をレプリケートする前に、接続先データベースでそれらのオブジェクトをインスタンス化する必要があります。
この章の内容は次のとおりです。
DBMS_STREAMS_ADM
パッケージを使用して取得プロセスまたは同期取得のルールを作成すると、システム作成ルールで参照されるオブジェクトがインスタンス化のために自動的に準備されます。DBMS_RULE_ADM
パッケージを使用して取得プロセスのルールを作成する場合は、これらのルールで参照されるデータベース・オブジェクトをインスタンス化のために手動で準備する必要があります。この場合、データベース・オブジェクトに対する変更を取得するように取得プロセスを構成した後で、データベース・オブジェクトをインスタンス化のために準備する必要があります。同期取得では、DBMS_RULE_ADM
パッケージで作成されたルールは無視されます。
DBMS_CAPTURE_ADM
パッケージの次のプロシージャまたはファンクションでは、インスタンス化のためにデータベース・オブジェクトの準備が行われます。
PREPARE_TABLE_INSTANTIATION
プロシージャでは、表に対する変更が取得プロセスによって取得される場合、1つの表がインスタンス化のために準備されます。
PREPARE_SYNC_INSTANTIATION
ファンクションでは、表に対する変更が同期取得によって取得される場合、1つの表または複数の表がインスタンス化のために準備されます。
PREPARE_SCHEMA_INSTANTIATION
プロシージャでは、スキーマ内のすべてのデータベース・オブジェクトおよび将来そのスキーマに追加されるすべてのデータベース・オブジェクトがインスタンス化のために準備されます。このプロシージャは、取得プロセスによって変更が取得される場合にのみ使用する必要があります。
PREPARE_GLOBAL_INSTANTIATION
プロシージャでは、データベース内のすべてのデータベース・オブジェクトおよび将来そのデータベースに追加されるすべてのデータベース・オブジェクトがインスタンス化のために準備されます。このプロシージャは、取得プロセスによって変更が取得される場合にのみ使用する必要があります。
インスタンス化の準備対象となる1つ以上のデータベース・オブジェクトを長時間実行トランザクションで変更中に、前述のプロシージャの1つを実行すると、そのプロシージャは長時間実行トランザクションが完了するまで待機してから、オブジェクトの非処理SCNを記録します。非処理SCNは、その下では接続先データベースでオブジェクトに対する変更を適用できないSCNです。V$STREAMS_TRANSACTION
動的パフォーマンス・ビューを問い合せて、取得プロセスまたは適用プロセスによって処理されている長時間実行トランザクションを監視します。
また、次のプロシージャを使用すると、インスタンス化のために準備する表のすべての主キー列、一意キー列、ビットマップ索引列および外部キー列に対して、またはこれらの表のすべての列に対してサプリメンタル・ロギングを有効化できます。
PREPARE_TABLE_INSTANTIATION
PREPARE_SCHEMA_INSTANTIATION
PREPARE_GLOBAL_INSTANTIATION
サプリメンタル・ロギングを有効にする列を指定するには、これらの各プロシージャにsupplemental_logging
パラメータを使用します。
ここでは、インスタンス化のために表を準備する例について説明します。
取得プロセスによって表に対する変更が取得される場合は、DBMS_CAPTURE_ADM
パッケージのPREPARE_TABLE_INSTANTIATION
プロシージャを使用して、表をインスタンス化のために準備します。同期取得によって1つの表または複数の表に対する変更が取得される場合は、PREPARE_SYNC_INSTANTIATION
ファンクションを使用して、1つの表または複数の表をインスタンス化のために準備します。
この項の内容は次のとおりです。
この項の例では、表に対する変更が取得プロセスによって取得される場合に、表をインスタンス化のために準備します。hr.regions
表をインスタンス化のために準備して、表のすべての主キー列、一意キー列、ビットマップ索引列および外部キー列に対してサプリメンタル・ロギングを有効化するには、次のプロシージャを実行します。
BEGIN DBMS_CAPTURE_ADM.PREPARE_TABLE_INSTANTIATION( table_name => 'hr.regions', supplemental_logging => 'keys'); END; /
supplemental_logging
パラメータのデフォルト値はkeys
です。そのため、このパラメータが指定されていない場合、インスタンス化のために準備する表のすべての主キー列、一意キー列、ビットマップ索引列および外部キー列に対してサプリメンタル・ロギングが有効になります。
この項の例では、表に対する変更が同期取得によって取得される場合に、hr
スキーマ内のすべての表をインスタンス化のために準備します。インスタンス化のためにhr
スキーマ内の表を準備するには、次のファンクションを実行します。
SET SERVEROUTPUT ON DECLARE tables DBMS_UTILITY.UNCL_ARRAY; prepare_scn NUMBER; BEGIN tables(1) := 'hr.departments'; tables(2) := 'hr.employees'; tables(3) := 'hr.countries'; tables(4) := 'hr.regions'; tables(5) := 'hr.locations'; tables(6) := 'hr.jobs'; tables(7) := 'hr.job_history'; prepare_scn := DBMS_CAPTURE_ADM.PREPARE_SYNC_INSTANTIATION( table_names => tables); DBMS_OUTPUT.PUT_LINE('Prepare SCN = ' || prepare_scn); END; /
この項の例では、スキーマ内のデータベース・オブジェクトに対する変更が取得プロセスによって取得される場合に、これらのオブジェクトをインスタンス化のために準備します。インスタンス化のためにhr
スキーマ内のデータベース・オブジェクトを準備し、hr
スキーマ内の表のすべての列に対してサプリメンタル・ロギングを有効化するには、次のプロシージャを実行します。
BEGIN DBMS_CAPTURE_ADM.PREPARE_SCHEMA_INSTANTIATION( schema_name => 'hr', supplemental_logging => 'all'); END; /
このプロシージャを実行すると、hr
スキーマ内の表のすべての列と、将来hr
スキーマに追加される表内のすべての列に対してサプリメンタル・ロギングが有効になります。
この項の例では、データベース内のデータベース・オブジェクトに対する変更が取得プロセスによって取得される場合に、これらのオブジェクトをインスタンス化のために準備します。インスタンス化のためにデータベース内のデータベース・オブジェクトを準備するには、次のプロシージャを実行します。
BEGIN DBMS_CAPTURE_ADM.PREPARE_GLOBAL_INSTANTIATION( supplemental_logging => 'none'); END; /
supplemental_logging
パラメータにnone
が指定されているため、このプロシージャではどの列に対してもサプリメンタル・ロギングが有効になりません。ただし、ALTER
TABLE
またはALTER
DATABASE
文を使用して、サプリメンタル・ロギングを手動で指定できます。
DBMS_CAPTURE_ADM
パッケージの次のプロシージャでは、インスタンス化の準備が強制終了されます。
ABORT_TABLE_INSTANTIATION
を実行すると、PREPARE_TABLE_INSTANTIATION
の効果が逆転し、PREPARE_TABLE_INSTANTIATION
プロシージャによって有効化されたサプリメンタル・ロギングが削除されます。
ABORT_SYNC_INSTANTIATION
を実行すると、PREPARE_SYNC_INSTANTIATION
の効果が逆転します。
ABORT_SCHEMA_INSTANTIATION
を実行すると、PREPARE_SCHEMA_INSTANTIATION
の効果が逆転し、PREPARE_SCHEMA_INSTANTIATION
およびPREPARE_TABLE_INSTANTIATION
プロシージャによって有効化されたサプリメンタル・ロギングが削除されます。
ABORT_GLOBAL_INSTANTIATION
を実行すると、PREPARE_GLOBAL_INSTANTIATION
の効果が逆転し、PREPARE_GLOBAL_INSTANTIATION
、PREPARE_SCHEMA_INSTANTIATION
およびPREPARE_TABLE_INSTANTIATION
プロシージャによって有効化されたサプリメンタル・ロギングが削除されます。
これらのプロシージャでは、関連データベース・オブジェクトの潜在的なインスタンス化に関係するデータ・ディクショナリ情報が削除されます。
たとえば、hr.regions
表のインスタンス化の準備を強制終了するには、次のプロシージャを実行します。
BEGIN DBMS_CAPTURE_ADM.ABORT_TABLE_INSTANTIATION( table_name => 'hr.regions'); END; /
Oracle Streams環境でデータベース・オブジェクトをインスタンス化するには、次の方法があります。
Oracle Data Pumpおよびトランスポータブル表領域を使用すると、個々のデータベース・オブジェクトかスキーマ、またはデータベース全体をインスタンス化できます。Recovery Managerを使用すると、表領域または表領域セット内のデータベース・オブジェクト、またはデータベース全体をインスタンス化できます。
注意: Oracle Streamsレプリケーションを構成するには、DBMS_STREAMS_ADM パッケージのMAINTAIN_GLOBAL 、MAINTAIN_SCHEMAS 、MAINTAIN_SIMPLE_TTS 、MAINTAIN_TABLES およびMAINTAIN_TTS プロシージャを使用します。これらのプロシージャのいずれかを使用する場合、適切なデータベース・オブジェクトに対してインスタンス化が自動的に実行されます。これらのいずれかのプロシージャを使用してレプリケーションを構成することをお薦めします。 |
この項の例では、Oracle Data Pump Export/Importを使用してOracle Streams環境でオブジェクトをインスタンス化する場合に必要な手順について説明します。この例では、次のことを想定しています。
ソース・データベースでhr
スキーマ内のすべてのデータベース・オブジェクトに対する変更を取得して、別の接続先データベースでそれらの変更を適用します。
hr
スキーマはソース・データベースに存在しますが、接続先データベースには存在しません。この例のために、接続先データベースのhr
ユーザーを削除するには、次のSQL文を使用します。
DROP USER hr CASCADE;
データ・ポンプ・インポートを実行すると、接続先データベースにユーザーおよびユーザーのデータベース・オブジェクトが再作成されます。
ソース・データベースおよび接続先データベースでOracle Streams管理者strmadmin
を構成済です。各データベースで、Oracle Streams管理者にはDBA
ロールが付与されます。
注意: この項の例では、データ・ポンプ・ユーティリティのコマンドラインを使用します。Oracle Streamsのインスタンス化にはDBMS_DATAPUMP パッケージも使用できます。 |
参照:
|
前述の想定で、データ・ポンプ・エクスポート/インポートを使用してhr
スキーマをインスタンス化するには、次の手順を実行します。
SQL*Plusで、Oracle Streams管理者としてソース・データベースに接続します。
SQL*Plusでデータベースに接続する手順については、『Oracle Database管理者ガイド』を参照してください。
エクスポート・ダンプ・ファイルおよびエクスポート・ログ・ファイルを保持するディレクトリ・オブジェクトを作成します。
CREATE DIRECTORY DPUMP_DIR AS '/usr/dpump_dir';
hr
スキーマ内のデータベース・オブジェクトをインスタンス化のために準備します。この手順を実行するには、次の方法があります。
DBMS_STREAMS_ADM
パッケージのプロシージャを使用して、hr
スキーマのルールを取得プロセスのポジティブ・ルール・セットに追加します。取得プロセスがソース・データベースへのデータベース・リンクを持つローカルの取得プロセスまたはダウンストリームの取得プロセスである場合に、このプロシージャを実行すると、hr
スキーマ内のオブジェクトがインスタンス化のために自動的に準備されます。
たとえば、次のプロシージャを実行すると、ルールが取得プロセスstrm01_capture
のポジティブ・ルール・セットに追加され、hr
スキーマおよびそのすべてのオブジェクトがインスタンス化のために準備されます。
BEGIN DBMS_STREAMS_ADM.ADD_SCHEMA_RULES( schema_name => 'hr', streams_type => 'capture', streams_name => 'strm01_capture', queue_name => 'strm01_queue', include_dml => TRUE, include_ddl => TRUE, inclusion_rule => TRUE); END; /
指定した取得プロセスが存在しない場合は、このプロシージャによって作成されます。
DBMS_RULE_ADM
パッケージのプロシージャを使用して、hr
スキーマのルールを取得プロセスのポジティブ・ルール・セットに追加します。次に、hr
スキーマを指定してDBMS_CAPTURE_ADM
パッケージのPREPARE_SCHEMA_INSTANTIATION
プロシージャを実行することによって、オブジェクトをインスタンス化のために手動で準備します。
BEGIN DBMS_CAPTURE_ADM.PREPARE_SCHEMA_INSTANTIATION( schema_name => 'hr'); END; /
データベース・オブジェクトをインスタンス化のために準備する前に、ルールを取得プロセスのポジティブ・ルール・セットに追加したことを確認してください。
DBMS_STREAMS_ADM
パッケージのプロシージャを使用して、hr
スキーマの表のルールを同期取得のポジティブ・ルール・セットに追加します。実行するプロシージャによって、指定した表がインスタンス化のために自動的に準備されます。
たとえば、次のプロシージャを実行すると、同期取得sync_capture
のポジティブ・ルール・セットにルールが追加され、hr.employees
表がインスタンス化のために準備されます。
BEGIN DBMS_STREAMS_ADM.ADD_TABLE_RULES( table_name => 'hr.employees', streams_type => 'sync_capture', streams_name => 'sync_capture', queue_name => 'strmadmin.streams_queue'); END; /
インスタンス化のためにhr
スキーマ内のすべての表を準備するには、スキーマ内の各表に対してADD_TABLE_RULES
プロシージャを実行します。指定した同期取得が存在しない場合は、このプロシージャによって作成されます。
ソース・データベースにOracle Streams管理者として接続したまま、ソース・データベースの現行のシステム変更番号(SCN)を判断します。
SELECT DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER FROM DUAL;
この問合せで戻されるSCN値を、手順5でFLASHBACK_SCN
データ・ポンプ・エクスポート・パラメータに指定します。hr
スキーマには表間の外部キー制約が含まれるため、FLASHBACK_SCN
エクスポート・パラメータ、または類似のエクスポート・パラメータは、エクスポート中に指定する必要があります。この例では、問合せによって876606
が戻されたと想定します。
この問合せの実行後、エクスポートが完了するまでは、エクスポート対象のオブジェクトに対してDDL変更が行われないように注意してください。
コマンドラインでデータ・ポンプを使用して、ソース・データベースでhr
スキーマをエクスポートします。
エクスポートを実行するには、EXP_FULL_DATABASE
ロールが付与された管理ユーザーとして接続します。このユーザーには、手順2で作成したディレクトリ・オブジェクトに対するREAD
権限およびWRITE
権限も必要です。この例では、Oracle Streams管理者strmadmin
として接続します。
次にデータ・ポンプ・エクスポート・コマンドの例を示します。
expdp strmadmin SCHEMAS=hr DIRECTORY=DPUMP_DIR DUMPFILE=hr_schema_dp.dmp FLASHBACK_SCN=876606
参照: データ・ポンプ・エクスポートを実行する方法の詳細は、『Oracle Databaseユーティリティ』を参照してください。 |
SQL*Plusで、Oracle Streams管理者として接続先データベースに接続します。
インポート・ダンプ・ファイルおよびインポート・ログ・ファイルを保持するディレクトリ・オブジェクトを作成します。
CREATE DIRECTORY DPUMP_DIR AS '/usr/dpump_dir';
データ・ポンプ・エクスポート・ダンプ・ファイルhr_schema_dp.dmp
を接続先データベースに送信します。DBMS_FILE_TRANSFER
パッケージ、バイナリFTPまたは他のなんらかの方法を使用して、ファイルを接続先データベースに送信できます。ファイル送信後、エクスポート・ダンプ・ファイルは、手順7で作成したディレクトリ・オブジェクトに対応するディレクトリに存在することになります。
接続先データベースのコマンドラインでデータ・ポンプを使用して、エクスポート・ダンプ・ファイルhr_schema_dp.dmp
をインポートします。インポートが完了するまでは、接続先データベースでインポート対象のスキーマ内の表に対する変更が行われないように注意してください。インポートを実行すると、接続先データベースで、hr
スキーマおよびそのすべてのオブジェクトにインスタンス化SCNが自動的に設定されます。
インポートを実行するには、IMP_FULL_DATABASE
ロールが付与された管理ユーザーとして接続します。このユーザーには、手順7で作成したディレクトリ・オブジェクトに対するREAD
権限およびWRITE
権限も必要です。この例では、Oracle Streams管理者strmadmin
として接続します。
次にインポート・コマンドの例を示します。
impdp strmadmin SCHEMAS=hr DIRECTORY=DPUMP_DIR DUMPFILE=hr_schema_dp.dmp
注意: エクスポート・データベースからエクスポートされた表の表サプリメンタル・ログ・グループは、インポート・データベースで表がインポートされる際に保持されます。これらのサプリメンタル・ログ・グループは、必要に応じて削除できます。 |
参照: データ・ポンプ・インポートを実行する方法の詳細は、『Oracle Databaseユーティリティ』を参照してください。 |
この項の例では、トランスポータブル表領域またはRecovery Managerを使用して表領域内のデータベース・オブジェクトをインスタンス化する場合に必要な手順について説明します。通常、これらのインスタンス化オプションを使用する方が、エクスポート/インポートを使用するより高速にインスタンス化を実行できます。次の例では、表領域内のデータベース・オブジェクトをインスタンス化します。
「トランスポータブル表領域を使用したオブジェクトのインスタンス化」では、トランスポータブル表領域機能を使用してインスタンス化を完了します。データ・ポンプを使用すると、ソース・データベースで表領域がエクスポートされ、接続先データベースでその表領域がインポートされます。エクスポート中、表領域は読取り専用になります。
「バックアップからのトランスポータブル表領域とRecovery Managerを使用したオブジェクトのインスタンス化」では、Recovery ManagerのTRANSPORT
TABLESPACE
コマンドを使用して、表領域または表領域セットをオンライン状態にしたままで、表領域または表領域セットのデータ・ポンプ・エクスポート・ダンプ・ファイルおよびデータ・ファイルを生成します。データ・ポンプ・インポートまたはDBMS_STREAMS_TABLESPACE_ADM
パッケージのATTACH_TABLESPACES
プロシージャのいずれかを使用して、接続先データベースに表領域または表領域セットを追加できます。
これらの例では、表領域jobs_tbs
およびregions_tbs
を含む表領域セットをインスタンス化します。これらの例を実行するには、SQL*Plusでソース・データベースに管理ユーザーとして接続し、新規の表領域を作成します。
CREATE TABLESPACE jobs_tbs DATAFILE '/usr/oracle/dbs/jobs_tbs.dbf' SIZE 5 M; CREATE TABLESPACE regions_tbs DATAFILE '/usr/oracle/dbs/regions_tbs.dbf' SIZE 5 M;
jobs_tbs
表領域に、新規の表hr.jobs_transport
を含めます。
CREATE TABLE hr.jobs_transport TABLESPACE jobs_tbs AS SELECT * FROM hr.jobs;
regions_tbs
表領域に、新規の表hr.regions_transport
を含めます。
CREATE TABLE hr.regions_transport TABLESPACE regions_tbs AS SELECT * FROM hr.regions;
これらの例では、いずれも次のことを想定しています。
ソース・データベースでhr.jobs_transport
表およびhr.regions_transport
表に対するすべての変更を取得して、別の接続先データベースでそれらの変更を適用します。
hr.jobs_transport
表はソース・データベースに存在し、単一の自己完結型の表領域jobs_tbs
に含まれます。 jobs_tbs
表領域は、単一のデータ・ファイルjobs_tbs.dbf
に格納されます。
hr.regions_transport
表はソース・データベースに存在し、単一の自己完結型の表領域regions_tbs
に含まれます。 regions_tbs
表領域は、単一のデータ・ファイルregions_tbs.dbf
に格納されます。
jobs_tbs
表領域およびregions_tbs
表領域には、他のスキーマからのデータは含まれません。
hr.jobs_transport
表、hr.regions_transport
表、jobs_tbs
表領域およびregions_tbs
表領域は、接続先データベースには存在しません。
ソース・データベースおよび接続先データベースの両方でOracle Streams管理者strmadmin
を構成済です。また、両方のデータベースでこのOracle Streams管理者にDBA
ロールを付与済です。
参照:
|
この例では、トランスポータブル表領域を使用して、表領域セット内のデータベース・オブジェクトをインスタンス化します。「トランスポータブル表領域またはRecovery Managerを使用した表領域内のオブジェクトのインスタンス化」に示した想定事項に加えて、この例では、次のことを想定しています。
ソース・データベースのOracle Streams管理者には、トランスポータブル表領域のエクスポートを実行するためのEXP_FULL_DATABASE
ロールが付与されています。DBA
ロールにはEXP_FULL_DATABASE
ロールが含まれているため、このロールは十分です。この例では、Oracle Streams管理者はトランスポータブル表領域のエクスポートを実行します。
接続先データベースのOracle Streams管理者には、トランスポータブル表領域のインポートを実行するためのIMP_FULL_DATABASE
ロールが付与されています。DBA
ロールにはIMP_FULL_DATABASE
ロールが含まれているため、このロールは十分です。この例では、Oracle Streams管理者はトランスポータブル表領域のエクスポートを実行します。
参照: トランスポータブル表領域を使用する方法、および適用される可能性のある制限については、『Oracle Database管理者ガイド』を参照してください。 |
次の手順を実行して、トランスポータブル表領域を使用してjobs_tbs
表領域内のデータベース・オブジェクトをインスタンス化します。
SQL*Plusで、Oracle Streams管理者としてソース・データベースに接続します。
SQL*Plusでデータベースに接続する手順については、『Oracle Database管理者ガイド』を参照してください。
エクスポート・ダンプ・ファイルおよびエクスポート・ログ・ファイルを保持するディレクトリ・オブジェクトを作成します。
CREATE DIRECTORY TRANS_DIR AS '/usr/trans_dir';
インスタンス化のためにhr.jobs_transport
表およびhr.regions_transport
表を準備します。この手順を実行するには、次の方法があります。
DBMS_STREAMS_ADM
パッケージのプロシージャを使用して、hr.jobs_transport
表およびhr.regions_transport
表のルールを取得プロセスのポジティブ・ルール・セットに追加します。取得プロセスがソース・データベースへのデータベース・リンクを持つローカルの取得プロセスまたはダウンストリームの取得プロセスである場合に、このプロシージャを実行すると、この表がインスタンス化のために自動的に準備されます。
たとえば、次のプロシージャを実行すると、ルールが取得プロセスstrm01_capture
のポジティブ・ルール・セットに追加され、hr.jobs_transport
表がインスタンス化のために準備されます。
BEGIN DBMS_STREAMS_ADM.ADD_TABLE_RULES( table_name => 'hr.jobs_transport', streams_type => 'capture', streams_name => 'strm01_capture', queue_name => 'strmadmin.strm01_queue', include_dml => TRUE, include_ddl => TRUE, inclusion_rule => TRUE); END; /
次のプロシージャを実行すると、ルールが取得プロセスstrm01_capture
のポジティブ・ルール・セットに追加され、hr.regions_transport
表がインスタンス化のために準備されます。
BEGIN DBMS_STREAMS_ADM.ADD_TABLE_RULES( table_name => 'hr.regions_transport', streams_type => 'capture', streams_name => 'strm01_capture', queue_name => 'strmadmin.strm01_queue', include_dml => TRUE, include_ddl => TRUE, inclusion_rule => TRUE); END; /
DBMS_RULE_ADM
パッケージのプロシージャを使用して、hr.jobs_transport
表およびhr.regions_transport
表のルールを取得プロセスのポジティブ・ルール・セットに追加します。次に、表を指定してDBMS_CAPTURE_ADM
パッケージのPREPARE_TABLE_INSTANTIATION
プロシージャを実行することによって、これらの表をインスタンス化のために手動で準備します。
BEGIN DBMS_CAPTURE_ADM.PREPARE_TABLE_INSTANTIATION( table_name => 'hr.jobs_transport'); END; / BEGIN DBMS_CAPTURE_ADM.PREPARE_TABLE_INSTANTIATION( table_name => 'hr.regions_transport'); END; /
データベース・オブジェクトをインスタンス化のために準備する前に、ルールを取得プロセスのポジティブ・ルール・セットに追加したことを確認してください。
DBMS_STREAMS_ADM
パッケージのプロシージャを使用して、hr.jobs_transport
表およびhr.regions_transport
表のルールを同期取得のポジティブ・ルール・セットに追加します。実行するプロシージャによって、表がインスタンス化のために自動的に準備されます。
たとえば、次のプロシージャを実行すると、同期取得sync_capture
のポジティブ・ルール・セットにルールが追加され、hr.jobs_transport
表がインスタンス化のために準備されます。
BEGIN DBMS_STREAMS_ADM.ADD_TABLE_RULES( table_name => 'hr.jobs_transport', streams_type => 'sync_capture', streams_name => 'sync_capture', queue_name => 'strmadmin.streams_queue'); END; /
次のプロシージャを実行すると、同期取得sync_capture
のポジティブ・ルール・セットにルールが追加され、hr.regions_transport
表がインスタンス化のために準備されます。
BEGIN DBMS_STREAMS_ADM.ADD_TABLE_RULES( table_name => 'hr.regions_transport', streams_type => 'sync_capture', streams_name => 'sync_capture', queue_name => 'strmadmin.streams_queue'); END; /
インスタンス化するオブジェクトを含む表領域を読取り専用にします。この例では、jobs_tbs
表領域およびregions_tbs
表領域にデータベース・オブジェクトが含まれています。
ALTER TABLESPACE jobs_tbs READ ONLY; ALTER TABLESPACE regions_tbs READ ONLY;
コマンドラインでデータ・ポンプ・エクスポート・ユーティリティを使用し、トランスポータブル表領域のエクスポート・パラメータにソース・データベースのjobs_tbs
およびregions_tbs
表領域を指定して、この表領域をエクスポートします。次に、トランスポータブル表領域のエクスポート・パラメータを使用するエクスポート・コマンドの例を示します。
expdp strmadmin TRANSPORT_TABLESPACES=jobs_tbs, regions_tbs DIRECTORY=TRANS_DIR DUMPFILE=tbs_ts.dmp
エクスポート・コマンドを実行する際は、EXP_FULL_DATABASE
ロールが付与され、ディレクトリ・オブジェクトに対するREAD
権限およびWRITE
権限を持つ管理ユーザーとして接続していることを確認してください。
トランスポータブル表領域を使用してインスタンス化を実行することもできます。
参照: エクスポートを実行する方法の詳細は、『Oracle Databaseユーティリティ』を参照してください。 |
SQL*Plusで、Oracle Streams管理者として接続先データベースに接続します。
インポート・ダンプ・ファイルおよびインポート・ログ・ファイルを保持するディレクトリ・オブジェクトを作成します。
CREATE DIRECTORY TRANS_DIR AS '/usr/trans_dir';
表領域のデータ・ファイルとエクスポート・ダンプ・ファイルtbs_ts.dmp
を接続先データベースに送信します。DBMS_FILE_TRANSFER
パッケージ、バイナリFTPまたは他のなんらかの方法を使用して、ファイルを接続先データベースに送信できます。 ファイル送信後、エクスポート・ダンプ・ファイルは、手順7で作成したディレクトリ・オブジェクトに対応するディレクトリに存在することになります。
接続先データベースのコマンドラインでデータ・ポンプ・インポート・ユーティリティを使用し、トランスポータブル表領域のインポート・パラメータにエクスポート・ダンプ・ファイルtbs_ts.dmp
を使用して、このエクスポート・ダンプ・ファイルをインポートします。インポートを実行すると、接続先データベースで、hr.jobs_transport
表およびhr.regions_transport
表にインスタンス化SCNが自動的に設定されます。
次にインポート・コマンドの例を示します。
impdp strmadmin DIRECTORY=TRANS_DIR DUMPFILE=tbs_ts.dmp TRANSPORT_DATAFILES=/usr/orc/dbs/jobs_tbs.dbf,/usr/orc/dbs/regions_tbs.dbf
インポート・コマンドを実行する際は、IMP_FULL_DATABASE
ロールが付与され、ディレクトリ・オブジェクトに対するREAD
権限およびWRITE
権限を持つ管理ユーザーとして接続していることを確認してください。
参照: インポートを実行する方法の詳細は、『Oracle Databaseユーティリティ』を参照してください。 |
必要に応じて、ソース・データベースと接続先データベースの両方にOracle Streams管理者として接続し、表領域を読取り/書込みモードに設定します。
ALTER TABLESPACE jobs_tbs READ WRITE; ALTER TABLESPACE regions_tbs READ WRITE;
注意: エクスポート・データベースからエクスポートされた表の表サプリメンタル・ログ・グループは、インポート・データベースで表がインポートされる際に保持されます。これらのサプリメンタル・ログ・グループは、必要に応じて削除できます。 |
Recovery ManagerのTRANSPORT
TABLESPACE
コマンドを実行すると、データ・ポンプおよびRecovery Managerで管理される補助インスタンスを使用して、ソース・データベースの表領域または表領域セットがオンライン状態のままで、表領域または表領域セットのデータベース・オブジェクトがエクスポートされます。 Recovery ManagerのTRANSPORT
TABLESPACE
コマンドを使用すると、データ・ポンプ・エクスポート・ダンプ・ファイルおよびデータ・ファイルが生成されます。これらのファイルは、接続先データベースでの表領域または表領域セットのデータ・ポンプ・インポートの実行に使用できます。DBMS_STREAMS_TABLESPACE_ADM
パッケージのATTACH_TABLESPACES
プロシージャを使用して、接続先データベースで表領域または表領域セットをアタッチすることもできます。
「トランスポータブル表領域またはRecovery Managerを使用した表領域内のオブジェクトのインスタンス化」に示した想定事項に加えて、この例では、次のことを想定しています。
ソース・データベースはtts1.net
です。
接続先データベースはtts2.net
です。
参照: Recovery ManagerのTRANSPORT TABLESPACE コマンドを使用する手順については、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。 |
次の手順を実行して、トランスポータブル表領域およびRecovery Managerを使用してjobs_tbs
およびregions_tbs
表領域内のデータベース・オブジェクトをインスタンス化します。
インスタンス化する表領域を含むソース・データベースのバックアップを作成します(存在しない場合)。Recovery Managerには、表領域のクローニング用に有効なバックアップが必要です。この例では、jobs_tbs
表領域およびregions_tbs
表領域を含むソース・データベースのバックアップを作成します(存在しない場合)。
SQL*Plusで、Oracle Streams管理者としてソース・データベースtts1.net
に接続します。
SQL*Plusでデータベースに接続する手順については、『Oracle Database管理者ガイド』を参照してください。
オプションで、エクスポート・ダンプ・ファイルおよびエクスポート・ログ・ファイルを保持するディレクトリ・オブジェクトを作成します。
CREATE DIRECTORY SOURCE_DIR AS '/usr/db_files';
この手順はオプションです。これは、手順9でDATAPUMP
DIRECTORY
パラメータを省略してRecovery ManagerのTRANSPORT
TABLESPACE
コマンドを実行した場合に、補助インスタンスにディレクトリ・オブジェクトSTREAMS_DIROBJ_DPDIR
が作成されるためです。
インスタンス化のためにhr.jobs_transport
表およびhr.regions_transport
表を準備します。この手順を実行するには、次の方法があります。
DBMS_STREAMS_ADM
パッケージのプロシージャを使用して、hr.jobs_transport
表およびhr.regions_transport
表のルールを取得プロセスのポジティブ・ルール・セットに追加します。取得プロセスがソース・データベースへのデータベース・リンクを持つローカルの取得プロセスまたはダウンストリームの取得プロセスである場合に、このプロシージャを実行すると、この表がインスタンス化のために自動的に準備されます。
たとえば、次のプロシージャを実行すると、ルールが取得プロセスstrm01_capture
のポジティブ・ルール・セットに追加され、hr.jobs_transport
表がインスタンス化のために準備されます。
BEGIN DBMS_STREAMS_ADM.ADD_TABLE_RULES( table_name => 'hr.jobs_transport', streams_type => 'capture', streams_name => 'strm01_capture', queue_name => 'strmadmin.strm01_queue', include_dml => TRUE, include_ddl => TRUE, inclusion_rule => TRUE); END; /
次のプロシージャを実行すると、ルールが取得プロセスstrm01_capture
のポジティブ・ルール・セットに追加され、hr.regions_transport
表がインスタンス化のために準備されます。
BEGIN DBMS_STREAMS_ADM.ADD_TABLE_RULES( table_name => 'hr.regions_transport', streams_type => 'capture', streams_name => 'strm01_capture', queue_name => 'strmadmin.strm01_queue', include_dml => TRUE, include_ddl => TRUE, inclusion_rule => TRUE); END; /
DBMS_RULE_ADM
パッケージのプロシージャを使用して、hr.jobs_transport
表およびhr.regions_transport
表のルールを取得プロセスのポジティブ・ルール・セットに追加します。次に、表を指定してDBMS_CAPTURE_ADM
パッケージのPREPARE_TABLE_INSTANTIATION
プロシージャを実行することによって、これらの表をインスタンス化のために手動で準備します。
BEGIN DBMS_CAPTURE_ADM.PREPARE_TABLE_INSTANTIATION( table_name => 'hr.jobs_transport'); END; / BEGIN DBMS_CAPTURE_ADM.PREPARE_TABLE_INSTANTIATION( table_name => 'hr.regions_transport'); END; /
データベース・オブジェクトをインスタンス化のために準備する前に、ルールを取得プロセスのポジティブ・ルール・セットに追加したことを確認してください。
DBMS_STREAMS_ADM
パッケージのプロシージャを使用して、hr.jobs_transport
表およびhr.regions_transport
表のルールを同期取得のポジティブ・ルール・セットに追加します。実行するプロシージャによって、表がインスタンス化のために自動的に準備されます。
たとえば、次のプロシージャを実行すると、同期取得sync_capture
のポジティブ・ルール・セットにルールが追加され、hr.jobs_transport
表がインスタンス化のために準備されます。
BEGIN DBMS_STREAMS_ADM.ADD_TABLE_RULES( table_name => 'hr.jobs_transport', streams_type => 'sync_capture', streams_name => 'sync_capture', queue_name => 'strmadmin.streams_queue'); END; /
次のプロシージャを実行すると、同期取得sync_capture
のポジティブ・ルール・セットにルールが追加され、hr.regions_transport
表がインスタンス化のために準備されます。
BEGIN DBMS_STREAMS_ADM.ADD_TABLE_RULES( table_name => 'hr.regions_transport', streams_type => 'sync_capture', streams_name => 'sync_capture', queue_name => 'strmadmin.streams_queue'); END; /
Recovery ManagerのTRANSPORT
TABLESPACE
コマンドに指定する終了SCNを判断します。
SET SERVEROUTPUT ON SIZE 1000000 DECLARE until_scn NUMBER; BEGIN until_scn:= DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER; DBMS_OUTPUT.PUT_LINE('Until SCN: ' || until_scn); END; /
戻された終了SCNをメモします。この番号は手順9で使用します。この例では、戻された終了SCNが7661956
であると想定します。
オプションで、この手順をスキップできます。この場合、手順9でRecovery ManagerのTRANSPORT
TABLESPACE
コマンドにUNTIL句を指定しないでください。UNTIL句が指定されない場合、Recovery Managerは最後のアーカイブREDOログ・ファイルを使用して終了SCNを自動的に判別します。
SQL*Plusで、管理ユーザーとしてソース・データベースtts1.net
に接続します。
現行のオンラインREDOログをアーカイブします。
ALTER SYSTEM ARCHIVE LOG CURRENT;
Recovery Managerクライアントを起動し、TARGET
としてソース・データベースtts1.net
に接続します。
Recovery ManagerのCONNECT
コマンドの詳細は、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。
ソース・データベースtts1.net
で、Recovery ManagerのTRANSPORT
TABLESPACE
コマンドを使用して表領域セットのダンプ・ファイルを生成します。
RMAN> RUN { TRANSPORT TABLESPACE 'jobs_tbs', 'regions_tbs' UNTIL SCN 7661956 AUXILIARY DESTINATION '/usr/aux_files' DATAPUMP DIRECTORY SOURCE_DIR DUMP FILE 'jobs_regions_tbs.dmp' EXPORT LOG 'jobs_regions_tbs.log' IMPORT SCRIPT 'jobs_regions_tbs_imp.sql' TABLESPACE DESTINATION '/orc/dbs'; }
TRANSPORT
TABLESPACE
コマンドを実行すると、ソース・データベースが実行されているコンピュータ・システム上の次のディレクトリに、このファイルが格納されます。
SOURCE_DIR
ディレクトリ・オブジェクト(/usr/db_files
)に対応するディレクトリには、エクスポート・ダンプ・ファイルおよびエクスポート・ログ・ファイルが含まれます。
/orc/dbs
ディレクトリには、生成された表領域のデータ・ファイルおよびインポート・スクリプトが含まれます。このスクリプトを使用し、接続先データベースに表領域をアタッチしてインスタンス化を完了します。
必要に応じて、インポート・スクリプトを変更します。スクリプト内の次のいずれかまたは両方の項目の変更が必要になる場合があります。
エクスポートした表領域を接続先データベースに含めるために使用する方法。インポート・スクリプトには、エクスポートした表領域を接続先データベースに含めるための2つの方法が含まれます。データ・ポンプ・インポート・コマンド(impdp
)と、DBMS_STREAMS_TABLESPACE_ADM
パッケージ内のATTACH_TABLESPACES
プロシージャを使用して表領域をアタッチするスクリプトです。
デフォルトでは、スクリプトでは表領域をアタッチする方法が使用されます。データ・ポンプ・インポート・コマンドはコメント・アウトされます。データ・ポンプ・インポートを使用する場合、impdpコマンドを囲むコメント記号(/*
および*/
)を削除し、表領域をアタッチするスクリプトをコメント記号で囲むか、またはそのスクリプトを削除します。表領域をアタッチするスクリプトはSET
SERVEROUTPUT
ON
で始まり、ファイルの最後まで続きます。
スクリプトに指定されているディレクトリ・パス。 手順11で、インポート・スクリプト(jobs_regions_tbs_imp.sql
)、データ・ポンプ・エクスポート・ダンプ・ファイル(jobs_regions_tbs.dmp
)および生成された各表領域のデータ・ファイル(jobs_tbs.dbf
とregions_tbs.dbf
)を、接続先データベースが実行されているコンピュータ・システムの1つ以上のディレクトリに転送します。スクリプトに指定されているディレクトリ・パスが正しいことを確認します。
インポート・スクリプト(jobs_regions_tbs_imp.sql
)、データ・ポンプ・エクスポート・ダンプ・ファイル(jobs_regions_tbs.dmp
)および生成された各表領域のデータ・ファイル(jobs_tbs.dbf
とregions_tbs.dbf
)を接続先データベースに転送します。DBMS_FILE_TRANSFER
パッケージ、バイナリFTPまたは他のなんらかの方法を使用して、ファイルを接続先データベースに送信できます。ファイル転送後、これらのファイルは、インポート・スクリプトに指定されたディレクトリに存在します。
SQL*Plusで、Oracle Streams管理者として接続先データベースtts2.net
に接続します。
インポート・スクリプトを実行します。
SET ECHO ON SPOOL jobs_tbs_imp.out @jobs_tbs_imp.sql
スクリプトが完了したら、jobs_tbs_imp.out
スプール・ファイルをチェックして、すべてのアクションが正常に終了していることを確認します。
この項の例では、Recovery ManagerのDUPLICATE
コマンドまたはCONVERT
DATABASE
コマンドを使用してデータベース全体をインスタンス化する場合に必要な手順について説明します。これらのいずれかのRecovery Managerのコマンドを使用してデータベース全体をインスタンス化するには、次の一般的な手順を実行します。
Recovery Managerのコマンドを使用して、ソース・データベース全体を接続先サイトにコピーします。
DBMS_STREAMS_ADM
パッケージのREMOVE_STREAMS_CONFIGURATION
プロシージャを使用して、接続先サイトからOracle Streams構成を削除します。
ソース・データベースからの変更を適用する適用プロセスも含め、Oracle Streams接続先サイトを構成します。
この手順は、ソース・データベースで実行中の取得プロセスまたは伝播を停止させずに実行できます。
ソース・データベースと接続先データベースが同じプラットフォーム上で実行されている場合、Recovery ManagerのDUPLICATE
コマンドを使用してインスタンス化します。ソース・データベースと接続先データベースが異なるプラットフォーム上で実行されている場合は、Recovery ManagerのCONVERT
DATABASE
コマンドを使用してインスタンス化します。次のいずれかの項の手順に従います。
注意:
|
参照: Oracle Streams管理者を構成する方法は、『Oracle Streams概要および管理』を参照してください。 |
この項の例では、Recovery ManagerのDUPLICATE
コマンドを使用して、データベース全体をインスタンス化します。この例では、次のことを想定しています。
ソース・データベースdpx1.net
に対するすべての変更を取得して、別の接続先データベースdpx2.net
にそれらの変更を伝播し、適用します。
ソース・データベースでOracle Streams管理者strmadmin
を構成済です。
dpx1.net
データベースとdpx2.net
データベースは、同じプラットフォームで実行されています。
参照: Recovery ManagerのDUPLICATE コマンドを使用する方法の詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。 |
次の手順を実行して、ソース・データベースと接続先データベースが同じプラットフォームで実行されている場合に、Recovery Managerを使用してデータベース全体をインスタンス化します。
ソース・データベースのバックアップを作成します(存在しない場合)。Recovery Managerには、複製用に有効なバックアップが必要です。この例では、dpx1.net
のバックアップを作成します(存在しない場合)。
注意: Recovery ManagerのDUPLICATE コマンドを実行する際にFROM ACTIVE DATABASE オプションを使用する場合、ソース・データベースのバックアップは不要です。大規模なデータベースでは、FROM ACTIVE DATABASE オプションの実行に大量のネットワーク・リソースが必要になります。この例では、このオプションは使用しません。 |
SQL*Plusで、Oracle Streams管理者としてソース・データベースdpx1.net
に接続します。
SQL*Plusでデータベースに接続する手順については、『Oracle Database管理者ガイド』を参照してください。
ソース・データベースからの変更をステ―ジングするANYDATA
キューを作成します(存在しない場合)。このキューは、構成後に接続先データベースに伝播される変更をステージングします。
たとえば、次のプロシージャを実行すると、キューstreams_queue
が作成されます。
EXEC DBMS_STREAMS_ADM.SET_UP_QUEUE();
手順9までは、SQL*Plusでソース・データベースにOracle Streams管理者として接続したまま実行してください。
dpx1.net
からdpx2.net
にデータベース・リンクを作成します。
CREATE DATABASE LINK dpx2.net CONNECT TO strmadmin
IDENTIFIED BY password USING 'dpx2.net';
ソース・データベースのソース・キューから接続先データベースの宛先キューへの伝播を作成します。この時点では接続先データベースの宛先キューは存在していませんが、この伝播を作成すると、ソース・キューにエンキューされたLCRは、伝播が可能になるまでこのキューでステージングされます。ソース・キューは、取得されたLCRのみでなく、接続先データベースでOracle Streamsデータ・ディクショナリを移入する内部メッセージもステージングします。
次のプロシージャを実行すると、dpx1_to_dpx2
伝播が作成されます。
BEGIN DBMS_STREAMS_ADM.ADD_GLOBAL_PROPAGATION_RULES( streams_name => 'dpx1_to_dpx2', source_queue_name => 'strmadmin.streams_queue', destination_queue_name => 'strmadmin.streams_queue@dpx2.net', include_dml => TRUE, include_ddl => TRUE, source_database => 'dpx1.net', inclusion_rule => TRUE, queue_to_queue => TRUE); END; /
手順5で作成した伝播を停止します。
BEGIN DBMS_PROPAGATION_ADM.STOP_PROPAGATION( propagation_name => 'dpx1_to_dpx2'); END; /
ソース・データベース全体をインスタンス化のために準備します(準備していない場合)。DBMS_STREAMS_ADM
パッケージのADD_GLOBAL_RULES
プロシージャを使用して、ソース・データベースに対するすべての変更を取得する取得プロセスを作成します(存在しない場合)。取得プロセスがソース・データベースへのデータベース・リンクを持つローカルの取得プロセスまたはダウンストリームの取得プロセスである場合に、このプロシージャを実行すると、ソース・データベース全体がインスタンス化のために自動的に準備されます。このような取得プロセスがすでに存在している場合は、DBA_CAPTURE_PREPARED_DATABASE
データ・ディクショナリ・ビューを問い合せて、ソース・データベースがインスタンス化のために準備されていることを確認してください。
取得プロセスが存在せず、作成する必要がある場合、この例ではcapture_db
取得プロセスが作成されます。
BEGIN DBMS_STREAMS_ADM.ADD_GLOBAL_RULES( streams_type => 'capture', streams_name => 'capture_db', queue_name => 'strmadmin.streams_queue', include_dml => TRUE, include_ddl => TRUE, inclusion_rule => TRUE); END; /
取得プロセスがすでに存在しており、データベース全体をインスタンス化のために準備する必要がある場合は、次のプロシージャを実行します。
EXEC DBMS_CAPTURE_ADM.PREPARE_GLOBAL_INSTANTIATION();
手順7で取得プロセスを作成している場合、その取得プロセスを起動します。
BEGIN DBMS_CAPTURE_ADM.START_CAPTURE( capture_name => 'capture_db'); END; /
Recovery ManagerのDUPLICATE
コマンドに指定する終了SCNを判断します。
SET SERVEROUTPUT ON SIZE 1000000 DECLARE until_scn NUMBER; BEGIN until_scn:= DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER; DBMS_OUTPUT.PUT_LINE('Until SCN: ' || until_scn); END; /
戻された終了SCNをメモします。この番号は手順14で使用します。この例では、戻された終了SCNが3050191
であると想定します。
SQL*Plusで、管理ユーザーとしてソース・データベースdpx1.net
に接続します。
SQL*Plusでデータベースに接続する手順については、『Oracle Database管理者ガイド』を参照してください。
現行のオンラインREDOログをアーカイブします。
ALTER SYSTEM ARCHIVE LOG CURRENT;
データベース複製のために環境を準備します。これには、接続先データベースを複製の補助インスタンスとして準備することも含まれます。手順については、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。
Recovery Managerクライアントを起動し、TARGET
としてソース・データベースdpx1.net
に、AUXILIARY
として接続先データベースdpx2.net
に接続します。
Recovery ManagerのCONNECT
コマンドの詳細は、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。
OPEN
RESTRICTED
オプションを指定してRecovery ManagerのDUPLICATE
コマンドを実行し、接続先データベースでソース・データベースをインスタンス化します。OPEN
RESTRICTED
オプションは必須です。このオプションを指定すると、SQL文ALTER
SYSTEM
ENABLE
RESTRICTED
SESSION
を発行することによって、複製データベースで制限付きセッションを有効にできます。Recovery Managerは、複製データベースがオープンされる直前にこの文を発行します。
UNTIL
SCN
句を使用して、複製用のSCNを指定できます。この句には、手順9で判断した終了SCNを使用します。Recovery ManagerのDUPLICATE
コマンドに指定した終了SCNは、手順7でデータベースがインスタンス化のために準備された際のSCNより大きい必要があります。また、アーカイブREDOログが、指定した終了SCN値以上で使用可能である必要があります。したがって、手順11では、終了SCNを含むREDOログをアーカイブしています。
DUPLICATE
コマンドのTO
database_name
に、複製データベースの名前を指定していることを確認してください。この例では、複製データベースの名前はdpx2
です。したがって、この例のDUPLICATE
コマンドにはTO
dpx2
が含まれます。
次に、Recovery ManagerのDUPLICATE
コマンドの例を示します。
RMAN> RUN { SET UNTIL SCN 3050191; ALLOCATE AUXILIARY CHANNEL dpx2 DEVICE TYPE sbt; DUPLICATE TARGET DATABASE TO dpx2 NOFILENAMECHECK OPEN RESTRICTED; }
参照: Recovery ManagerのDUPLICATE コマンドの詳細は、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。 |
SQL*Plusで接続先データベースに管理ユーザーとして接続し、データベースのグローバル名を変更します。Recovery ManagerのDUPLICATE
コマンドを実行すると、接続先データベースはソース・データベースと同じグローバル名を持ちます。
ALTER DATABASE RENAME GLOBAL_NAME TO DPX2.NET;
SQL*Plusで接続先データベースに管理ユーザーとして接続し、次のプロシージャを実行します。
注意: このプロシージャを実行するとローカルのOracle Streams構成が削除されるため、このプロシージャを実行する際は、ソース・データベースではなく接続先データベースに接続していることを確認してください。 |
EXEC DBMS_STREAMS_ADM.REMOVE_STREAMS_CONFIGURATION();
注意: ソース・データベースの表のサプリメンタル・ログ・グループは接続先データベースに保持されます。REMOVE_STREAMS_CONFIGURATION プロシージャを実行してもこれらは削除されません。これらのサプリメンタル・ログ・グループは、必要に応じて削除できます。 |
参照: REMOVE_STREAMS_CONFIGURATION プロシージャの詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。 |
接続先データベースでALTER
SYSTEM
文を実行して、RESTRICTED
SESSION
を無効化します。
ALTER SYSTEM DISABLE RESTRICTED SESSION;
接続先データベースで、手順5で指定したキューを作成します。
たとえば、次のプロシージャを実行すると、キューstreams_queue
が作成されます。
EXEC DBMS_STREAMS_ADM.SET_UP_QUEUE();
接続先データベースにOracle Streams管理者として接続し、Oracle Streams環境を構成します。
参照: Oracle Streams管理者を構成する方法は、『Oracle Streams概要および管理』を参照してください。 |
接続先データベースで、接続先データベースからソース・データベースへのデータベース・リンクを作成します。
CREATE DATABASE LINK dpx1.net CONNECT TO strmadmin
IDENTIFIED BY password USING 'dpx1.net';
次の手順でrecursiveパラメータをTRUE
に設定してSET_GLOBAL_INSTANTIATION_SCN
プロシージャを実行するため、このデータベース・リンクが必要になります。
接続先データベースで、ソース・データベースのグローバル・インスタンス化SCNを設定します。Recovery ManagerのDUPLICATE
コマンドを実行すると、UNTIL
SCN
句で指定したSCN値より1つ少ない値まで、データベースが複製されます。したがって、手順14でDUPLICATE
コマンドを実行した際に指定した終了SCN値から1を引く必要があります。この例では、終了SCNを3050191
に設定しています。したがって、インスタンス化SCNは3050191
-
1
の3050190
に設定する必要があります。
たとえば、dpx1.net
ソース・データベースのグローバル・インスタンス化SCNを3050190
に設定するには、次のプロシージャを実行します。
BEGIN DBMS_APPLY_ADM.SET_GLOBAL_INSTANTIATION_SCN( source_database_name => 'dpx1.net', instantiation_scn => 3050190, recursive => TRUE); END; /
接続先データベースのすべてのスキーマおよび表のインスタンス化SCNを設定するには、recursive
パラメータがTRUE
に設定されていることを確認してください。
接続先データベースで、構成した適用プロセスを起動できます。
ソース・データベースで、手順6で停止した伝播を起動します。
BEGIN DBMS_PROPAGATION_ADM.START_PROPAGATION( queue_name => 'dpx1_to_dpx2'); END; /
この項の例では、Recovery ManagerのCONVERT
DATABASE
コマンドを使用して、データベース全体をインスタンス化します。この例では、次のことを想定しています。
ソース・データベースcvx1.net
に対するすべての変更を取得して、別の接続先データベースcvx2.net
にそれらの変更を伝播し、適用します。
ソース・データベースでOracle Streams管理者strmadmin
を構成済です。
cvx1.net
とcvx2.net
データベースは異なるプラットフォーム上で実行され、Recovery ManagerのCONVERT
DATABASE
コマンドはそのプラットフォームの組合せでサポートされています。DBMS_TDB
パッケージを使用して、任意のプラットフォームの組合せでサポートされているかどうかを判別できます。
Recovery ManagerのCONVERT
DATABASE
コマンドを実行すると、変換済のデータ・ファイル、初期化パラメータ・ファイル(PFILE)およびSQLスクリプトが生成されます。 変換済のデータ・ファイルおよびPFILEは接続先データベースで使用し、SQLスクリプトは、接続先プラットフォームで接続先データベースを作成するために使用します。
参照: Recovery ManagerのCONVERT DATABASE コマンドを使用する手順については、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。 |
次の手順を実行して、ソース・データベースと接続先データベースが異なるプラットフォームで実行されている場合に、Recovery Managerを使用してデータベース全体をインスタンス化します。
ソース・データベースのバックアップを作成します(存在しない場合)。Recovery Managerには、有効なバックアップが必要です。この例では、cvx1.net
のバックアップを作成します(存在しない場合)。
SQL*Plusで、Oracle Streams管理者としてソース・データベースcvx1.net
に接続します。
SQL*Plusでデータベースに接続する手順については、『Oracle Database管理者ガイド』を参照してください。
ソース・データベースからの変更をステ―ジングするANYDATA
キューを作成します(存在しない場合)。このキューは、構成後に接続先データベースに伝播される変更をステージングします。
たとえば、次のプロシージャを実行すると、キューstreams_queue
が作成されます。
EXEC DBMS_STREAMS_ADM.SET_UP_QUEUE();
手順8までは、SQL*Plusでソース・データベースにOracle Streams管理者として接続したまま実行してください。
cvx1.net
からcvx2.net
へのデータベース・リンクを作成します。
CREATE DATABASE LINK cvx2.net CONNECT TO strmadmin
IDENTIFIED BY password USING 'cvx2.net';
ソース・データベースのソース・キューから接続先データベースの宛先キューへの伝播を作成します。この時点では接続先データベースの宛先キューは存在していませんが、この伝播を作成すると、ソース・キューにエンキューされたLCRは、伝播が可能になるまでこのキューでステージングされます。ソース・キューは、取得されたLCRのみでなく、接続先データベースでOracle Streamsデータ・ディクショナリを移入する内部メッセージもステージングします。
次のプロシージャを実行すると、cvx1_to_cvx2
伝播が作成されます。
BEGIN DBMS_STREAMS_ADM.ADD_GLOBAL_PROPAGATION_RULES( streams_name => 'cvx1_to_cvx2', source_queue_name => 'strmadmin.streams_queue', destination_queue_name => 'strmadmin.streams_queue@cvx2.net', include_dml => TRUE, include_ddl => TRUE, source_database => 'cvx1.net', inclusion_rule => TRUE, queue_to_queue => TRUE); END; /
手順5で作成した伝播を停止します。
BEGIN DBMS_PROPAGATION_ADM.STOP_PROPAGATION( propagation_name => 'cvx1_to_cvx2'); END; /
ソース・データベース全体をインスタンス化のために準備します(準備していない場合)。DBMS_STREAMS_ADM
パッケージのADD_GLOBAL_RULES
プロシージャを使用して、ソース・データベースに対するすべての変更を取得する取得プロセスを作成します(存在しない場合)。取得プロセスがソース・データベースへのデータベース・リンクを持つローカルの取得プロセスまたはダウンストリームの取得プロセスである場合に、このプロシージャを実行すると、ソース・データベース全体がインスタンス化のために自動的に準備されます。このような取得プロセスがすでに存在している場合は、DBA_CAPTURE_PREPARED_DATABASE
データ・ディクショナリ・ビューを問い合せて、ソース・データベースがインスタンス化のために準備されていることを確認してください。
取得プロセスが存在せず、作成する必要がある場合、この例ではcapture_db
取得プロセスが作成されます。
BEGIN DBMS_STREAMS_ADM.ADD_GLOBAL_RULES( streams_type => 'capture', streams_name => 'capture_db', queue_name => 'strmadmin.streams_queue', include_dml => TRUE, include_ddl => TRUE, inclusion_rule => TRUE); END; /
取得プロセスがすでに存在しており、データベース全体をインスタンス化のために準備する必要がある場合は、次のプロシージャを実行します。
EXEC DBMS_CAPTURE_ADM.PREPARE_GLOBAL_INSTANTIATION();
手順7で取得プロセスを作成している場合、その取得プロセスを起動します。
BEGIN DBMS_CAPTURE_ADM.START_CAPTURE( capture_name => 'capture_db'); END; /
SQL*Plusで、管理ユーザーとしてソース・データベースに接続します。
SQL*Plusでデータベースに接続する手順については、『Oracle Database管理者ガイド』を参照してください。
現行のオンラインREDOログをアーカイブします。
ALTER SYSTEM ARCHIVE LOG CURRENT;
データベースの変換のために環境を準備します。これには、ソース・データベースを読取り専用モードでオープンすることも含まれます。この操作の手順は次のとおりです。
ソース・データベースがオープンしている場合は、停止して読取り専用モードで起動します。
DBMS_TDB
パッケージのCHECK_DB
およびCHECK_EXTERNAL
ファンクションを実行します。結果をチェックして、Recovery ManagerのCONVERT
DATABASE
コマンドで変換がサポートされていることを確認します。
参照: これらの手順の詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。 |
ソース・データベースの現行のSCNを判別します。
SET SERVEROUTPUT ON SIZE 1000000 DECLARE current_scn NUMBER; BEGIN current_scn:= DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER; DBMS_OUTPUT.PUT_LINE('Current SCN: ' || current_scn); END; /
戻されたSCN値をメモします。この番号は手順24で使用します。この例では、戻された値が46931285
であると想定します。
Recovery Managerクライアントを起動し、TARGET
としてソース・データベースcvx1.net
に接続します。
Recovery ManagerのCONNECT
コマンドの詳細は、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。
CONVERT
DATABASE
コマンドを実行します。
CONVERT
DATABASE
コマンドのNEW
DATABASE
database_name
に、接続先データベースの名前を指定していることを確認してください。この例では、接続先データベースの名前はcvx2
です。したがって、この例のCONVERT
DATABASE
コマンドにはNEW
DATABASE
cvx2
が含まれます。
Linux
IA
(64-bit)
プラットフォームで実行される接続先データベースに対するRecovery ManagerのCONVERT
DATABASE
コマンドの例を次に示します。
CONVERT DATABASE NEW DATABASE 'cvx2' TRANSPORT SCRIPT '/tmp/convertdb/transportscript.sql' TO PLATFORM 'Linux IA (64-bit)' DB_FILE_NAME_CONVERT '/home/oracle/dbs','/tmp/convertdb';
Recovery ManagerのCONVERT
DATABASE
コマンドによって生成されたデータ・ファイル、PFILEおよびSQLスクリプトを、接続先データベースが実行されているコンピュータ・システムに転送します。
接続先データベースが実行されているコンピュータ・システムで、制限付きセッションが有効にされた状態で接続先データベースが常にオープンするようにSQLスクリプトを変更します。
次のスクリプトの例では、必要な変更を太字で示しています。
-- The following commands will create a new control file and use it -- to open the database. -- Data used by Recovery Manager will be lost. -- The contents of online logs will be lost and all backups will -- be invalidated. Use this only if online logs are damaged. -- After mounting the created controlfile, the following SQL -- statement will place the database in the appropriate -- protection mode: -- ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE STARTUP NOMOUNT PFILE='init_00gd2lak_1_0.ora' CREATE CONTROLFILE REUSE SET DATABASE "CVX2" RESETLOGS NOARCHIVELOG MAXLOGFILES 32 MAXLOGMEMBERS 2 MAXDATAFILES 32 MAXINSTANCES 1 MAXLOGHISTORY 226 LOGFILE GROUP 1 '/tmp/convertdb/archlog1' SIZE 25M, GROUP 2 '/tmp/convertdb/archlog2' SIZE 25M DATAFILE '/tmp/convertdb/systemdf', '/tmp/convertdb/sysauxdf', '/tmp/convertdb/datafile1', '/tmp/convertdb/datafile2', '/tmp/convertdb/datafile3' CHARACTER SET WE8DEC ; -- NOTE: This ALTER SYSTEM statement is added to enable restricted session. ALTER SYSTEM ENABLE RESTRICTED SESSION; -- Database can now be opened zeroing the online logs. ALTER DATABASE OPEN RESETLOGS; -- No tempfile entries found to add. -- set echo off prompt ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ prompt * Your database has been created successfully! prompt * There are many things to think about for the new database. Here prompt * is a checklist to help you stay on track: prompt * 1. You may want to redefine the location of the directory objects. prompt * 2. You may want to change the internal database identifier (DBID) prompt * or the global database name for this database. Use the prompt * NEWDBID Utility (nid). prompt ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SHUTDOWN IMMEDIATE -- NOTE: This startup has the UPGRADE parameter. -- It already has restricted session enabled, so no change is needed. STARTUP UPGRADE PFILE='init_00gd2lak_1_0.ora' @@ ?/rdbms/admin/utlirp.sql SHUTDOWN IMMEDIATE -- NOTE: The startup below is generated without the RESTRICT clause. -- Add the RESTRICT clause. STARTUP RESTRICT PFILE='init_00gd2lak_1_0.ora' -- The following step will recompile all PL/SQL modules. -- It may take serveral hours to complete. @@ ?/rdbms/admin/utlrp.sql set feedback 6;
スクリプトに対して他の変更が必要な場合もあります。 たとえば、接続先データベースのコンピュータ・システムの正しい位置を指すようにデータ・ファイルの位置およびPFILEの位置を変更する必要がある場合があります。
SQL*Plusで接続先データベースに管理ユーザーとして接続し、次のプロシージャを実行します。
注意: このプロシージャを実行するとローカルのOracle Streams構成が削除されるため、このプロシージャを実行する際は、ソース・データベースではなく接続先データベースに接続していることを確認してください。 |
EXEC DBMS_STREAMS_ADM.REMOVE_STREAMS_CONFIGURATION();
注意: ソース・データベースの表のサプリメンタル・ログ・グループは接続先データベースに保持されます。REMOVE_STREAMS_CONFIGURATION プロシージャを実行してもこれらは削除されません。これらのサプリメンタル・ログ・グループは、必要に応じて削除できます。 |
参照: REMOVE_STREAMS_CONFIGURATION プロシージャの詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。 |
SQL*Plusで、Oracle Streams管理者として接続先データベースcvx2.net
に接続します。
ソース・データベースからクローニングされた、ソース・データベースから接続先データベースへのデータベース・リンクを削除します。
DROP DATABASE LINK cvx2.net;
接続先データベースでALTER
SYSTEM
文を実行して、RESTRICTED
SESSION
を無効化します。
ALTER SYSTEM DISABLE RESTRICTED SESSION;
接続先データベースで、手順5で指定したキューを作成します。
たとえば、次のプロシージャを実行すると、キューstreams_queue
が作成されます。
EXEC DBMS_STREAMS_ADM.SET_UP_QUEUE();
接続先データベースにOracle Streams管理者として接続し、Oracle Streams環境を構成します。
参照: Oracle Streams管理者を構成する方法は、『Oracle Streams概要および管理』を参照してください。 |
接続先データベースで、ソース・データベースへのデータベース・リンクを作成します。
CREATE DATABASE LINK cvx1.net CONNECT TO strmadmin
IDENTIFIED BY password USING 'cvx1.net';
次の手順でrecursiveパラメータをTRUE
に設定してSET_GLOBAL_INSTANTIATION_SCN
プロシージャを実行するため、このデータベース・リンクが必要になります。
接続先データベースで、ソース・データベースのグローバル・インスタンス化SCNを、手順12で戻されたSCN値に設定します。
たとえば、cvx1.net
ソース・データベースのグローバル・インスタンス化SCNを46931285
に設定するには、次のプロシージャを実行します。
BEGIN DBMS_APPLY_ADM.SET_GLOBAL_INSTANTIATION_SCN( source_database_name => 'cvx1.net', instantiation_scn => 46931285, recursive => TRUE); END; /
接続先データベースのすべてのスキーマおよび表のインスタンス化SCNを設定するには、recursive
パラメータがTRUE
に設定されていることを確認してください。
接続先データベースで、構成した適用プロセスを起動できます。
ソース・データベースで、手順6で停止した伝播を起動します。
BEGIN DBMS_PROPAGATION_ADM.START_PROPAGATION( propagation_name => 'cvx1_to_cvx2'); END; /
インスタンス化SCNは、接続先データベースの適用プロセスに対して、ソース・データベースで特定のSCNより後にコミットされたデータベース・オブジェクトに変更を適用するように指示します。インスタンス化SCNを設定するには、次の方法があります。
ソース・データベースで関連するデータベース・オブジェクトをエクスポートし、接続先データベースにインポートします。この場合は、エクスポート/インポートによって接続先データベースでデータベース・オブジェクトが作成され、そこにソース・データベースからデータが移入され、関連するインスタンス化SCNが設定されます。インスタンス化には、データ・ポンプ・エクスポート/インポートを使用できます。各種のエクスポート/インポート操作用に設定されるインスタンス化SCNの詳細は、「エクスポート/インポートを使用したインスタンス化SCNの設定」を参照してください。
データ・ポンプを使用して、メタデータのみのエクスポート/インポートを実行します。データ・ポンプ・エクスポート/インポートを使用する場合、ソース・データベースでのエクスポート中または接続先データベースでのインポート中(あるいはその両方)に、CONTENT
パラメータをMETADATA_ONLY
に設定します。データベース・オブジェクトのインスタンス化SCNは設定されますが、データはインポートされません。各種のエクスポート/インポート操作用に設定されるインスタンス化SCNの詳細は、「エクスポート/インポートを使用したインスタンス化SCNの設定」を参照してください。
トランスポータブル表領域を使用して、ソース・データベースから接続先データベースに、1つ以上の表領域内のオブジェクトをコピーします。エクスポート前にインスタンス化のために準備したこれらの表領域内の各スキーマ、および各データベース・オブジェクトにインスタンス化SCNが設定されます。手順については、「トランスポータブル表領域またはRecovery Managerを使用した表領域内のオブジェクトのインスタンス化」を参照してください。
DBMS_APPLY_ADM
パッケージのSET_TABLE_INSTANTIATION_SCN
、SET_SCHEMA_INSTANATIATION_SCN
およびSET_GLOBAL_INSTANTIATION_SCN
プロシージャを使用して、インスタンス化SCNを設定します。手順については、「DBMS_APPLY_ADMパッケージを使用したインスタンス化SCNの設定」を参照してください。
この項では、エクスポート/インポートを実行してインスタンス化SCNを設定する方法について説明します。この項の情報は、メタデータのエクスポート/インポート操作と、行をインポートするエクスポート/インポート操作の両方に適用されます。また、データ・ポンプ・エクスポート/インポートを使用できます。FLASHBACK_SCN
やFLASHBACK_TIME
などのエクスポート・パラメータを使用して、より厳密な一貫性レベルを指定できます。
ここでは、各種のエクスポート/インポート操作用のインスタンス化SCNを設定する方法について説明します。これらの項の説明は、準備済の表を対象としています。準備済の表とは、DBMS_CAPTURE_ADM
パッケージのPREPARE_TABLE_INSTANTIATION
プロシージャ、PREPARE_SYNC_INSTANTIATION
ファンクション、PREPARE_SCHEMA_INSTANTIATION
プロシージャまたはPREPARE_GLOBAL_INSTANTIATION
プロシージャを使用して、インスタンス化の準備を完了している表です。インポート中にインスタンス化SCNを設定するには、エクスポート前に表を準備済にする必要があります。ただし、データベースとスキーマの場合は、インポート中にインスタンス化SCNが設定されるようにエクスポート前に準備する必要はありません。
全データベースのエクスポートと全データベースのインポートでは、インポート・データベースで次のインスタンス化SCNが設定されます。
データベースの、またはグローバルなインスタンス化SCN
インポートされるユーザーごとの、スキーマのインスタンス化SCN
インポートされる準備済の表ごとの、表のインスタンス化SCN
全データベースまたはユーザー・エクスポートとユーザー・インポートでは、インポート・データベースで次のインスタンス化SCNが設定されます。
インポートされるユーザーごとの、スキーマのインスタンス化SCN
インポートされる準備済の表ごとの、表のインスタンス化SCN
1つ以上の表を含むエクスポートと表のインポートでは、インポート・データベースでインポートされる準備済の表ごとに、表のインスタンス化SCNが設定されます。
注意:
|
参照:
|
DBMS_APPLY_ADM
パッケージの次のいずれかのプロシージャを使用すると、指定した表、指定したスキーマまたはデータベース全体について、接続先データベースでインスタンス化SCNを設定できます。
SET_TABLE_INSTANTIATION_SCN
SET_SCHEMA_INSTANTIATION_SCN
SET_GLOBAL_INSTANTIATION_SCN
SET_SCHEMA_INSTANTIATION_SCN
を使用してスキーマのインスタンス化SCNを設定する場合は、このプロシージャを実行する際にrecursive
パラメータをTRUE
に設定すると、スキーマ内の表ごとにインスタンス化SCNを設定できます。同様に、SET_GLOBAL_INSTANTIATION_SCN
を使用してデータベースのインスタンス化SCNを設定する場合は、このプロシージャを実行する際にrecursive
パラメータをTRUE
に設定すると、データベース内のスキーマ、およびそれらのスキーマが所有する表ごとにインスタンス化SCNを設定できます。
注意:
|
表10-1に、各プロシージャとインスタンス化SCNを設定する文のタイプを示します。
表10-1 インスタンス化SCNを設定するプロシージャと、その対象となる文
プロシージャ | インスタンス化SCNの設定対象 | 例 |
---|---|---|
|
表の索引と表のトリガーに対するDDL文 |
表に対する 表に対する |
|
表レベルのインスタンス化SCNによって処理されるDDL文を除き、 |
|
|
所有者を持たない、ユーザー以外のデータベース・オブジェクトに対するDDL文 PUBLICに所有されるデータベース・オブジェクトに対するDDL文
|
|
この項の例を実行するユーザーは、ソース・データベースから接続先データベースへのデータベース・リンクに対するアクセス権を持っている必要があります。この項の例では、データベース・リンクはhrdb2.net
です。次の例では、ソース・データベースhrdb1.net
で次のプロシージャを実行することで、hrdb2.net
データベースでhr.departments
表のインスタンス化SCNが現行のSCNに設定されます。
DECLARE iscn NUMBER; -- Variable to hold instantiation SCN value BEGIN iscn := DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER(); DBMS_APPLY_ADM.SET_TABLE_INSTANTIATION_SCN@HRDB2.NET( source_object_name => 'hr.departments', source_database_name => 'hrdb1.net', instantiation_scn => iscn); END; /
次の例では、ソース・データベースhrdb1.net
で次のプロシージャを実行することで、hrdb2.net
データベースでoe
スキーマおよびそのすべてのオブジェクトのインスタンス化SCNが、ソース・データベースの現行のSCNに設定されます。
DECLARE iscn NUMBER; -- Variable to hold instantiation SCN value BEGIN iscn := DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER(); DBMS_APPLY_ADM.SET_SCHEMA_INSTANTIATION_SCN@HRDB2.NET( source_schema_name => 'oe', source_database_name => 'hrdb1.net', instantiation_scn => iscn, recursive => TRUE); END; /
recursive
パラメータがTRUE
に設定されているため、このプロシージャを実行すると、oe
スキーマ内のデータベース・オブジェクトごとにインスタンス化SCNが設定されます。
注意: recursive パラメータをTRUE に設定する際は、ソース・データベースへの接続中にプロシージャを実行する場合でも、接続先データベースからソース・データベースへのデータベース・リンクが必要です。このデータベース・リンクはソース・データベースのグローバル名と同じ名前であり、現行ユーザーからアクセス可能である必要があります。 |
この項の例を実行するユーザーは、接続先データベースからソース・データベースへのデータベース・リンクに対するアクセス権を持っている必要があります。この項の例では、データベース・リンクはhrdb1.net
です。次の例では、接続先データベースhrdb2.net
で次のプロシージャを実行することで、hrdb2.net
データベースでhr.departments
表のインスタンス化SCNが、ソース・データベースhrdb1.net
の現行のSCNに設定されます。
DECLARE iscn NUMBER; -- Variable to hold instantiation SCN value BEGIN iscn := DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER@HRDB1.NET; DBMS_APPLY_ADM.SET_TABLE_INSTANTIATION_SCN( source_object_name => 'hr.departments', source_database_name => 'hrdb1.net', instantiation_scn => iscn); END; /
次の例では、接続先データベースhrdb2.net
で次のプロシージャを実行することで、hrdb2.net
データベースでoe
スキーマおよびそのすべてのオブジェクトのインスタンス化SCNが、ソース・データベースhrdb1.net
の現行のSCNに設定されます。
DECLARE iscn NUMBER; -- Variable to hold instantiation SCN value BEGIN iscn := DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER@HRDB1.NET; DBMS_APPLY_ADM.SET_SCHEMA_INSTANTIATION_SCN( source_schema_name => 'oe', source_database_name => 'hrdb1.net', instantiation_scn => iscn, recursive => TRUE); END; /
recursive
パラメータがTRUE
に設定されているため、このプロシージャを実行すると、oe
スキーマ内のデータベース・オブジェクトごとにインスタンス化SCNが設定されます。
注意: 適用プロセスでOracle以外のリモート・データベースに変更が適用される場合は、インスタンス化SCNを設定するときに、apply_database_link パラメータをリモートの適用に使用するデータベース・リンクに設定します。 |
参照:
|