ヘッダーをスキップ
Oracle® Database 2日でデータ・レプリケーションおよび統合ガイド
11g リリース2(11.2)
B56305-03
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

6 Oracle Streamsレプリケーション環境の拡張

この章では、データベース・オブジェクトまたはデータベースを追加することによるOracle Streamsレプリケーション環境の拡張について説明します。

この章は次の項で構成されています。

Oracle Streamsレプリケーション環境の拡張の概要

組織でのニーズが変化すると、Oracle Streamsレプリケーション環境の拡張が必要な場合があります。Oracle Streamsレプリケーション環境は、データベース・オブジェクトまたはデータベースを追加することによって拡張することができます。

Oracle Streamsレプリケーション環境の拡張には2つの方法があります。

「Streamsレプリケーションの設定」ウィザードまたは単一の構成プロシージャを使用

環境が特定の条件を満たす場合は、次のいずれかの方法によりOracle Streamsレプリケーション環境を拡張できます。

ウィザードまたはいずれかのプロシージャを使用してOracle Streamsレプリケーション環境を拡張するには、環境が次の条件を満たしている必要があります。

レプリケーション環境がこれらの条件を満たす場合は、「Streamsレプリケーションの設定」ウィザードまたは単一のプロシージャを使用して環境を拡張します。

次は、ウィザードまたはプロシージャを実行する前に、レプリケートされたデータベース・オブジェクトが目的の宛先データベースに存在する場合の追加要求です。

ウィザードを使用してレプリケーション環境に追加する方法については、次の各項を参照してください。

単一のプロシージャを使用してレプリケーション環境に追加する方法については、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。

複数の手順でOracle Streamsコンポーネントを個別に追加

「Streamsレプリケーションの設定」ウィザード、またはDBMS_STREAMS_ADMパッケージの構成プロシージャを使用してOracle Streamsレプリケーション環境を拡張できない場合は、構成手順を手動で完了する必要があります。この手順には、必要なルールとOracle Streamsコンポーネントを環境に追加するなど、いくつかの構成手順が含まれます。

Oracle Streamsレプリケーション環境を手動で拡張する必要がある場合は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。


関連項目:


チュートリアル: レプリケーション環境へのデータベース・オブジェクトの追加

この項では、Oracle Enterprise Managerの「Streamsレプリケーションの設定」ウィザードを使用して、既存のハブアンドスポーク・レプリケーション環境に表を追加する例を説明します。この例を完了すると、Oracle Streamsレプリケーション環境によって、その環境のデータベースに追加された表に対する変更がレプリケートされます。

具体的には、この項の例では、「チュートリアル: ローカル取得プロセスでのハブアンドスポーク・レプリケーションの構成」で構成したレプリケーション環境を拡張します。この構成には、次のような特徴があります。

この例では、環境に次の表を追加します。

この例ではoeサンプル・スキーマにある表を使用します。 oeサンプル・スキーマはOracle Databaseとともにデフォルトでインストールされます。


注意:

「Streamsレプリケーションの設定」ウィザードを使用してOracle Streamsレプリケーション環境を拡張する前に、「Oracle Streamsレプリケーション環境の拡張の概要」で説明されている条件を環境が満たしていることを確認してください。

Oracle Streamsレプリケーション環境にデータベース・オブジェクトを追加するには: 

  1. ハブアンドスポーク環境で、ハブ・データベースの取得プロセスを停止します。

    この例では、hub.example.comデータベースの取得プロセスを停止します。取得プロセスを停止しても、レプリケートされたデータベース・オブジェクトは変更に対してオープンなままにしておくことができます。これらの変更は、取得プロセスが再開されたときに取得されます。

    1. Oracle Enterprise Managerで、Oracle Streams管理者としてハブ・データベースにログインします。

    2. 「データベース」ホームページに移動します。

    3. 「高可用性」の下にある「Streamsコンポーネント」の番号リンクをクリックします。

      「レプリケーションの管理」ページが表示され、「概要」サブページが表示されます。

    4. 「Streams」をクリックして「Streams」サブページを開きます。

      tdpii_strrms_strms.gifの説明が続きます。
      tdpii_strrms_strms.gifの説明

    5. 停止する取得プロセスを選択します。必要に応じて、検索ツールを使用して取得プロセスを検索してから選択します。

    6. 「アクション」で「無効化」を選択します。

    7. 「実行」をクリックします。

    8. 確認ページで「はい」をクリックして、取得プロセスを定位します。


    注意:

    DBMS_CAPTURE_ADM.STOP_CAPTUREプロシージャを使用して、取得プロセスを停止することもできます。

  2. Oracle Streams管理者としてOracle Enterprise Managerのハブ・データベースに接続している状態で、データベース・インスタンスの「データベース」ホームページに移動します。

  3. 「データ移動」をクリックして「データ移動」サブページを開きます。

  4. 「Streams」セクションの「設定」をクリックします。

    「Streams」ページが表示され、「設定」オプションが表示されます。

  5. 「Streamsレプリケーションの設定」で、「表のレプリケート」を選択します。

  6. 「ホスト資格証明」セクションで、ホスト・コンピュータ・システムの管理ユーザーのユーザー名とパスワードを入力します。

  7. 「続行」をクリックします。

  8. 「オブジェクト選択」ページで、「追加」をクリックして「表の選択」ページを開きます。

  9. 検索ツールを使用して、oe.ordersおよびoe.order_items表を表示し、これらの表を選択します。

    たとえば、「スキーマ」フィールドにoeと入力して「実行」をクリックすると、これらの表が表示されます。

  10. 「選択」をクリックします。「オブジェクト選択」ページにoe.ordersおよびoe.order_items表が表示されます。

  11. 「次へ」をクリックします。

  12. 「宛先オプション」ページで、ホスト名、ポート、SIDまたはサービス名およびOracle Streams管理者資格証明を指定して、スポーク・データベースspoke1.example.comを指定します。

    (レプリケーションをspoke2.example.comデータベースで構成する場合は、spoke2.example.comを指定します。)

  13. 「次へ」をクリックします。

  14. 「レプリケーション・オプション」ページを完了します。

    1. 「ディレクトリ・パス」セクションで、手順6で指定したホスト・ユーザーがディレクトリに対して読取りおよび書込みを行うことができ、データ・ポンプ・エクスポート・ダンプ・ファイルに対する十分な領域がある場合、ソース・データベースと宛先データベースのディレクトリ・パスをそのままにしておきます。変更する場合は、別のディレクトリ・パスを指定するか、またはこれらの要件を満たすディレクトリ・オブジェクトを作成して指定します。

    2. 「拡張オプション」を拡張します。

    3. 「オプション」セクションで「データ操作言語(DML)の変更を取得、伝播および適用」が選択されていることを確認します。

    4. DDL変更をレプリケートしない場合は、「データ定義言語(DDL)の変更を取得、伝播および適用」を選択解除します。

    5. 「双方向レプリケーションの設定」を選択します。

    6. 「取得プロセス」セクションで、「取得名」capture_hnsと入力します。

    7. 「伝播プロセス」セクションで、「伝播名」propagation_spoke1と入力します。(レプリケーションをspoke2.example.comデータベースで構成する場合は、propagation_spoke2と入力します。)

    8. 「適用プロセス」セクションで、「適用名」apply_spoke1と入力します。(レプリケーションをspoke2.example.comデータベースで構成する場合は、apply_spoke2と入力します。)

  15. 「次へ」をクリックします。

  16. 「ジョブのスケジュール」ページで、「即時」を選択するか、後でジョブを実行する時刻を指定します。

  17. 「次へ」をクリックします。

  18. 「確認」ページで、構成情報を確認して、「発行」をクリックします。

  19. 確認ページで、オプションとして、ジョブ・リンクをクリックしてジョブを監視します。

    ジョブを実行すると、進捗情報がDBA_RECOVERABLE_SCRIPTDBA_RECOVERABLE_SCRIPT_PARAMSDBA_RECOVERABLE_SCRIPT_BLOCKSおよびDBA_RECOVERABLE_SCRIPT_ERRORSデータ・ディクショナリ・ビューに記録されます。ジョブがエラーによって停止した場合は、DBMS_STREAMS_ADMパッケージ内のRECOVER_OPERATIONプロシージャの使用方法について、『Oracle Streamsレプリケーション管理者ガイド』を参照してエラーからリカバリしてください。

  20. Oracle Streams管理者としてハブ・データベースに接続している状態で、手順1から19をもう一度完了します。ただし、手順12では、「宛先オプション」ページで、ホスト名、ポート、SIDまたはサービス名およびOracle Streams管理者資格証明を指定して、スポーク・データベースspoke2.example.comを識別します。

    また、手順14gでは「伝播名」propagation_spoke2を入力し、手順14hでは「適用名」apply_spoke2を入力します。

  21. スポーク・データベースで、レプリケートされた表のインスタンス化SCNを設定します。


    注意:

    この例でこの手順が必要なのは、ウィザードの実行前に、レプリケートされた表がスポーク・データベースに存在していたためです。ウィザードの実行前に、レプリケートされた表がスポーク・データベースに存在していなかった場合は、ウィザードによって、レプリケートされた表にインスタンス化SCNが設定されるため、この手順は必要ありません。インスタンス化SCNが設定されたときに共有表がソース・データベースと宛先データベースで一貫していること、およびSCNがインスタンス化SCNに使用されるまでソース・データベースの表が変更されないことを確認します。

    1. SQL*Plusで、hub.example.comデータベースにOracle Streams管理者として接続します。

      SQL*Plusでのデータベースへの接続の詳細は、『Oracle Database管理者ガイド』を参照してください。

    2. spoke1.example.comデータベースでoe.orders表のインスタンス化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@spoke1.example.com(
          source_object_name    => 'oe.orders',
          source_database_name  => 'hub.example.com',
          instantiation_scn     => iscn);
      END;
      /
      
    3. spoke1.example.comデータベースでoe.order_items表のインスタンス化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@spoke1.example.com(
          source_object_name    => 'oe.order_items',
          source_database_name  => 'hub.example.com',
          instantiation_scn     => iscn);
      END;
      /
      
    4. spoke2.example.comデータベースでoe.orders表のインスタンス化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@spoke2.example.com(
          source_object_name    => 'oe.orders',
          source_database_name  => 'hub.example.com',
          instantiation_scn     => iscn);
      END;
      /
      
    5. spoke2.example.comデータベースでoe.order_items表のインスタンス化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@spoke2.example.com(
          source_object_name    => 'oe.order_items',
          source_database_name  => 'hub.example.com',
          instantiation_scn     => iscn);
      END;
      /
      
  22. hub.example.comspoke1.example.comおよびspoke2.example.comの各データベースのoeスキーマにあるorders表およびorder_items表に対して最新時刻競合解消を構成します。方法については、「チュートリアル: 表の最新時刻競合解消の構成」を参照してください。

チュートリアル: レプリケーション環境へのデータベースの追加

この項では、Oracle Enterprise Managerの「Streamsレプリケーションの設定」ウィザードを使用して、既存のハブアンドスポーク・レプリケーション環境に新しいスポーク・データベースを追加する例を説明します。この例を完了すると、Oracle Streamsレプリケーション環境によって、新しいデータベースのスキーマに対する変更がレプリケートされます。

具体的には、この項の例では、「チュートリアル: ローカル取得プロセスでのハブアンドスポーク・レプリケーションの構成」で構成したレプリケーション環境を拡張します。この構成には、次のような特徴があります。

この例では、レプリケーション環境にspoke3.example.comデータベースを追加します。


注意:

「Streamsレプリケーションの設定」ウィザードを使用してOracle Streamsレプリケーション環境を拡張する前に、「Oracle Streamsレプリケーション環境の拡張の概要」で説明されている条件を環境が満たしていることを確認してください。

既存のOracle Streamsレプリケーション環境にデータベースを追加するには: 

  1. 次のタスクを完了して、新しいデータベースの環境を準備します。

    1. ハブ・データベースが新しいスポーク・データベースと通信できるようにネットワーク接続を構成します。この例では、hub.example.comデータベースとspoke3.example.comデータベースが相互に通信できるようにネットワーク接続を構成します。

      データベース間のネットワーク接続の構成の詳細は、『Oracle Database 2日でデータベース管理者』を参照してください。

    2. 新しいスポーク・データベースでOracle Streams管理者を構成します。この例では、spoke3.example.comデータベースでOracle Streams管理者を構成します。方法については、「チュートリアル: Oracle Streams管理者の構成」を参照してください。この例では、Oracle Streams管理者がstrmadminであると想定します。

    3. 新しいスポーク・データベースで初期化パラメータを正しく設定します。この例では、spoke3.example.comデータベースで初期化パラメータを正しく設定します。方法については、「Oracle Streamsレプリケーションの準備」を参照してください。

    4. ARCHIVELOGモードで実行するように新しいスポーク・データベースを構成します。取得プロセスがソース・データベースで生成された変更を取得するには、ソース・データベースをARCHIVELOGモードで実行する必要があります。この例では、spoke3.example.comデータベースをARCHIVELOGモードで実行する必要があります。ARCHIVELOGモードで実行するためのデータベースの構成の詳細は、『Oracle Database管理者ガイド』を参照してください。

  2. ハブアンドスポーク環境で、ハブ・データベースの取得プロセスを停止します。

    この例では、hub.example.comデータベースの取得プロセスを停止します。取得プロセスを停止しても、レプリケートされたデータベース・オブジェクトは変更に対してオープンなままにしておくことができます。これらの変更は、取得プロセスが再開されたときに取得されます。

    1. Oracle Enterprise Managerで、Oracle Streams管理者としてハブ・データベースにログインします。

    2. 「データベース」ホームページに移動します。

    3. 「高可用性」の下にある「Streamsコンポーネント」の番号リンクをクリックします。

      「レプリケーションの管理」ページが表示され、「概要」サブページが表示されます。

    4. 「Streams」をクリックして「Streams」サブページを開きます。

      tdpii_strrms_strms.gifの説明が続きます。
      tdpii_strrms_strms.gifの説明

    5. 停止する取得プロセスを選択します。必要に応じて、検索ツールを使用して取得プロセスを検索してから選択します。

    6. 「アクション」で「無効化」を選択します。

    7. 「実行」をクリックします。

    8. 確認ページで「はい」をクリックして、取得プロセスを定位します。


    注意:

    DBMS_CAPTURE_ADM.STOP_CAPTUREプロシージャを使用して、取得プロセスを停止することもできます。

  3. Oracle Streams管理者としてOracle Enterprise Managerのハブ・データベースに接続している状態で、データベース・インスタンスの「データベース」ホームページに移動します。

  4. 「データ移動」をクリックして「データ移動」サブページを開きます。

  5. 「Streams」セクションの「設定」をクリックします。

    「Streams」ページが表示され、「設定」オプションが表示されます。

  6. 「Streamsレプリケーションの設定」で、「スキーマのレプリケート」を選択します。

  7. 「ホスト資格証明」セクションで、ホスト・コンピュータ・システムの管理ユーザーのユーザー名とパスワードを入力します。

  8. 「続行」をクリックします。

  9. 「オブジェクト選択」ページで、「HR」を選択して、「次へ」をクリックします。

  10. 「宛先オプション」ページで、ホスト名、ポート、SIDまたはサービス名およびOracle Streams管理者資格証明を指定して、スポーク・データベースspoke3.example.comを指定します。

  11. 「次へ」をクリックします。

  12. 「レプリケーション・オプション」ページを完了します。

    1. 「ディレクトリ・パス」セクションで、手順7で指定したホスト・ユーザーがディレクトリに対して読取りおよび書込みを行うことができ、データ・ポンプ・エクスポート・ダンプ・ファイルに対する十分な領域がある場合、ソース・データベースと宛先データベースのディレクトリ・パスをそのままにしておきます。変更する場合は、別のディレクトリ・パスを指定するか、またはこれらの要件を満たすディレクトリ・オブジェクトを作成して指定します。

    2. 「拡張オプション」を拡張します。

    3. 「オプション」セクションで「データ操作言語(DML)の変更を取得、伝播および適用」が選択されていることを確認します。

    4. DDL変更をレプリケートしない場合は、「データ定義言語(DDL)の変更を取得、伝播および適用」を選択解除します。

    5. 「双方向レプリケーションの設定」を選択します。

    6. 「取得プロセス」セクションで、「取得名」capture_hnsと入力します。

    7. 「伝播プロセス」セクションで、「伝播名」propagation_spoke3と入力します。

    8. 「適用プロセス」セクションで、「適用名」apply_spoke3と入力します。

  13. 「次へ」をクリックします。

  14. 「ジョブのスケジュール」ページで、「即時」を選択するか、後でジョブを実行する時刻を指定します。

  15. 「次へ」をクリックします。

  16. 「確認」ページで、構成情報を確認して、「発行」をクリックします。

  17. 確認ページで、オプションとして、ジョブ・リンクをクリックしてジョブを監視します。

    ジョブを実行すると、進捗情報がDBA_RECOVERABLE_SCRIPTDBA_RECOVERABLE_SCRIPT_PARAMSDBA_RECOVERABLE_SCRIPT_BLOCKSおよびDBA_RECOVERABLE_SCRIPT_ERRORSデータ・ディクショナリ・ビューに記録されます。ジョブがエラーによって停止した場合は、DBMS_STREAMS_ADMパッケージ内のRECOVER_OPERATIONプロシージャの使用方法について、『Oracle Streamsレプリケーション管理者ガイド』を参照してエラーからリカバリしてください。

  18. spoke3.example.comデータベースでhrスキーマ内のすべての表に対して最新時刻競合解消を構成します。このスキーマには、countriesdepartmentsemployeesjobsjob_historylocationsおよびregionsの各表が含まれます。方法については、「チュートリアル: 表の最新時刻競合解消の構成」を参照してください。