ヘッダーをスキップ

Oracle Database 2日でデータ・レプリケーションおよび統合ガイド
11g リリース1(11.1)

E05777-03
目次
目次
索引
索引

戻る 次へ

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

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

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

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

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

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

DBMS_STREAMS_ADMパッケージの単一の構成プロシージャを使用

Oracle Streamsレプリケーション環境を拡張する最も簡単な方法は、DBMS_STREAMS_ADMパッケージにある次のいずれかのプロシージャを実行することです。

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

環境がこれらの条件を満たす場合は、次のいずれかの項の手順を完了して環境を拡張します。

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

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

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

参照:

 

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

この項では、DBMS_STREAMS_ADMパッケージのMAINTAIN_TABLESプロシージャを使用して、既存のハブアンドスポーク・レプリケーション環境に表を追加する例を説明します。この例を完了すると、Oracle Streamsレプリケーション環境によって、その環境のデータベースに追加された表に対する変更がレプリケートされます。構成プロシージャの詳細は、「Oracle Streamsレプリケーションの構成プロシージャの概要」を参照してください。

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

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

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


注意:

DBMS_STREAMS_ADMパッケージの構成プロシージャを使用してOracle Streamsレプリケーション環境を拡張する前に、「Oracle Streamsレプリケーション環境の拡張の概要」で説明されている条件を環境が満たしていることを確認してください。 


Oracle Streamsレプリケーション環境にデータベース・オブジェクトを追加するには:
  1. 次のディレクトリ・オブジェクトが存在することを確認して、それらのオブジェクトから、以前の構成に関連するすべてのファイル(データ・ポンプ・エクスポート・ダンプ・ファイルおよびエクスポート・ログ・ファイルを含む)を削除します。

    • hub.example.comデータベースのhub_dirディレクトリ・オブジェクト。

    • spoke1.example.comデータベースのspoke1_dirディレクトリ・オブジェクト。

    • spoke2.example.comデータベースのspoke2_dirディレクトリ・オブジェクト。

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

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

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

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

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

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

      「Streams」ページが表示され、「概要」サブページが表示されます。

    5. 「取得」をクリックして「取得」サブページを開きます。


      画像の説明

    6. 停止する取得プロセスを選択します。

    7. 「停止」をクリックします。

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

  3. SQL*Plusを使用して、ハブ・データベースでDBMS_STREAMS_ADMパッケージ内の適切な構成プロシージャを実行し、各スポーク・データベースに新しいデータベース・オブジェクトを追加します。

    環境に複数のスポーク・データベースがある場合は、プロシージャを複数回実行する必要があることがあります。この例では、次の手順を完了します。

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

      SQL*Plusの起動の詳細は、『Oracle Database 2日でデータベース管理者』を参照してください。

    2. MAINTAIN_TABLESプロシージャを実行して、hub.example.comspoke1.example.comの間のレプリケーションにoe.orders表およびoe.order_items表を追加します。

      DECLARE
        tables DBMS_UTILITY.UNCL_ARRAY;
        BEGIN
          tables(1) := 'oe.orders';
          tables(2) := 'oe.order_items';
          DBMS_STREAMS_ADM.MAINTAIN_TABLES(
            table_names                  => tables,
            source_directory_object      => 'hub_dir',
            destination_directory_object => 'spoke1_dir',
            source_database              => 'hub.example.com',
            destination_database         => 'spoke1.example.com',
            capture_name                 => 'capture_hns',
            capture_queue_table          => 'source_hns_qt',
            capture_queue_name           => 'source_hns',
            propagation_name             => 'propagation_spoke1',
            apply_name                   => 'apply_spoke1',
            apply_queue_table            => 'destination_spoke1_qt',
            apply_queue_name             => 'destination_spoke1',
            bi_directional               => TRUE);
      END;
      /
      
      

      MAINTAIN_TABLESプロシージャは、多くの構成タスクを実行するため時間がかかることがあります。プロシージャの実行中は、宛先データベースの指定された表にデータ操作言語(DML)またはデータ定義言語(DDL)変更が行われないようにしてください。プロシージャが完了すると、新しいデータベース・オブジェクトが環境に追加され、手順2で停止した取得プロセスが再開します。構成プロシージャの詳細は、「Oracle Streamsレプリケーションの構成プロシージャの概要」を参照してください。

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

      Oracle Streamsコンポーネント名を指定するパラメータ値は、DBMS_STREAMS_ADMパッケージ内にある、レプリケーション環境を構成した構成プロシージャで指定された値と同じである必要があります。指定されたOracle Streamsコンポーネント名は、取得プロセス名、キュー名、キュー表名、伝播名、適用プロセス名などです。この例では、Oracle Streamsコンポーネント名は「チュートリアル: ローカル取得プロセスでのハブアンドスポーク・レプリケーションの構成」で指定した名前と一致します。

    3. MAINTAIN_TABLESプロシージャを実行して、hub.example.comspoke2.example.comの間のレプリケーションにoe.orders表およびoe.order_items表を追加します。

      DECLARE
        tables DBMS_UTILITY.UNCL_ARRAY;
        BEGIN
          tables(1) := 'oe.orders';
          tables(2) := 'oe.order_items';
          DBMS_STREAMS_ADM.MAINTAIN_TABLES(
            table_names                  => tables,
            source_directory_object      => 'hub_dir',
            destination_directory_object => 'spoke2_dir',
            source_database              => 'hub.example.com',
            destination_database         => 'spoke2.example.com',
            capture_name                 => 'capture_hns',
            capture_queue_table          => 'source_hns_qt',
            capture_queue_name           => 'source_hns',
            propagation_name             => 'propagation_spoke2',
            apply_name                   => 'apply_spoke2',
            apply_queue_table            => 'destination_spoke2_qt',
            apply_queue_name             => 'destination_spoke2',
            bi_directional               => TRUE);
      END;
      /
      
      
  4. スポーク・データベースで、レプリケートされた表のインスタンス化SCNを設定します。


    注意:

    この例でこの手順が必要なのは、MAINTAIN_TABLESプロシージャの実行前に、レプリケートされた表がスポーク・データベースに存在していたためです。MAINTAIN_TABLESプロシージャの実行前に、レプリケートされた表がスポーク・データベースに存在していなかった場合は、プロシージャによって、レプリケートされた表にインスタンス化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;
      /
      
      
  5. hub.example.comspoke1.example.comおよびspoke2.example.comの各データベースのoeスキーマにあるorders表およびorder_items表に対して最新時刻競合解消を構成します。方法については、「チュートリアル: 表の最新時刻競合解消の構成」を参照してください。

    参照:

     

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

この項では、DBMS_STREAMS_ADMパッケージのMAINTAIN_SCHEMASプロシージャを使用して、既存のハブアンドスポーク・レプリケーション環境に新しいスポーク・データベースを追加する例を説明します。この例を完了すると、Oracle Streamsレプリケーション環境によって、新しいデータベースのスキーマに対する変更がレプリケートされます。構成プロシージャの詳細は、「Oracle Streamsレプリケーションの構成プロシージャの概要」を参照してください。

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

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


注意:

DBMS_STREAMS_ADMパッケージの構成プロシージャを使用して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. ハブ・データベースから新しいスポーク・データベースおよび新しいスポーク・データベースからハブ・データベースへのデータベース・リンクを作成します。この例では、次のデータベース・リンクを作成します。

      • hub.example.comデータベースからspoke3.example.comデータベースへ。データベース・リンクの名前とサービス名は、どちらもspoke3.example.comである必要があります。

      • spoke3.example.comデータベースからhub.example.comデータベースへ。データベース・リンクの名前とサービス名は、どちらもhub.example.comである必要があります。

      各データベース・リンクは、Oracle Streams管理者のスキーマに作成する必要があります。また、各データベース・リンクは宛先データベースでOracle Streams管理者に接続する必要があります。方法については、「チュートリアル: データベース・リンクの作成」を参照してください。

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

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

    6. hub.example.comデータベースにhub_dirディレクトリ・オブジェクトが存在することを確認して、そのオブジェクトから、以前の構成に関連するすべてのファイル(データ・ポンプ・エクスポート・ダンプ・ファイルおよびエクスポート・ログ・ファイルを含む)を削除します。

  2. SQL*Plusを開き、spoke3.example.comデータベースにOracle Streams管理者として接続します。

    SQL*Plusの起動の詳細は、『Oracle Database 2日でデータベース管理者』を参照してください。

  3. MAINTAIN_SCHEMASプロシージャで生成されるファイル(インスタンス化に使用するデータ・ポンプ・エクスポート・ダンプ・ファイルを含む)を保持するディレクトリ・オブジェクトを作成します。ディレクトリ・オブジェクトは、コンピュータ・システム上の任意のアクセス可能ディレクトリを指すことができます。たとえば、次の文は、/usr/spoke3_log_filesディレクトリを指すspoke3_dirという名前のディレクトリ・オブジェクトを作成します。

    CREATE DIRECTORY spoke3_dir AS '/usr/spoke3_log_files';
    
    
  4. ハブアンドスポーク環境で、ハブ・データベースの取得プロセスを停止します。

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

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

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

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

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

      「Streams」ページが表示され、「概要」サブページが表示されます。

    5. 「取得」をクリックして「取得」サブページを開きます。


      画像の説明

    6. 停止する取得プロセスを選択します。

    7. 「停止」をクリックします。

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

  5. SQL*Plusを使用して、ハブ・データベースでDBMS_STREAMS_ADMパッケージ内の適切な構成プロシージャを実行し、新しいスポーク・データベースを追加します。

    この例では、次の手順を完了します。

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

    2. MAINTAIN_SCHEMASプロシージャを実行して、spoke3.example.comデータベースをOracle Streamsレプリケーション環境に追加します。

      BEGIN
        DBMS_STREAMS_ADM.MAINTAIN_SCHEMAS(
          schema_names                 => 'hr',
          source_directory_object      => 'hub_dir',
          destination_directory_object => 'spoke3_dir',
          source_database              => 'hub.example.com',
          destination_database         => 'spoke3.example.com',
          capture_name                 => 'capture_hns',
          capture_queue_table          => 'source_hns_qt',
          capture_queue_name           => 'source_hns',
          propagation_name             => 'propagation_spoke3',
          apply_name                   => 'apply_spoke3',
          apply_queue_table            => 'destination_spoke3_qt',
          apply_queue_name             => 'destination_spoke3',
          bi_directional               => TRUE);
      END;
      /
      
      

      MAINTAIN_SCHEMASプロシージャは、多くの構成タスクを実行するため時間がかかることがあります。プロシージャの実行中は、宛先データベースの指定されたスキーマのデータベース・オブジェクトにデータ操作言語(DML)またはデータ定義言語(DDL)変更が行われないようにしてください。プロシージャが完了すると、新しいデータベース・オブジェクトが環境に追加され、手順4で停止した取得プロセスが再開します。構成プロシージャの詳細は、「Oracle Streamsレプリケーションの構成プロシージャの概要」を参照してください。

      capture_namecapture_queue_tableおよびcapture_queue_nameで指定するパラメータ値は、DBMS_STREAMS_ADMパッケージ内にある、レプリケーション環境を構成した構成プロシージャで指定された値と同じである必要があります。この例では、これらのパラメータ値は「チュートリアル: ローカル取得プロセスでのハブアンドスポーク・レプリケーションの構成」で指定した値と一致します。

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

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

    参照:

     


戻る 次へ
Oracle
Copyright © 2007, 2008 Oracle Corporation.

All Rights Reserved.
目次
目次
索引
索引