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. |
|