| Oracle Database 2日でデータ・レプリケーションおよび統合ガイド 11g リリース1(11.1) E05777-03 |
|
この章では、データベース・オブジェクトまたはデータベースを追加することによるOracle Streamsレプリケーション環境の拡張について説明します。
この章は次の項で構成されています。
参照:
組織でのニーズが変化すると、Oracle Streamsレプリケーション環境の拡張が必要な場合があります。Oracle Streamsレプリケーション環境は、データベース・オブジェクトまたはデータベースを追加することによって拡張することができます。
Oracle Streamsレプリケーション環境の拡張には2つの方法があります。
Oracle Streamsレプリケーション環境を拡張する最も簡単な方法は、DBMS_STREAMS_ADMパッケージにある次のいずれかのプロシージャを実行することです。
MAINTAIN_GLOBALプロシージャでは、データベースのオブジェクトすべてに変更をレプリケートする環境にデータベースを追加できます。
MAINTAIN_SCHEMASプロシージャでは、レプリケーション環境の既存データベースに1つ以上の新規スキーマを追加、または現在レプリケートされているスキーマをレプリケートする新規データベースを追加できます。
MAINTAIN_SIMPLE_TTSプロシージャでは、既存のレプリケーション環境に新規の単純表領域を追加、または現在レプリケートされている単純表領域をレプリケートする新規データベースを追加できます。
MAINTAIN_TABLESプロシージャでは、レプリケーション環境の既存データベースに1つ以上の新規表を追加するか、現在レプリケートされている表をレプリケートする新規データベースを追加できます。
MAINTAIN_TTSプロシージャでは、既存のレプリケーション環境に新規の表領域セットを追加、または現在レプリケートされている表領域セットをレプリケートする新規データベースを追加できます。
これらのプロシージャを使用してOracle Streamsレプリケーション環境を拡張するには、環境が次の条件を満たしている必要があります。
DBMS_STREAMS_ADMパッケージにあるいずれかの構成プロシージャによって構成された、2データベース・レプリケーション環境またはハブアンドスポーク・レプリケーション環境である必要があります。これらのレプリケーション環境については、「Oracle Streamsレプリケーション環境の一般的なタイプの概要」を参照してください。
source_databaseパラメータで指定されたデータベースに存在する必要があります。
環境がこれらの条件を満たす場合は、次のいずれかの項の手順を完了して環境を拡張します。
DBMS_STREAMS_ADMパッケージの構成プロシージャを使用してOracle Streamsレプリケーション環境を拡張できない場合は、構成手順を手動で完了する必要があります。この手順には、必要なルールとOracle Streamsコンポーネントを環境に追加するなど、いくつかの構成手順が含まれます。
Oracle Streamsレプリケーション環境を手動で拡張する必要がある場合は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。
|
参照:
|
この項では、DBMS_STREAMS_ADMパッケージのMAINTAIN_TABLESプロシージャを使用して、既存のハブアンドスポーク・レプリケーション環境に表を追加する例を説明します。この例を完了すると、Oracle Streamsレプリケーション環境によって、その環境のデータベースに追加された表に対する変更がレプリケートされます。構成プロシージャの詳細は、「Oracle Streamsレプリケーションの構成プロシージャの概要」を参照してください。
具体的には、この項の例では、「チュートリアル: ローカル取得プロセスでのハブアンドスポーク・レプリケーションの構成」で構成したレプリケーション環境を拡張します。この構成には、次のような特徴があります。
hrスキーマが、hub.example.com、spoke1.example.com、spoke2.example.comの各データベースでレプリケートされます。
hub.example.comデータベースが、ハブアンドスポーク環境におけるハブ・データベースであり、他のデータベースがスポーク・データベースです。
この例では、環境に次の表を追加します。
この例ではoeサンプル・スキーマにある表を使用します。oeサンプル・スキーマはOracle Databaseとともにデフォルトでインストールされます。
|
注意:
|
この例では、hub.example.comデータベースの取得プロセスを停止します。取得プロセスを停止しても、レプリケートされたデータベース・オブジェクトは変更に対してオープンなままにしておくことができます。これらの変更は、取得プロセスが再開されたときに取得されます。
DBMS_STREAMS_ADMパッケージ内の適切な構成プロシージャを実行し、各スポーク・データベースに新しいデータベース・オブジェクトを追加します。環境に複数のスポーク・データベースがある場合は、プロシージャを複数回実行する必要があることがあります。この例では、次の手順を完了します。
hub.example.comデータベースにOracle Streams管理者として接続します。SQL*Plusの起動の詳細は、『Oracle Database 2日でデータベース管理者』を参照してください。
MAINTAIN_TABLESプロシージャを実行して、hub.example.comとspoke1.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_SCRIPT、DBA_RECOVERABLE_SCRIPT_PARAMS、DBA_RECOVERABLE_SCRIPT_BLOCKSおよびDBA_RECOVERABLE_SCRIPT_ERRORSデータ・ディクショナリ・ビューに記録されます。プロシージャがエラーによって停止した場合は、DBMS_STREAMS_ADMパッケージ内のRECOVER_OPERATIONプロシージャの使用方法について、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。
Oracle Streamsコンポーネント名を指定するパラメータ値は、DBMS_STREAMS_ADMパッケージ内にある、レプリケーション環境を構成した構成プロシージャで指定された値と同じである必要があります。指定されたOracle Streamsコンポーネント名は、取得プロセス名、キュー名、キュー表名、伝播名、適用プロセス名などです。この例では、Oracle Streamsコンポーネント名は「チュートリアル: ローカル取得プロセスでのハブアンドスポーク・レプリケーションの構成」で指定した名前と一致します。
MAINTAIN_TABLESプロシージャを実行して、hub.example.comとspoke2.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; /
hub.example.comデータベースにOracle Streams管理者として接続します。SQL*Plusでのデータベースへの接続の詳細は、『Oracle Database管理者ガイド』を参照してください。
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; /
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; /
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; /
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; /
hub.example.com、spoke1.example.comおよびspoke2.example.comの各データベースのoeスキーマにあるorders表およびorder_items表に対して最新時刻競合解消を構成します。方法については、「チュートリアル: 表の最新時刻競合解消の構成」を参照してください。この項では、DBMS_STREAMS_ADMパッケージのMAINTAIN_SCHEMASプロシージャを使用して、既存のハブアンドスポーク・レプリケーション環境に新しいスポーク・データベースを追加する例を説明します。この例を完了すると、Oracle Streamsレプリケーション環境によって、新しいデータベースのスキーマに対する変更がレプリケートされます。構成プロシージャの詳細は、「Oracle Streamsレプリケーションの構成プロシージャの概要」を参照してください。
具体的には、この項の例では、「チュートリアル: ローカル取得プロセスでのハブアンドスポーク・レプリケーションの構成」で構成したレプリケーション環境を拡張します。この構成には、次のような特徴があります。
hrスキーマが、hub.example.com、spoke1.example.com、spoke2.example.comの各データベースでレプリケートされます。
hub.example.comデータベースが、ハブアンドスポーク環境におけるハブ・データベースであり、他のデータベースがスポーク・データベースです。
この例では、レプリケーション環境にspoke3.example.comデータベースを追加します。
|
注意:
|
hub.example.comデータベースとspoke3.example.comデータベースが相互に通信できるようにネットワーク接続を構成します。データベース間のネットワーク接続の構成の詳細は、『Oracle Database 2日でデータベース管理者』を参照してください。
spoke3.example.comデータベースでOracle Streams管理者を構成します。方法については、「チュートリアル: Oracle Streams管理者の作成」を参照してください。この例では、Oracle Streams管理者がstrmadminであると想定します。
hub.example.comデータベースからspoke3.example.comデータベースへ。データベース・リンクの名前とサービス名は、どちらもspoke3.example.comである必要があります。
spoke3.example.comデータベースからhub.example.comデータベースへ。データベース・リンクの名前とサービス名は、どちらもhub.example.comである必要があります。
各データベース・リンクは、Oracle Streams管理者のスキーマに作成する必要があります。また、各データベース・リンクは宛先データベースでOracle Streams管理者に接続する必要があります。方法については、「チュートリアル: データベース・リンクの作成」を参照してください。
spoke3.example.comデータベースで初期化パラメータを正しく設定します。方法については、「Oracle Streamsレプリケーションの準備」を参照してください。
ARCHIVELOGモードで実行するように新しいスポーク・データベースを構成します。取得プロセスがソース・データベースで生成された変更を取得するためには、ソース・データベースをARCHIVELOGモードで実行する必要があります。この例では、spoke3.example.comデータベースをARCHIVELOGモードで実行する必要があります。ARCHIVELOGモードで実行するためのデータベースの構成の詳細は、『Oracle Database管理者ガイド』を参照してください。
hub.example.comデータベースにhub_dirディレクトリ・オブジェクトが存在することを確認して、そのオブジェクトから、以前の構成に関連するすべてのファイル(データ・ポンプ・エクスポート・ダンプ・ファイルおよびエクスポート・ログ・ファイルを含む)を削除します。
spoke3.example.comデータベースにOracle Streams管理者として接続します。SQL*Plusの起動の詳細は、『Oracle Database 2日でデータベース管理者』を参照してください。
MAINTAIN_SCHEMASプロシージャで生成されるファイル(インスタンス化に使用するデータ・ポンプ・エクスポート・ダンプ・ファイルを含む)を保持するディレクトリ・オブジェクトを作成します。ディレクトリ・オブジェクトは、コンピュータ・システム上の任意のアクセス可能ディレクトリを指すことができます。たとえば、次の文は、/usr/spoke3_log_filesディレクトリを指すspoke3_dirという名前のディレクトリ・オブジェクトを作成します。
CREATE DIRECTORY spoke3_dir AS '/usr/spoke3_log_files';
この例では、hub.example.comデータベースの取得プロセスを停止します。取得プロセスを停止しても、レプリケートされたデータベース・オブジェクトは変更に対してオープンなままにしておくことができます。これらの変更は、取得プロセスが再開されたときに取得されます。
DBMS_STREAMS_ADMパッケージ内の適切な構成プロシージャを実行し、新しいスポーク・データベースを追加します。この例では、次の手順を完了します。
hub.example.comデータベースにOracle Streams管理者として接続します。
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_name、capture_queue_tableおよびcapture_queue_nameで指定するパラメータ値は、DBMS_STREAMS_ADMパッケージ内にある、レプリケーション環境を構成した構成プロシージャで指定された値と同じである必要があります。この例では、これらのパラメータ値は「チュートリアル: ローカル取得プロセスでのハブアンドスポーク・レプリケーションの構成」で指定した値と一致します。
構成プロシージャを実行すると、進捗情報がDBA_RECOVERABLE_SCRIPT、DBA_RECOVERABLE_SCRIPT_PARAMS、DBA_RECOVERABLE_SCRIPT_BLOCKSおよびDBA_RECOVERABLE_SCRIPT_ERRORSデータ・ディクショナリ・ビューに記録されます。プロシージャがエラーによって停止した場合は、DBMS_STREAMS_ADMパッケージ内のRECOVER_OPERATIONプロシージャの使用方法について、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。
spoke3.example.comデータベースでhrスキーマ内のすべての表に対して最新時刻競合解消を構成します。このスキーマには、countries、departments、employees、jobs、job_history、locationsおよびregionsの各表が含まれます。方法については、「チュートリアル: 表の最新時刻競合解消の構成」を参照してください。
|
![]() Copyright © 2007, 2008 Oracle Corporation. All Rights Reserved. |
|