この章では、インスタンス化とOracle Streamsレプリケーションの概念について説明します。また、インスタンス化のためのデータベース・オブジェクトの準備、インスタンス化の実行、インスタンス化システム変更番号(SCN)の設定およびインスタンス化の監視の各手順についても説明します。
この章の内容は次のとおりです。
単一のデータベース内または複数のデータベース間で1つのデータベース・オブジェクトをレプリケートするOracle Streams環境では、ソース・データベースでオブジェクトに対する変更が生成され、宛先データベースで変更が適用プロセスによってデキューされます。このような変更が取得プロセスまたは同期取得で取得され、その変更がローカルに適用されるか、または他のデータベースに伝播されてから宛先データベースで適用される場合は、オブジェクトに対する変更をレプリケートする前に、ソース・データベース・オブジェクトをインスタンス化する必要があります。ソース・データベース・オブジェクトへの変更が適用されるデータベースが、ソース・データベースと異なる場合は、宛先データベースにこれらのデータベース・オブジェクトのコピーが必要です。
Oracle Streamsでは通常、次の手順を実行してデータベース・オブジェクトをインスタンス化します。
ソース・データベースでデータベース・オブジェクトをインスタンス化のために準備します。
データベース・オブジェクトのコピーが宛先データベースに存在しない場合、ソース・データベースのデータベース・オブジェクトに基づいて、宛先データベースで物理的にデータベース・オブジェクトを作成します。エクスポート/インポート、トランスポータブル表領域またはRMANを使用して、インスタンス化用にデータベース・オブジェクトをコピーできます。宛先データベースにデータベース・オブジェクトが存在する場合は、この手順は不要です。
宛先データベースで、データベース・オブジェクトのインスタンス化システム変更番号(SCN)を設定します。インスタンス化SCNは、宛先データベースの適用プロセスに対して、指定したSCNの後にソース・データベースでコミットされた変更のみを適用するように指示します。
レプリケーション環境の構成用にOracleが提供するDBMS_STREAMS_ADM
パッケージの次のいずれかのプロシージャを使用すると、これらすべてのインスタンス化手順を自動的に実行できます。
MAINTAIN_GLOBAL
MAINTAIN_SCHEMAS
MAINTAIN_SIMPLE_TTS
MAINTAIN_TABLES
MAINTAIN_TTS
手順1と手順3は自動的に完了する場合もあります。たとえば、DBMS_STREAMS_ADM
パッケージのプロシージャを実行して取得プロセスのポジティブ・ルール・セットにデータベース・オブジェクトのルールを追加すると、データベース・オブジェクトは自動的にインスタンス化のために準備されます。
また、エクスポート/インポート、トランスポータブル表領域またはRMANのTRANSPORT
TABLESPACE
コマンドを使用してデータベース・オブジェクトをソース・データベースから宛先データベースへコピーすると、このデータベース・オブジェクトのインスタンス化SCNを自動的に設定できます。
注意: RMANのDUPLICATE コマンドにより、データベース全体をインスタンス化できますが、このコマンドでは、データベース・オブジェクトのインスタンス化SCNは設定されません。 |
インスタンス化されるデータベース・オブジェクトが表である場合、ソース・データベースと宛先データベースの表は完全に一致していなくてもかまいません。ただし、表データの一部または全部を2つのデータベース間でレプリケートする場合、表をインスタンス化したときにレプリケートするデータに一貫性がある必要があります。データベース・オブジェクトに対する変更をレプリケートする場合は、常にデータベース・オブジェクトをソース・データベースでインスタンス化のために準備して、宛先データベースでデータベース・オブジェクトのインスタンス化SCNを設定する必要があります。インスタンス化のためにオブジェクトを準備することで、オブジェクトに対する変更を宛先データベースで適用できる最小SCNが設定されます。このSCNは非処理SCNと呼ばれます。データベース・オブジェクトに対する変更を取得するように取得プロセスまたは同期取得を構成した後に、データベース・オブジェクトをインスタンス化する準備を行う必要があります。
エクスポート/インポート、トランスポータブル表領域またはRMANを使用して表をインスタンス化した場合、インスタンス化された表についてサプリメンタル・ログ・グループの指定が保持されます。つまり、インスタンス化の後、インポート・データベースのインポートされた表のログ・グループ指定は、エクスポート・データベースの同じ表のログ・グループの指定と同じです。インポート・データベースで表のサプリメンタル・ログ・グループの指定を保持しない場合は、インポート後に特定のサプリメンタル・ログ・グループを削除できます。
全データベースのエクスポート/インポートを実行する場合でも、エクスポート/インポート中はデータベース・サプリメンタル・ロギングの指定は保持されません。一方、RMANのDUPLICATE
コマンドでは、データベース・サプリメンタル・ロギングの指定はインスタンス化されたデータベースで保持されます。
注意:
|
関連項目:
|
DBMS_CAPTURE_ADM
パッケージの次のサブプログラムでは、インスタンス化のためにデータベース・オブジェクトの準備が行われます。
PREPARE_TABLE_INSTANTIATION
プロシージャでは、表に対する変更が取得プロセスによって取得される場合、1つの表がインスタンス化のために準備されます。
PREPARE_SYNC_INSTANTIATION
ファンクションでは、表(1つまたは複数)に対する変更が同期取得によって取得される場合、1つの表または複数の表がインスタンス化のために準備されます。
PREPARE_SCHEMA_INSTANTIATION
プロシージャでは、スキーマ内のすべてのデータベース・オブジェクトおよび将来そのスキーマに追加されるすべてのデータベース・オブジェクトがインスタンス化のために準備されます。このプロシージャは、取得プロセスによって変更が取得される場合にのみ使用する必要があります。
PREPARE_GLOBAL_INSTANTIATION
プロシージャでは、データベース内のすべてのデータベース・オブジェクトおよび将来そのデータベースに追加されるすべてのデータベース・オブジェクトがインスタンス化のために準備されます。このプロシージャは、取得プロセスによって変更が取得される場合にのみ使用する必要があります。
これらのプロシージャでは、インスタンス化のために各オブジェクトの最小システム変更番号(SCN)が記録されます。オブジェクトの最小SCNより後のSCNは、そのオブジェクトのインスタンス化に使用できます。
変更の取得に取得プロセスを使用する場合、前述のプロシージャでは、インスタンス化の準備対象となる表、スキーマまたはデータベースに対する変更を取得、伝播または適用する取得プロセス、伝播および適用プロセスのために、Oracle Streamsデータ・ディクショナリが移入されます。また、取得プロセスを使用して変更を取得する場合は、オプションでこれらのプロシージャを使用して、インスタンス化のために準備された表のキー列またはすべての列のサプリメンタル・ロギングを有効にすることもできます。
注意: 同期取得を使用するレプリケーションでは、Oracle Streamsデータ・ディクショナリは使用されず、サプリメンタル・ロギングは不要です。 |
関連項目:
|
DBMS_STREAMS_ADM
パッケージ内のプロシージャを実行して取得プロセスまたは同期取得のポジティブ・ルール・セットにルールを追加すると、変更が取得されるデータベース・オブジェクトに対して、DBMS_CAPTURE_ADM
パッケージのプロシージャまたはファンクションが自動的に実行されます。表8-1に、DBMS_STREAMS_ADM
パッケージのプロシージャを実行した場合に実行されるDBMS_CAPTURE_ADM
パッケージのプロシージャまたはファンクションを示します。
表8-1 自動的に実行されるDBMS_CAPTURE_ADMパッケージのプロシージャ
実行するDBMS_STREAMS_ADMパッケージのプロシージャ | 自動的に実行されるDBMS_CAPTURE_ADMパッケージのプロシージャまたはファンクション |
---|---|
|
|
|
|
|
|
プロシージャは、インスタンス化を準備するために複数回コールできます。ダウンストリームの取得を使用していて、ダウンストリームの取得プロセスでダウンストリーム・データベースからソース・データベースへのデータベース・リンクが使用されている場合、DBMS_STREAMS_ADM
パッケージのこれらのプロシージャのいずれかを実行すると、データベース・オブジェクトは自動的にインスタンス化のために準備されます。ただし、ダウンストリームの取得プロセスでダウンストリーム・データベースからソース・データベースへのデータベース・リンクを使用していない場合、データベース・オブジェクトをインスタンス化する準備を手動で行う必要があります。
DBMS_STREAMS_ADM
パッケージではなく、DBMS_RULE_ADM
パッケージによって取得プロセスのルールが作成される場合、取得プロセスのルールの結果生じた変更を適用プロセスで適用するには、適切なプロシージャを手動で実行して、変更が取得される各表、スキーマまたはデータベースをインスタンス化のために準備する必要があります。
また、これらのプロシージャを自動的に実行するプロシージャもいくつか存在します。たとえば、DBMS_STREAMS_ADM.MAINTAIN_TABLES
プロシージャでは、ADD_TABLE_RULES
プロシージャが自動的に実行されます。
注意: 同期取得では、ADD_TABLE_RULES またはADD_SUBSET_RULES プロシージャで作成されたルールに基づく変更のみが取得されます。 |
次のいずれかの条件が該当する場合、データベース・オブジェクトの取得プロセス、伝播または適用プロセスのポジティブ・ルール・セットに含まれるルールについて、条件を追加または変更する際に、常に適切なプロシージャを実行して、ソース・データベースでそのデータベース・オブジェクトをインスタンス化のために準備する必要があります。
オブジェクトに対する変更を取得するように指示する取得プロセスのポジティブ・ルール・セットに、1つ以上のルールを追加する。
オブジェクトに対する変更を取得するように指示する取得プロセスのポジティブ・ルール・セットで、ルールについて1つ以上の条件を変更する。
オブジェクトに対する変更を伝播するように指示する伝播のポジティブ・ルール・セットに、1つ以上のルールを追加する。
オブジェクトに対する変更を伝播するように指示する伝播のポジティブ・ルール・セットで、ルールについて1つ以上の条件を変更する。
ソース・データベースのオブジェクトに対する変更を適用するように指示する適用プロセスのポジティブ・ルール・セットに、1つ以上のルールを追加する。
ソース・データベースのオブジェクトに対する変更を適用するように指示する適用プロセスのポジティブ・ルール・セットで、ルールについて1つ以上の条件を変更する。
次のいずれかの条件が該当する場合、データベース・オブジェクトの取得プロセス、伝播または適用プロセスのネガティブ・ルール・セットに含まれるルールについて、条件を削除または変更する際に、常に適切なプロシージャを実行して、ソース・データベースでそのデータベース・オブジェクトをインスタンス化のために準備する必要があります。
オブジェクトに対する変更を取得するように指示する取得プロセスのネガティブ・ルール・セットから、1つ以上のルールを削除する。
オブジェクトに対する変更を取得するように指示する取得プロセスのネガティブ・ルール・セットで、ルールについて1つ以上の条件を変更する。
オブジェクトに対する変更を伝播するように指示する伝播のネガティブ・ルール・セットから、1つ以上のルールを削除する。
オブジェクトに対する変更を伝播するように指示する伝播のネガティブ・ルール・セットで、ルールについて1つ以上の条件を変更する。
ソース・データベースのオブジェクトに対する変更を適用するように指示する適用プロセスのネガティブ・ルール・セットから、1つ以上のルールを削除する。
ソース・データベースのオブジェクトに対する変更を適用するように指示する適用プロセスのネガティブ・ルール・セットで、ルールについて1つ以上の条件を変更する。
ポジティブまたはネガティブ・ルール・セットに対する変更について、前述の条件に1つでも該当する場合は、ルールを追加または変更したリモート・データベースにオブジェクトが存在していても、ソース・データベースでインスタンス化のために関連するデータベース・オブジェクトの準備を行って、ソース・オブジェクトに関する情報が必要な関連するOracle Streamsデータ・ディクショナリを移入する必要があります。
関連するOracle Streamsデータ・ディクショナリは、ローカル・ディクショナリとすべてのリモート・ディクショナリについて非同期に移入されます。インスタンス化の準備を行うプロシージャでは、ソース・データベースのREDOログに情報が追加されます。ローカルのOracle Streamsデータ・ディクショナリには、取得プロセスがこれらのREDOエントリを取得するとオブジェクトに関する情報が移入され、リモートのOracle Streamsデータ・ディクショナリには情報が伝播されると移入されます。
同期取得ではOracle Streamsデータ・ディクショナリは使用されません。ただし、同期取得でデータベース・オブジェクトに対する変更を取得している場合は、同期取得のルール・セットにデータベース・オブジェクトのルールを追加する際に、データベース・オブジェクトをインスタンス化のために準備する必要があります。データベース・オブジェクトに対するインスタンス化のための最小SCNが記録されるため、ルールを追加する際に、データベース・オブジェクトをインスタンス化のために準備する必要があります。同期取得のルールが変更されている場合は、データベース・オブジェクトをインスタンス化のために準備する必要はありませんが、ルールの変更では、ルール条件のデータベース・オブジェクト名またはスキーマを変更することはできません。
関連項目:
|
レプリケーション環境で、変更の取得に取得プロセスが使用されている場合、サプリメンタル・ロギングが必要になります。サプリメンタル・ロギングでは、操作が実行されるたびにREDOログに列データが追加されます。データベース・オブジェクトをインスタンス化のために準備するためのDBMS_CAPTURE_ADM
パッケージには、PREPARE_TABLE_INSTANTIATION
、PREPARE_SCHEMA_INSTANTIATION
およびPREPARE_GLOBAL_INSTANTIATION
が含まれます。これらのプロシージャには、supplemental_logging
パラメータが含まれており、このパラメータを使用すると、インスタンス化のために準備されているデータベース・オブジェクトのサプリメンタル・ロギングの指定を制御できます。
表8-2に、各プロシージャに対するsupplemental_logging
パラメータの値を示します。
表8-2 インスタンス化の準備中のサプリメンタル・ロギング・オプション
プロシージャ | supplemental_loggingパラメータの設定 | 説明 |
---|---|---|
|
|
インスタンス化のために準備する表の主キー列、一意キー列、ビットマップ索引列および外部キー列のサプリメンタル・ロギングが有効になります。この場合、ログに記録される表の列が、主キー列が無条件のログ・グループ、一意キー列とビットマップ索引列が条件付きのログ・グループ、外部キー列が条件付きのログ・グループと、3つの異なるログ・グループに配置されます。 |
|
|
インスタンス化のために準備する表のすべての列のサプリメンタル・ロギングが有効になります。この場合、表のすべての列が無条件のログ・グループに配置されます。 |
|
|
インスタンス化のために準備するスキーマ内の表、および将来このスキーマに追加するすべての表の主キー列、一意キー列、ビットマップ索引列および外部キー列のサプリメンタル・ロギングが有効になります。主キー列は、無条件でログに記録されます。一意キー列、ビットマップ索引列および外部キー列は、条件付きでログに記録されます。 |
|
|
インスタンス化のために準備するスキーマ内の表、および将来このスキーマに追加するすべての表のすべての列のサプリメンタル・ロギングが有効になります。すべての列は、無条件でログに記録されます。 |
|
|
インスタンス化のために準備するデータベース内の表、および将来このデータベースに追加するすべての表の主キー列、一意キー列、ビットマップ索引列および外部キー列のサプリメンタル・ロギングが有効になります。主キー列は、無条件でログに記録されます。一意キー列、ビットマップ索引列および外部キー列は、条件付きでログに記録されます。 |
|
|
インスタンス化のために準備するデータベース内のすべての表、および将来このデータベースに追加するすべての表のすべての列のサプリメンタル・ロギングが有効になります。すべての列は、無条件でログに記録されます。 |
すべてのPREPAREプロシージャ |
|
インスタンス化のために準備する表のいずれの列に対してもサプリメンタル・ロギングが有効になりません。 |
supplemental_logging
パラメータを指定せずにいずれかのPREPAREプロシージャを実行した場合、keys
がデフォルトになります。DBMS_STREAMS_ADM
パッケージの一部のプロシージャでは、取得プロセスのポジティブ・ルール・セットにルールを追加する際に、表がインスタンス化のために準備されます。この場合、インスタンス化のために準備する表には、デフォルトのサプリメンタル・ロギング・オプションのkeys
が指定されます。
注意:
|
関連項目:
|
DBMS_STREAMS_ADM
パッケージを使用して取得プロセスまたは同期取得のルールを作成すると、システム作成ルールで参照されるオブジェクトがインスタンス化のために自動的に準備されます。DBMS_RULE_ADM
パッケージを使用して取得プロセスのルールを作成する場合は、これらのルールで参照されるデータベース・オブジェクトをインスタンス化のために手動で準備する必要があります。この場合、データベース・オブジェクトに対する変更を取得するように取得プロセスを構成した後で、データベース・オブジェクトをインスタンス化のために準備する必要があります。同期取得では、DBMS_RULE_ADM
パッケージで作成されたルールは無視されます。
データベース・オブジェクトをインスタンス化のために準備するPL/SQLサブプログラムの詳細は、「取得のルールとインスタンス化の準備」を参照してください。インスタンス化の準備対象となる1つ以上のデータベース・オブジェクトを長時間実行トランザクションで変更中に、前述のプロシージャの1つを実行すると、そのプロシージャは長時間実行トランザクションが完了するまで待機してから、オブジェクトの非処理SCNを記録します。非処理SCNは、その下では宛先データベースでオブジェクトに対する変更を適用できないSCNです。V$STREAMS_TRANSACTION
動的パフォーマンス・ビューを問い合せて、取得プロセスまたは適用プロセスによって処理されている長時間実行トランザクションを監視します。
ここでは、インスタンス化のためにデータベース・オブジェクトを準備する例について説明します。
関連項目: 適用プロセスのインスタンス化SCNと非処理SCNの詳細は、『Oracle Streams概要および管理』を参照してください。 |
この項の内容は次のとおりです。
この項の例では、表に対する変更が取得プロセスによって取得される場合に、DBMS_STREAMS_ADM
パッケージを使用して、表をインスタンス化のために準備します。hr.regions
表をインスタンス化のために準備して、表のすべての主キー列、一意キー列、ビットマップ索引列および外部キー列に対してサプリメンタル・ロギングを有効化するには、DBMS_STREAMS_ADM
パッケージのプロシージャを使用して、hr.regions
表のルールを取得プロセスのポジティブ・ルール・セットに追加します。取得プロセスがソース・データベースへのデータベース・リンクを持つローカルの取得プロセスまたはダウンストリームの取得プロセスである場合に、このプロシージャを実行すると、この表がインスタンス化のために自動的に準備されます。
次のプロシージャを実行すると、ルールが取得プロセスstrm01_capture
のポジティブ・ルール・セットに追加され、hr.regions
表がインスタンス化のために準備されます。
BEGIN DBMS_STREAMS_ADM.ADD_TABLE_RULES( table_name => 'hr.regions', streams_type => 'capture', streams_name => 'strm01_capture', queue_name => 'strmadmin.strm01_queue', include_dml => TRUE, include_ddl => TRUE, inclusion_rule => TRUE); END; /
この項の例では、表に対する変更が取得プロセスによって取得される場合に、DBMS_CAPTURE_ADM
パッケージを使用して、表をインスタンス化のために準備します。hr.regions
表をインスタンス化のために準備して、表のすべての主キー列、一意キー列、ビットマップ索引列および外部キー列に対してサプリメンタル・ロギングを有効化するには、次のプロシージャを実行します。
BEGIN DBMS_CAPTURE_ADM.PREPARE_TABLE_INSTANTIATION( table_name => 'hr.regions', supplemental_logging => 'keys'); END; /
supplemental_logging
パラメータのデフォルト値はkeys
です。そのため、このパラメータが指定されていない場合、インスタンス化のために準備する表のすべての主キー列、一意キー列、ビットマップ索引列および外部キー列に対してサプリメンタル・ロギングが有効になります。
この項の例では、表に対する変更が同期取得によって取得される場合に、DBMS_STREAMS_ADM
パッケージを使用して、hr
スキーマ内のすべての表をインスタンス化のために準備します。DBMS_STREAMS_ADM
パッケージのプロシージャを使用して、hr.jobs_transport
およびhr.regions_transport
表のルールを同期取得のポジティブ・ルール・セットに追加します。実行するプロシージャによって、表がインスタンス化のために自動的に準備されます。
次のプロシージャを実行すると、同期取得sync_capture
のポジティブ・ルール・セットにルールが追加され、hr.regions
表がインスタンス化のために準備されます。
BEGIN DBMS_STREAMS_ADM.ADD_TABLE_RULES( table_name => 'hr.regions', streams_type => 'sync_capture', streams_name => 'sync_capture', queue_name => 'strmadmin.streams_queue'); END; /
この項の例では、表に対する変更が同期取得によって取得される場合に、DBMS_CAPTURE_ADM
パッケージを使用して、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; /
この項の内容は次のとおりです。
この項の例では、スキーマ内のデータベース・オブジェクトに対する変更が取得プロセスによって取得される場合に、DBMS_STREAMS_ADM
パッケージを使用して、これらのオブジェクトをインスタンス化のために準備します。
インスタンス化のためにhr
スキーマ内のデータベース・オブジェクトを準備し、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_CAPTURE_ADM
パッケージを使用して、これらのオブジェクトをインスタンス化のために準備します。インスタンス化のためにhr
スキーマ内のデータベース・オブジェクトを準備し、hr
スキーマ内の表のすべての列に対してサプリメンタル・ロギングを有効化するには、次のプロシージャを実行します。
BEGIN DBMS_CAPTURE_ADM.PREPARE_SCHEMA_INSTANTIATION( schema_name => 'hr', supplemental_logging => 'all'); END; /
このプロシージャを実行すると、hr
スキーマ内の表のすべての列と、将来hr
スキーマに追加される表内のすべての列に対してサプリメンタル・ロギングが有効になります。
この項の内容は次のとおりです。
DBMS_STREAMS_ADMを使用した、インスタンス化のためのデータベース内のすべてのデータベース・オブジェクトの準備
DBMS_CAPTURE_ADMを使用した、インスタンス化のためのデータベース内のすべてのデータベース・オブジェクトの準備
この項の例では、データベース内のデータベース・オブジェクトに対する変更が取得プロセスによって取得される場合に、DBMS_STREAMS_ADM
パッケージを使用して、これらのオブジェクトをインスタンス化のために準備します。データベース内のすべてのデータベース・オブジェクトをインスタンス化のために準備するには、DBMS_STREAMS_ADM
パッケージのADD_GLOBAL_RULES
プロシージャを実行します。
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; /
指定した取得プロセスが存在しない場合は、このプロシージャによって作成されます。
また、インスタンス化のために準備する表の主キー列、一意キー列、ビットマップ索引列および外部キー列のサプリメンタル・ロギングが有効になります。
この項の例では、データベース内のデータベース・オブジェクトに対する変更が取得プロセスによって取得される場合に、DBMS_CAPTURE_ADM
パッケージを使用して、これらのオブジェクトをインスタンス化のために準備します。インスタンス化のためにデータベース内のデータベース・オブジェクトを準備するには、次のプロシージャを実行します。
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 Data Pumpを使用したOracle Streamsのインスタンス化の実行について説明します。
関連項目:
|
エクスポート中、Oracle Data Pumpでは、データベース・オブジェクトごとにエクスポートされたデータおよび手続き型操作が特定の時点で一貫性を持つように、自動的にOracle Flashbackが使用されます。Oracle Streams環境でインスタンス化を実行する場合は、ある程度の一貫性が必要です。データ・ポンプ・エクスポート・ユーティリティを使用すると、Oracle Streamsのインスタンス化についてこの一貫性を確保できます。
Oracle Streamsのインスタンス化のみでなく、他の用途にもエクスポート・ダンプ・ファイルを使用しており、その用途がデータ・ポンプのデフォルトのエクスポートで得られる一貫性より厳密な一貫性要件を伴う場合は、Oracle Streamsのインスタンス化にデータ・ポンプ・エクスポート・ユーティリティ・パラメータFLASHBACK_SCN
またはFLASHBACK_TIME
を使用できます。たとえば、エクスポートに外部キー制約を持つオブジェクトが含まれている場合、より厳密な一貫性が要求される場合があります。
ここでは、Oracle Data Pump ImportとOracle Streamsのインスタンス化について説明します。
データ・ポンプ・インポート中、インスタンス化SCNは、データ・ポンプ・エクスポートが実行される前にエクスポート・データベースでインスタンス化が準備されたデータベース・オブジェクトごとに、インポート・データベースで設定されます。インスタンス化SCNは、データ・ポンプ・エクスポート中に取得されるメタデータに基づいて設定されます。
関連項目: 『Oracle Streams概要および管理』 |
データ・ポンプ・インポート・セッションでは、インポートによって発生する変更の循環を回避するために、Oracle Streamsタグが'00'
と等価の16進値に設定される場合があります。このようなインポートによって生成されるREDOエントリに、このタグ値が含まれます。
インポート・セッション・タグが'00'
と等価の16進値に設定されるかどうかは、インポートされるエクスポートによって決まります。具体的には、次のいずれかの場合にインポート・セッション・タグが'00'
と等価の16進値に設定されます。
データ・ポンプ・エクスポートがFULL
またはSCHEMA
モードである。
データ・ポンプ・エクスポートがTABLE
またはTABLESPACE
モードであり、エクスポートの実行前に、エクスポートに含まれる1つ以上の表がエクスポート・データベースでインスタンス化のために準備されている。
インポートされるデータ・ポンプ・エクスポートで、前述の条件のどちらも該当しない場合は、インポート・セッション・タグはNULL
です。
注意:
|
STREAMS_CONFIGURATION
データ・ポンプ・インポート・ユーティリティ・パラメータでは、エクスポート・ダンプ・ファイルに表示される一般的なOracle Streamsメタデータをインポートするかどうかを指定します。このインポート・パラメータは、全データベースのインポートを実行する場合にのみ関連します。デフォルトでは、STREAMS_CONFIGURATION
インポート・ユーティリティ・パラメータはy
に設定されます。通常、インポートがバックアップまたはリストア操作の一部である場合は、y
を指定します。
エクスポート・ダンプ・ファイルに情報が表示される場合、次のオブジェクトは、STREAMS_CONFIGURATION
の設定に関係なくインポートされます。
ANYDATA
キューおよびキュー表。
キュー・サブスクライバ。
アドバンスト・キューイング・エージェント。
ポジティブ・ルール・セット、ネガティブ・ルール・セットおよび評価コンテキストを含めたルール。Oracle StreamsルールおよびOracle Streams以外のルールを含め、すべてのルールがインポートされます。Oracle Streamsルールとは、DBMS_STREAMS_ADM
パッケージの特定のプロシージャが実行されるときにシステムによって生成されるルールで、Oracle Streams以外のルールとは、DBMS_RULE_ADM
パッケージを使用して作成されるルールです。
STREAMS_CONFIGURATION
パラメータの設定がn
の場合、Oracle Streamsルールに関する情報は、データ・ディクショナリ・ビューALL_STREAMS_RULES
、ALL_STREAMS_GLOBAL_RULES
、ALL_STREAMS_SCHEMA_RULES
、ALL_STREAMS_TABLE_RULES
、DBA_STREAMS_RULES
、DBA_STREAMS_GLOBAL_RULES
、DBA_STREAMS_SCHEMA_RULES
およびDBA_STREAMS_TABLE_RULES
にはインポートされません。ただし、これらのルールに関する情報は、STREAMS_CONFIGURATION
パラメータの設定に関係なく、データ・ディクショナリ・ビューALL_RULES
、ALL_RULE_SETS
、ALL_RULE_SET_RULES
、DBA_RULES
、DBA_RULE_SETS
、DBA_RULE_SET_RULES
、USER_RULES
、USER_RULE_SETS
およびUSER_RULE_SET_RULES
にインポートされます。
STREAMS_CONFIGURATION
インポート・ユーティリティ・パラメータの設定がy
で、次の情報がエクスポート・ダンプ・ファイルに表示されている場合、この情報はインポートに含まれます。STREAMS_CONFIGURATION
インポート・ユーティリティ・パラメータの設定がn
の場合は、次の情報はインポートに含まれません。
ローカルの変更を取得する取得プロセス。各取得プロセスには次の情報が含まれます。
取得プロセスの名前。
取得プロセスの状態。
取得プロセスのパラメータの設定。
取得プロセスで使用されるキューのキュー所有者およびキュー名。
取得プロセスで使用されるポジティブ・ルール・セットとネガティブ・ルール・セット、それぞれのルール・セット所有者およびルール・セット名。
取得プロセスの取得ユーザー。
取得プロセスの状態の最終変更時間。この情報は、DBA_CAPTURE
データ・ディクショナリ・ビューに記録されます。
原因となったエラーのエラー番号とメッセージ(取得プロセスが無効化されるか異常終了した場合)。この情報は、DBA_CAPTURE
データ・ディクショナリ・ビューに記録されます。
同期取得。各同期取得には次の情報が含まれます。
同期取得の名前。
同期取得で使用されるキューのキュー所有者およびキュー名。
同期取得で使用されるそれぞれのルール・セットのルール・セット所有者およびルール・セット名。
同期取得の取得ユーザー。
表がエクスポート・データベースでインスタンス化の準備を完了している場合、これらの表がインポート・データベースでインスタンス化用に準備されます。
スキーマがエクスポート・データベースでインスタンス化の準備を完了している場合、これらのスキーマがインポート・データベースでインスタンス化用に準備されます。
エクスポート・データベースがインスタンス化の準備を完了している場合、インポート・データベースがインスタンス化用に準備されます。
Oracle Streamsクライアントが使用する各ANYDATA
キューの状態(開始または停止)。Oracle Streamsクライアントには、取得プロセス、同期取得、伝播、適用プロセスおよびメッセージ・クライアントが含まれます。ANYDATA
キュー自体は、STREAMS_CONFIGURATION
インポート・ユーティリティ・パラメータの設定に関係なくインポートされます。
伝播。各伝播には次の情報が含まれます。
伝播の名前。
ソース・キューのキュー所有者およびキュー名。
宛先キューのキュー所有者およびキュー名。
宛先データベース・リンク。
伝播で使用されるポジティブ・ルール・セットとネガティブ・ルール・セット、それぞれのルール・セット所有者およびルール・セット名。
Oracle Streamsの伝播に関連するOracle Schedulerジョブ。
適用プロセス。各適用プロセスには次の情報が含まれます。
適用プロセスの名前。
適用プロセスの状態。
適用プロセスのパラメータの設定。
適用プロセスで使用されるキューのキュー所有者およびキュー名。
適用プロセスで使用されるルール・セットのポジティブおよびネガティブ・ルール・セット所有者およびルール・セット名。
適用プロセスによって、取得LCRがバッファ・キューに適用されるか、メッセージが永続キューに適用されるか。
適用プロセスの適用ユーザー。
存在する場合は、適用プロセスで使用されるメッセージ・ハンドラ。
存在する場合は、適用プロセスで使用されるDDLハンドラ。
存在する場合は、適用プロセスで使用されるプリコミット・ハンドラ。
適用プロセスによって行われた変更用にREDOログ内で生成されたタグ値。
存在する場合は、適用データベース・リンク。
適用プロセスのソース・データベース。
適用されたメッセージ番号、最も古いメッセージ番号(最も古いSCN)、適用時間および適用されたメッセージの作成時間を含む、DBA_APPLY_PROGRESS
データ・ディクショナリ・ビュー内の適用の進捗に関する情報。
適用エラー。
適用プロセスの状態の最終変更時間。この情報は、DBA_APPLY
データ・ディクショナリ・ビューに記録されます。
原因となったエラーのエラー番号とメッセージ(適用プロセスが無効化されるか異常終了した場合)。この情報は、DBA_APPLY
データ・ディクショナリ・ビューに記録されます。
DMLハンドラ(文DMLハンドラとプロシージャDMLハンドラの両方を含む)。
エラー・ハンドラ。
更新の競合ハンドラ。
適用表の代替キー列。
各適用オブジェクトのインスタンス化SCN。
各適用オブジェクトの非処理SCN。
メッセージ・クライアント。各メッセージ・クライアントには次の情報が含まれます。
メッセージ・クライアントの名前。
メッセージ・クライアントで使用されるキューのキュー所有者およびキュー名。
メッセージ・クライアントで使用されるルール・セットのポジティブ・ルール・セットおよびネガティブ・ルール・セット所有者およびルール・セット名。
メッセージ通知設定。
Oracle Streamsルールに関する一部のデータ・ディクショナリ情報。ルール自体は、STREAMS_CONFIGURATION
パラメータの設定に関係なくインポートされます。
Oracle Streams管理者、メッセージ・クライアント、メッセージ・ルール、取得プロセスまたは同期取得で取得される論理変更レコード(LCR)に含まれる追加の属性、およびメッセージ・ルールで使用される追加の属性に関するデータ・ディクショナリ情報。
注意: ダウンストリームの取得プロセスは、STREAMS_CONFIGURATION 設定に関係なくインポートに含まれません。 |
この項の例では、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
スキーマ内のデータベース・オブジェクトをインスタンス化のために準備します。「インスタンス化のためのスキーマ内のデータベース・オブジェクトの準備」を参照してください。
ソース・データベースに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ユーティリティ』を参照してください。 |
RMANのTRANSPORT
TABLESPACE
コマンドを使用すると、表領域をインスタンス化でき、RMANのDUPLICATE
およびCONVERT
DATABASE
コマンドを使用すると、データベース全体をインスタンス化できます。通常、RMANを使用する方が、他の方法より高速にインスタンス化を実行できます。
ここでは、RMANのコマンドを使用したインスタンス化について説明します。
RMANのTRANSPORT
TABLESPACE
コマンドを実行すると、データ・ポンプおよびRMANで管理される補助インスタンスを使用して、ソース・データベースの表領域または表領域セットがオンライン状態のままで、表領域または表領域セットのデータベース・オブジェクトがエクスポートされます。補助インスタンスは、RMANによって自動的にシステム生成名で起動されます。RMANのTRANSPORT
TABLESPACE
コマンドを実行すると、表領域または表領域セットのデータ・ポンプ・エクスポート・ダンプ・ファイルおよびデータ・ファイルが生成されます。
データ・ポンプを使用して、宛先データベースでダンプ・ファイルをインポートするか、DBMS_STREAMS_TABLESPACE_ADM
パッケージのATTACH_TABLESPACES
プロシージャを使用して、表領域を宛先データベースにアタッチできます。また、表領域がインポートまたはアタッチされると、表領域のデータベース・オブジェクトのインスタンス化SCNの値が宛先データベースで自動的に設定されます。
注意: RMANのTRANSPORT TABLESPACE コマンドでは、ユーザー管理の補助インスタンスはサポートされていません。 |
この項の例では、トランスポータブル表領域またはRMANを使用して表領域内のデータベース・オブジェクトをインスタンス化する場合に必要な手順について説明します。通常、これらのインスタンス化オプションを使用する方が、エクスポート/インポートを使用するより高速にインスタンス化を実行できます。次の例では、表領域内のデータベース・オブジェクトをインスタンス化します。
「トランスポータブル表領域を使用したオブジェクトのインスタンス化」では、トランスポータブル表領域機能を使用してインスタンス化を完了します。データ・ポンプを使用すると、ソース・データベースで表領域がエクスポートされ、宛先データベースでその表領域がインポートされます。エクスポート中、表領域は読取り専用になります。
「バックアップからのトランスポータブル表領域とRMANを使用したオブジェクトのインスタンス化」では、RMANの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
ロールを付与済です。
関連項目:
|
この例では、トランスポータブル表領域を使用して、表領域セット内のデータベース・オブジェクトをインスタンス化します。「トランスポータブル表領域またはRMANを使用した表領域内のオブジェクトのインスタンス化」に示した想定事項に加えて、この例では、次のことを想定しています。
ソース・データベースの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
およびregions_tbs
表領域内のデータベース・オブジェクトをインスタンス化します。
SQL*Plusで、Oracle Streams管理者としてソース・データベースに接続します。
SQL*Plusでデータベースに接続する手順については、『Oracle Database管理者ガイド』を参照してください。
エクスポート・ダンプ・ファイルおよびエクスポート・ログ・ファイルを保持するディレクトリ・オブジェクトを作成します。
CREATE DIRECTORY TRANS_DIR AS '/usr/trans_dir';
インスタンス化のためにhr.jobs_transport
表およびhr.regions_transport
表を準備します。手順については、「インスタンス化のための表の準備」を参照してください。
インスタンス化するオブジェクトを含む表領域を読取り専用にします。この例では、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;
注意: エクスポート・データベースからエクスポートされた表の表サプリメンタル・ログ・グループは、インポート・データベースで表がインポートされる際に保持されます。これらのサプリメンタル・ログ・グループは、必要に応じて削除できます。 |
RMANのTRANSPORT
TABLESPACE
コマンドを実行すると、データ・ポンプおよびRMANで管理される補助インスタンスを使用して、ソース・データベースの表領域または表領域セットがオンライン状態のままで、表領域または表領域セットのデータベース・オブジェクトがエクスポートされます。RMANのTRANSPORT
TABLESPACE
コマンドを使用すると、データ・ポンプ・エクスポート・ダンプ・ファイルおよびデータ・ファイルが生成され、これらのファイルは、宛先データベースでの表領域のデータ・ポンプ・インポートの実行に使用できます。DBMS_STREAMS_TABLESPACE_ADM
パッケージのATTACH_TABLESPACES
プロシージャを使用して、宛先データベースで表領域をアタッチすることもできます。
「トランスポータブル表領域またはRMANを使用した表領域内のオブジェクトのインスタンス化」に示した想定事項に加えて、この例では、次のことを想定しています。
ソース・データベースはtts1.example.com
です。
宛先データベースはtts2.example.com
です。
関連項目: RMANのTRANSPORT TABLESPACE コマンドを使用する手順については、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。 |
次の手順を実行して、トランスポータブル表領域およびRMANを使用してjobs_tbs
およびregions_tbs
表領域内のデータベース・オブジェクトをインスタンス化します。
インスタンス化する表領域を含むソース・データベースのバックアップを作成します(存在しない場合)。RMANには、表領域のクローニング用に有効なバックアップが必要です。この例では、jobs_tbs
表領域およびregions_tbs
表領域を含むソース・データベースのバックアップを作成します(存在しない場合)。
SQL*Plusで、Oracle Streams管理者としてソース・データベースtts1.example.com
に接続します。
SQL*Plusでデータベースに接続する手順については、『Oracle Database管理者ガイド』を参照してください。
オプションで、エクスポート・ダンプ・ファイルおよびエクスポート・ログ・ファイルを保持するディレクトリ・オブジェクトを作成します。
CREATE DIRECTORY SOURCE_DIR AS '/usr/db_files';
この手順はオプションです。これは、手順9でDATAPUMP
DIRECTORY
パラメータを省略してRMANのTRANSPORT
TABLESPACE
コマンドを実行した場合に、補助インスタンスにディレクトリ・オブジェクトSTREAMS_DIROBJ_DPDIR
が作成されるためです。
インスタンス化のためにhr.jobs_transport
表およびhr.regions_transport
表を準備します。手順については、「インスタンス化のための表の準備」を参照してください。
RMANの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でRMANのTRANSPORT
TABLESPACE
コマンドにUNTIL句を指定しないでください。UNTIL句が指定されない場合、RMANは最後のアーカイブREDOログ・ファイルを使用して終了SCNを自動的に判別します。
SQL*Plusで、管理ユーザーとしてソース・データベースtts1.netに接続します。
現行のオンラインREDOログをアーカイブします。
ALTER SYSTEM ARCHIVE LOG CURRENT;
RMANクライアントを起動し、TARGET
としてソース・データベースtts1.example.com
に接続します。
RMANのCONNECT
コマンドの詳細は、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。
ソース・データベースtts1.example.com
で、RMANの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
ディレクトリには、生成された表領域のデータ・ファイルおよびインポート・スクリプトが含まれます。このスクリプトを使用し、宛先データベースに表領域をアタッチしてインスタンス化を完了します。
必要に応じて、インポート・スクリプトを変更します。スクリプト内の次のいずれかまたは両方の項目の変更が必要になる場合があります。
エクスポートした表領域を宛先データベースに含めるために使用する方法を変更することもできます。インポート・スクリプトには、エクスポートした表領域を宛先データベースに含めるために、データ・ポンプ・インポート・コマンド(impdp
)と、DBMS_STREAMS_TABLESPACE_ADM
パッケージのATTACH_TABLESPACES
プロシージャを使用して表領域をアタッチするスクリプトという2つの方法があります。
デフォルトでは、スクリプトでは表領域をアタッチする方法が使用されます。データ・ポンプ・インポート・コマンドはコメント・アウトされます。データ・ポンプ・インポートを使用するには、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.example.com
に接続します。
インポート・スクリプトを実行します。
SET ECHO ON SPOOL jobs_tbs_imp.out @jobs_tbs_imp.sql
スクリプトが完了したら、jobs_tbs_imp.out
スプール・ファイルをチェックして、すべてのアクションが正常に終了していることを確認します。
RMANのDUPLICATE
コマンドを実行すると、別の場所にターゲット・データベースのコピーが作成されます。このコマンドでは、RMANの補助インスタンスを使用してターゲット・データベース・ファイルのバックアップがリストアされ、新しいデータベースが作成されます。Oracle Streamsでのインスタンス化では、ターゲット・データベースがソース・データベース、新しく作成するデータベースが宛先データベースです。RMANのDUPLICATE
コマンドを使用する場合、ソース・データベースと宛先データベースが同じプラットフォームで実行されている必要があります。
RMANのCONVERT
DATABASE
コマンドを実行すると、異なるプラットフォームの新しい宛先データベース用のデータ・ファイルと初期化パラメータ・ファイルが生成されます。また、新しい宛先データベースを作成するスクリプトも生成されます。これらのファイルによって、ソース・データベースと異なるプラットフォームで実行されている(ただし、エンディアン形式はソース・データベースと同じ)宛先データベース全体をインスタンス化できます。
RMANのDUPLICATE
およびCONVERT
DATABASE
コマンドでは、データベース・オブジェクトのインスタンス化SCNの値は設定されません。インスタンス化SCNの値は、インスタンス化中に手動で設定する必要があります。
この項の例では、RMANのDUPLICATE
コマンドまたはCONVERT
DATABASE
コマンドを使用してデータベース全体をインスタンス化する場合に必要な手順について説明します。これらのいずれかのRMANのコマンドを使用してデータベース全体をインスタンス化するには、次の一般的な手順を実行します。
RMANのコマンドを使用して、ソース・データベース全体を接続先サイトにコピーします。
DBMS_STREAMS_ADM
パッケージのREMOVE_STREAMS_CONFIGURATION
プロシージャを使用して、接続先サイトからOracle Streams構成を削除します。
ソース・データベースからの変更を適用する適用プロセスも含め、Oracle Streams接続先サイトを構成します。
この手順は、ソース・データベースで実行中の取得プロセスまたは伝播を停止させずに実行できます。
次のいずれかの項の手順に従います。
注意:
|
この項の例では、RMANのDUPLICATE
コマンドを使用して、データベース全体をインスタンス化します。この例では、次のことを想定しています。
ソース・データベースdpx1.example.com
に対するすべての変更を取得して、別の宛先データベースdpx2.example.com
にそれらの変更を伝播し、適用します。
ソース・データベースでOracle Streams管理者strmadmin
を構成済です。「すべてのデータベースでのOracle Streams管理者の構成」を参照してください。
dpx1.example.com
データベースとdpx2.example.com
データベースは、同じプラットフォームで実行されています。
関連項目: RMANのDUPLICATE コマンドを使用する方法の詳細は、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。 |
次の手順を実行して、ソース・データベースと宛先データベースが同じプラットフォームで実行されている場合に、RMANを使用してデータベース全体をインスタンス化します。
ソース・データベースのバックアップを作成します(存在しない場合)。RMANには、複製用に有効なバックアップが必要です。この例では、dpx1.example.com
のバックアップを作成します(存在しない場合)。
注意: RMANのDUPLICATE コマンドを実行する際にFROM ACTIVE DATABASE オプションを使用する場合、ソース・データベースのバックアップは不要です。大規模なデータベースでは、FROM ACTIVE DATABASE オプションの実行に大量のネットワーク・リソースが必要になります。この例では、このオプションは使用しません。 |
SQL*Plusで、Oracle Streams管理者としてソース・データベースdpx1.example.com
に接続します。
SQL*Plusでデータベースに接続する手順については、『Oracle Database管理者ガイド』を参照してください。
ソース・データベースからの変更をステ―ジングするANYDATA
キューを作成します(存在しない場合)。このキューは、構成後に宛先データベースに伝播される変更をステージングします。
たとえば、次のプロシージャを実行すると、キューstreams_queue
が作成されます。
EXEC DBMS_STREAMS_ADM.SET_UP_QUEUE();
手順9までは、SQL*Plusでソース・データベースにOracle Streams管理者として接続したまま実行してください。
dpx1.example.com
からdpx2.example.com
へのデータベース・リンクを作成します。
CREATE DATABASE LINK dpx2.example.com CONNECT TO strmadmin
IDENTIFIED BY password USING 'dpx2.example.com';
ソース・データベースのソース・キューから宛先データベースの宛先キューへの伝播を作成します。この時点では宛先データベースの宛先キューは存在していませんが、この伝播を作成すると、ソース・キューにエンキューされた論理変更レコード(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.example.com', include_dml => TRUE, include_ddl => TRUE, source_database => 'dpx1.example.com', 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
データ・ディクショナリ・ビューを問い合せて、ソース・データベースがインスタンス化のために準備されていることを確認してください。
手順7で取得プロセスを作成している場合、その取得プロセスを起動します。
BEGIN DBMS_CAPTURE_ADM.START_CAPTURE( capture_name => 'capture_db'); END; /
RMANの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.example.com
に接続します。
SQL*Plusでデータベースに接続する手順については、『Oracle Database管理者ガイド』を参照してください。
現行のオンラインREDOログをアーカイブします。
ALTER SYSTEM ARCHIVE LOG CURRENT;
データベースの複製用に環境を準備します。宛先データベースを複製の補助インスタンスとして準備します。手順については、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。
RMANクライアントを起動し、TARGET
としてソース・データベースdpx1.example.com
に、AUXILIARY
として宛先データベースdpx2.example.com
に接続します。
RMANのCONNECT
コマンドの詳細は、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。
OPEN
RESTRICTED
オプションを指定してRMANのDUPLICATE
コマンドを実行し、宛先データベースでソース・データベースをインスタンス化します。OPEN
RESTRICTED
オプションは必須です。このオプションを指定すると、SQL文ALTER
SYSTEM
ENABLE
RESTRICTED
SESSION
を発行することによって、複製データベースで制限付きセッションを有効にできます。RMANは、複製データベースがオープンされる直前にこの文を発行します。
UNTIL
SCN
句を使用して、複製用のSCNを指定できます。この句には、手順9で判断した終了SCNを使用します。RMANのDUPLICATE
コマンドに指定した終了SCNは、手順7でデータベースがインスタンス化のために準備された際のSCNより大きい必要があります。また、アーカイブREDOログが、指定した終了SCN値以上で使用可能である必要があります。したがって、手順11では、終了SCNを含むREDOログをアーカイブしています。
DUPLICATE
コマンドのTO
database_name
に、複製データベースの名前を指定していることを確認してください。この例では、複製データベースの名前はdpx2
です。したがって、この例のDUPLICATE
コマンドにはTO
dpx2
が含まれます。
次に、RMANのDUPLICATE
コマンドの例を示します。
RMAN> RUN { SET UNTIL SCN 3050191; ALLOCATE AUXILIARY CHANNEL dpx2 DEVICE TYPE sbt; DUPLICATE TARGET DATABASE TO dpx2 NOFILENAMECHECK OPEN RESTRICTED; }
関連項目: RMANのDUPLICATE コマンドの詳細は、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。 |
SQL*Plusで宛先データベースに管理ユーザーとして接続し、データベースのグローバル名を変更します。RMANのDUPLICATE
コマンドを実行すると、宛先データベースはソース・データベースと同じグローバル名を持ちます。
ALTER DATABASE RENAME GLOBAL_NAME TO DPX2.EXAMPLE.COM;
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;
宛先データベースで、Oracle Streams管理者として接続します。「すべてのデータベースでのOracle Streams管理者の構成」を参照してください。
宛先データベースで、手順5で指定したキューを作成します。
たとえば、次のプロシージャを実行すると、キューstreams_queue
が作成されます。
EXEC DBMS_STREAMS_ADM.SET_UP_QUEUE();
宛先データベースで、Oracle Streams環境を構成します。
宛先データベースで、宛先データベースからソース・データベースへのデータベース・リンクを作成します。
CREATE DATABASE LINK dpx1.example.com CONNECT TO strmadmin
IDENTIFIED BY password USING 'dpx1.example.com';
次の手順でrecursiveパラメータをTRUE
に設定してSET_GLOBAL_INSTANTIATION_SCN
プロシージャを実行するため、このデータベース・リンクが必要になります。
宛先データベースで、ソース・データベースのグローバル・インスタンス化SCNを設定します。RMANのDUPLICATE
コマンドを実行すると、UNTIL
SCN
句で指定したSCN値より1つ少ない値まで、データベースが複製されます。したがって、手順14でDUPLICATE
コマンドを実行した際に指定した終了SCN値から1を引く必要があります。この例では、終了SCNを3050191
に設定しています。したがって、インスタンス化SCNは3050191
-
1
の3050190
に設定する必要があります。
たとえば、dpx1.example.com
ソース・データベースのグローバル・インスタンス化SCNを3050190
に設定するには、次のプロシージャを実行します。
BEGIN DBMS_APPLY_ADM.SET_GLOBAL_INSTANTIATION_SCN( source_database_name => 'dpx1.example.com', instantiation_scn => 3050190, recursive => TRUE); END; /
宛先データベースのすべてのスキーマおよび表のインスタンス化SCNを設定するには、recursive
パラメータがTRUE
に設定されていることを確認してください。
宛先データベースで、構成した適用プロセスを起動できます。
ソース・データベースで、手順6で停止した伝播を起動します。
BEGIN DBMS_PROPAGATION_ADM.START_PROPAGATION( queue_name => 'dpx1_to_dpx2'); END; /
この項の例では、RMANのCONVERT
DATABASE
コマンドを使用して、データベース全体をインスタンス化します。この例では、次のことを想定しています。
ソース・データベースcvx1.example.com
に対するすべての変更を取得して、別の宛先データベースcvx2.example.com
にそれらの変更を伝播し、適用します。
ソース・データベースでOracle Streams管理者strmadmin
を構成済です。「すべてのデータベースでのOracle Streams管理者の構成」を参照してください。
cvx1.example.com
とcvx2.example.com
データベースは異なるプラットフォーム上で実行され、RMANのCONVERT
DATABASE
コマンドはそのプラットフォームの組合せでサポートされています。DBMS_TDB
パッケージを使用して、任意のプラットフォームの組合せでサポートされているかどうかを判別できます。
RMANのCONVERT
DATABASE
コマンドを実行すると、変換済のデータ・ファイル、初期化パラメータ・ファイル(PFILE)およびSQLスクリプトが生成されます。変換済のデータ・ファイルおよびPFILEは宛先データベースで使用し、SQLスクリプトは、接続先プラットフォームで宛先データベースを作成するために使用します。
関連項目: RMANのCONVERT DATABASE コマンドを使用する手順については、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。 |
次の手順を実行して、ソース・データベースと宛先データベースが異なるプラットフォームで実行されている場合に、RMANを使用してデータベース全体をインスタンス化します。
ソース・データベースのバックアップを作成します(存在しない場合)。RMANには、有効なバックアップが必要です。この例では、cvx1.example.com
のバックアップを作成します(存在しない場合)。
SQL*Plusで、Oracle Streams管理者としてソース・データベースcvx1.example.com
に接続します。
SQL*Plusでデータベースに接続する手順については、『Oracle Database管理者ガイド』を参照してください。
ソース・データベースからの変更をステ―ジングするANYDATA
キューを作成します(存在しない場合)。このキューは、構成後に宛先データベースに伝播される変更をステージングします。
たとえば、次のプロシージャを実行すると、キューstreams_queue
が作成されます。
EXEC DBMS_STREAMS_ADM.SET_UP_QUEUE();
手順8までは、SQL*Plusでソース・データベースにOracle Streams管理者として接続したまま実行してください。
cvx1.example.com
からcvx2.example.com
へのデータベース・リンクを作成します。
CREATE DATABASE LINK cvx2.example.com CONNECT TO strmadmin
IDENTIFIED BY password USING 'cvx2.example.com';
ソース・データベースのソース・キューから宛先データベースの宛先キューへの伝播を作成します。この時点では宛先データベースの宛先キューは存在していませんが、この伝播を作成すると、ソース・キューにエンキューされた論理変更レコード(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.example.com', include_dml => TRUE, include_ddl => TRUE, source_database => 'cvx1.example.com', 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
データ・ディクショナリ・ビューを問い合せて、ソース・データベースがインスタンス化のために準備されていることを確認してください。
手順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
ファンクションを実行します。結果をチェックして、RMANの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
であると想定します。
RMANクライアントを起動し、TARGET
としてソース・データベースcvx1.example.com
に接続します。
RMANのCONNECT
コマンドの詳細は、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。
CONVERT
DATABASE
コマンドを実行します。
CONVERT
DATABASE
コマンドのNEW
DATABASE
database_name
に、宛先データベースの名前を指定していることを確認してください。この例では、宛先データベースの名前はcvx2
です。したがって、この例のCONVERT
DATABASE
コマンドにはNEW
DATABASE
cvx2
が含まれます。
Linux
IA
(64-bit)
プラットフォームで実行される宛先データベースに対するRMANの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';
RMANの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.example.com
に接続します。
ソース・データベースからクローニングされた、ソース・データベースから宛先データベースへのデータベース・リンクを削除します。
DROP DATABASE LINK cvx2.example.com;
宛先データベースで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管理者の構成」を参照してください。
宛先データベースで、ソース・データベースへのデータベース・リンクを作成します。
CREATE DATABASE LINK cvx1.example.com CONNECT TO strmadmin
IDENTIFIED BY password USING 'cvx1.example.com';
次の手順でrecursiveパラメータをTRUE
に設定してSET_GLOBAL_INSTANTIATION_SCN
プロシージャを実行するため、このデータベース・リンクが必要になります。
宛先データベースで、ソース・データベースのグローバル・インスタンス化SCNを、手順12で戻されたSCN値に設定します。
たとえば、cvx1.example.com
ソース・データベースのグローバル・インスタンス化SCNを46931285
に設定するには、次のプロシージャを実行します。
BEGIN DBMS_APPLY_ADM.SET_GLOBAL_INSTANTIATION_SCN( source_database_name => 'cvx1.example.com', 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が設定されます。手順については、「トランスポータブル表領域またはRMANを使用した表領域内のオブジェクトのインスタンス化」を参照してください。
DBMS_APPLY_ADM
パッケージのSET_TABLE_INSTANTIATION_SCN
、SET_SCHEMA_INSTANATIATION_SCN
およびSET_GLOBAL_INSTANTIATION_SCN
プロシージャを使用して、インスタンス化SCNを設定します。手順については、「DBMS_APPLY_ADMパッケージを使用したインスタンス化SCNの設定」を参照してください。
関連項目: 『Oracle Streams概要および管理』 |
この項では、エクスポート/インポートを実行してインスタンス化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を設定できます。
注意:
|
表8-3に、各プロシージャとインスタンス化SCNを設定する文のタイプを示します。
表8-3 インスタンス化SCNを設定するプロシージャと、その対象となる文
プロシージャ | インスタンス化SCNの設定対象 | 例 |
---|---|---|
|
表の索引と表のトリガーに対するDDL文 |
表に対する 表に対する |
|
表レベルのインスタンス化SCNによって処理されるDDL文を除き、 |
|
|
所有者を持たない、ユーザー以外のデータベース・オブジェクトに対するDDL文 PUBLICに所有されるデータベース・オブジェクトに対するDDL文
|
|
この項の例を実行するユーザーは、ソース・データベースから宛先データベースへのデータベース・リンクに対するアクセス権を持っている必要があります。この項の例では、データベース・リンクはhrdb2.example.com
です。次の例では、ソース・データベースhrdb1.example.com
で次のプロシージャを実行することで、hrdb2.example.com
データベースで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.EXAMPLE.COM( source_object_name => 'hr.departments', source_database_name => 'hrdb1.example.com', instantiation_scn => iscn); END; /
次の例では、ソース・データベースhrdb1.example.com
で次のプロシージャを実行することで、hrdb2.example.com
データベースで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.EXAMPLE.COM( source_schema_name => 'oe', source_database_name => 'hrdb1.example.com', instantiation_scn => iscn, recursive => TRUE); END; /
recursive
パラメータがTRUE
に設定されているため、このプロシージャを実行すると、oe
スキーマ内のデータベース・オブジェクトごとにインスタンス化SCNが設定されます。
注意: recursive パラメータをTRUE に設定する際は、ソース・データベースへの接続中にプロシージャを実行する場合でも、宛先データベースからソース・データベースへのデータベース・リンクが必要です。このデータベース・リンクはソース・データベースのグローバル名と同じ名前であり、現行ユーザーからアクセス可能である必要があります。 |
この項の例を実行するユーザーは、宛先データベースからソース・データベースへのデータベース・リンクに対するアクセス権を持っている必要があります。この項の例では、データベース・リンクはhrdb1.example.com
です。次の例では、宛先データベースhrdb2.example.com
で次のプロシージャを実行することで、hrdb2.example.com
データベースでhr.departments
表のインスタンス化SCNが、ソース・データベースhrdb1.example.com
の現行のSCNに設定されます。
DECLARE iscn NUMBER; -- Variable to hold instantiation SCN value BEGIN iscn := DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER@HRDB1.EXAMPLE.COM; DBMS_APPLY_ADM.SET_TABLE_INSTANTIATION_SCN( source_object_name => 'hr.departments', source_database_name => 'hrdb1.example.com', instantiation_scn => iscn); END; /
次の例では、宛先データベースhrdb2.example.com
で次のプロシージャを実行することで、hrdb2.example.com
データベースでoe
スキーマおよびそのすべてのオブジェクトのインスタンス化SCNが、ソース・データベースhrdb1.example.com
の現行のSCNに設定されます。
DECLARE iscn NUMBER; -- Variable to hold instantiation SCN value BEGIN iscn := DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER@HRDB1.EXAMPLE.COM; DBMS_APPLY_ADM.SET_SCHEMA_INSTANTIATION_SCN( source_schema_name => 'oe', source_database_name => 'hrdb1.example.com', instantiation_scn => iscn, recursive => TRUE); END; /
recursive
パラメータがTRUE
に設定されているため、このプロシージャを実行すると、oe
スキーマ内のデータベース・オブジェクトごとにインスタンス化SCNが設定されます。
注意: 適用プロセスでOracle以外のリモート・データベースに変更が適用される場合は、インスタンス化SCNを設定するときに、apply_database_link パラメータをリモートの適用に使用するデータベース・リンクに設定します。 |
関連項目:
|
ここでは、ソース・データベースでインスタンス化のために準備済であるデータベース・オブジェクト、および宛先データベースでのデータベース・オブジェクトのインスタンス化SCNを判断するために実行できる問合せについて説明します。
データベース・オブジェクトをインスタンス化のために準備する方法の詳細は、「取得のルールとインスタンス化の準備」を参照してください。
どのデータベース・オブジェクトのインスタンス化の準備が完了しているかを判断するには、次のデータ・ディクショナリ・ビューを問い合せます。
DBA_CAPTURE_PREPARED_TABLES
DBA_SYNC_CAPTURE_PREPARED_TABS
DBA_CAPTURE_PREPARED_SCHEMAS
DBA_CAPTURE_PREPARED_DATABASE
たとえば、PREPARE_TABLE_INSTANTIATION
プロシージャでインスタンス化の準備が完了しているすべての表、各表が準備された時刻およびそのSCNを表示するには、次の問合せを実行します。
COLUMN TABLE_OWNER HEADING 'Table Owner' FORMAT A15 COLUMN TABLE_NAME HEADING 'Table Name' FORMAT A15 COLUMN SCN HEADING 'Prepare SCN' FORMAT 99999999999 COLUMN TIMESTAMP HEADING 'Time Ready for|Instantiation' SELECT TABLE_OWNER, TABLE_NAME, SCN, TO_CHAR(TIMESTAMP, 'HH24:MI:SS MM/DD/YY') TIMESTAMP FROM DBA_CAPTURE_PREPARED_TABLES;
出力は次のようになります。
Time Ready for Table Owner Table Name Prepare SCN Instantiation --------------- --------------- ----------------- ----------------- HR COUNTRIES 196655 12:59:30 02/28/02 HR DEPARTMENTS 196658 12:59:30 02/28/02 HR EMPLOYEES 196659 12:59:30 02/28/02 HR JOBS 196660 12:59:30 02/28/02 HR JOB_HISTORY 196661 12:59:30 02/28/02 HR LOCATIONS 196662 12:59:30 02/28/02 HR REGIONS 196664 12:59:30 02/28/02
インスタンス化SCNは、宛先データベースで設定されます。これによって、適用プロセスで、データベース・オブジェクトに対して無視される取得論理変更レコード(LCR)と適用される取得LCRが制御されます。ソース・データベースからの表に関するLCRのコミットSCNが、宛先データベースでその表のインスタンス化SCN以下であれば、宛先データベースの適用プロセスではLCRが廃棄されます。それ以外の場合は、適用プロセスによってLCRが適用されます。LCRは、取得プロセスまたは同期取得で取得できます。「宛先データベースでのインスタンス化SCNの設定」を参照してください。
どのデータベース・オブジェクトのインスタンス化SCNが設定されているかを判断するには、対応する次のデータ・ディクショナリ・ビューを問い合せます。
DBA_APPLY_INSTANTIATED_OBJECTS
DBA_APPLY_INSTANTIATED_SCHEMAS
DBA_APPLY_INSTANTIATED_GLOBAL
次の問合せを実行すると、宛先データベースでインスタンス化SCNが設定されている各表と、それぞれの表のインスタンス化SCNが表示されます。
COLUMN SOURCE_DATABASE HEADING 'Source Database' FORMAT A20 COLUMN SOURCE_OBJECT_OWNER HEADING 'Object Owner' FORMAT A15 COLUMN SOURCE_OBJECT_NAME HEADING 'Object Name' FORMAT A15 COLUMN INSTANTIATION_SCN HEADING 'Instantiation SCN' FORMAT 99999999999 SELECT SOURCE_DATABASE, SOURCE_OBJECT_OWNER, SOURCE_OBJECT_NAME, INSTANTIATION_SCN FROM DBA_APPLY_INSTANTIATED_OBJECTS WHERE APPLY_DATABASE_LINK IS NULL;
出力は次のようになります。
Source Database Object Owner Object Name Instantiation SCN -------------------- --------------- --------------- ----------------- DBS1.EXAMPLE.COM HR REGIONS 196660 DBS1.EXAMPLE.COM HR COUNTRIES 196660 DBS1.EXAMPLE.COM HR LOCATIONS 196660
注意: Oracle以外のリモート・データベースに適用される変更についてのインスタンス化SCNを表示することもできます。この問合せでは、APPLY_DATABASE_LINK 列がNULL の場合にのみインスタンス化SCNが表示されるため、これらのインスタンス化SCNは表示されません。 |