この章では、データベース・オブジェクトまたはデータベースを追加することによるOracle Streamsレプリケーション環境の拡張について説明します。
この章は次の項で構成されています。
関連項目:
|
組織でのニーズが変化すると、Oracle Streamsレプリケーション環境の拡張が必要な場合があります。Oracle Streamsレプリケーション環境は、データベース・オブジェクトまたはデータベースを追加することによって拡張することができます。
Oracle Streamsレプリケーション環境の拡張には2つの方法があります。
「Streamsレプリケーションの設定」ウィザードまたは単一の構成プロシージャを使用
環境が特定の条件を満たす場合は、次のいずれかの方法によりOracle Streamsレプリケーション環境を拡張できます。
Oracle Enterprise Managerで「Streamsレプリケーションの設定」ウィザードを実行
DBMS_STREAMS_ADM
パッケージにある次のいずれかのプロシージャを実行:
MAINTAIN_GLOBAL
プロシージャでは、データベースのオブジェクトすべてに変更をレプリケートする環境にデータベースを追加できます。
MAINTAIN_SCHEMAS
プロシージャでは、レプリケーション環境の既存データベースに1つ以上の新規スキーマを追加、または現在レプリケートされているスキーマをレプリケートする新規データベースを追加できます。
MAINTAIN_SIMPLE_TTS
プロシージャでは、既存のレプリケーション環境に新規の単純表領域を追加、または現在レプリケートされている単純表領域をレプリケートする新規データベースを追加できます。
MAINTAIN_TABLES
プロシージャでは、レプリケーション環境の既存データベースに1つ以上の新規表を追加するか、現在レプリケートされている表をレプリケートする新規データベースを追加できます。
MAINTAIN_TTS
プロシージャでは、既存のレプリケーション環境に新規の表領域セットを追加、または現在レプリケートされている表領域セットをレプリケートする新規データベースを追加できます。
ウィザードまたはいずれかのプロシージャを使用してOracle Streamsレプリケーション環境を拡張するには、環境が次の条件を満たしている必要があります。
Streamsレプリケーションの設定ウィザードまたはDBMS_STREAMS_ADM
パッケージのいずれかの構成プロシージャで構成された、2データベース・レプリケーション環境またはハブアンドスポーク・レプリケーション環境である必要があります。これらのレプリケーション環境については、「Oracle Streamsレプリケーション環境の一般的なタイプの概要」を参照してください。
Oracle Streamsレプリケーション環境のデータベースでは同期取得を使用できません。同期取得の詳細は、「同期取得での変更の取得の概要」を参照してください。
データベースを環境に追加する場合、変更を取得する各データベースはローカル取得プロセスを使用する必要があります。どのデータベースでもダウンストリーム取得プロセスは使用できません。1つ以上のデータベース・オブジェクトを環境に追加する場合、そのデータベースはローカルかダウンストリームのいずれかの取得プロセスを使用できます。ダウンストリーム取得の詳細は、「取得プロセスでの変更の取得の概要」を参照してください。
レプリケーション環境にデータベース・オブジェクトを追加する場合、そのデータベース・オブジェクトは、ウィザードを実行する場所、または構成プロシージャのsource_database
パラメータで指定されたデータベースに存在する必要があります。
レプリケーション環境がこれらの条件を満たす場合は、「Streamsレプリケーションの設定」ウィザードまたは単一のプロシージャを使用して環境を拡張します。
次は、ウィザードまたはプロシージャを実行する前に、レプリケートされたデータベース・オブジェクトが目的の宛先データベースに存在する場合の追加要求です。
レプリケーション環境にデータベース・オブジェクトを追加する場合で、1つ以上のデータベース・オブジェクトがソース・データベース以外のデータベースに存在する場合、次の要件を満たす必要があります。
ウィザードまたはプロシージャを実行する前に、各宛先データベースのレプリケートされたデータベース・オブジェクトが、ソース・データベースのレプリケートされたデータベース・オブジェクトと一致することを確認します。
ウィザードまたはプロシージャを実行した後、各宛先データベースのレプリケートされたデータベース・オブジェクトそれぞれにインスタンス化SCNが設定されていることを確認します。インスタンス化SCNの監視および設定の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。
レプリケーション環境にデータベースを追加する場合で、追加されるデータベースに現在の環境でレプリケーションされたデータベース・オブジェクトが存在する場合、次の要件を満たす必要があります。
ウィザードまたはプロシージャを実行する前に、追加される各データベースのレプリケートされたデータベース・オブジェクトが、ソース・データベースのレプリケートされたデータベース・オブジェクトと一致することを確認します。
ウィザードまたはプロシージャを実行した後、追加されたデータベースのレプリケートされたデータベース・オブジェクトそれぞれにインスタンス化SCNが設定されていることを確認します。インスタンス化SCNの監視および設定の詳細は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。
ウィザードを使用してレプリケーション環境に追加する方法については、次の各項を参照してください。
単一のプロシージャを使用してレプリケーション環境に追加する方法については、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。
複数の手順でOracle Streamsコンポーネントを個別に追加
「Streamsレプリケーションの設定」ウィザード、またはDBMS_STREAMS_ADM
パッケージの構成プロシージャを使用してOracle Streamsレプリケーション環境を拡張できない場合は、構成手順を手動で完了する必要があります。この手順には、必要なルールとOracle Streamsコンポーネントを環境に追加するなど、いくつかの構成手順が含まれます。
Oracle Streamsレプリケーション環境を手動で拡張する必要がある場合は、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。
関連項目:
|
この項では、Oracle Enterprise Managerの「Streamsレプリケーションの設定」ウィザードを使用して、既存のハブアンドスポーク・レプリケーション環境に表を追加する例を説明します。この例を完了すると、Oracle Streamsレプリケーション環境によって、その環境のデータベースに追加された表に対する変更がレプリケートされます。
具体的には、この項の例では、「チュートリアル: ローカル取得プロセスでのハブアンドスポーク・レプリケーションの構成」で構成したレプリケーション環境を拡張します。この構成には、次のような特徴があります。
hr
スキーマが、hub.example.com
、spoke1.example.com
、spoke2.example.com
の各データベースでレプリケートされます。
hub.example.com
データベースが、ハブアンドスポーク環境におけるハブ・データベースであり、他のデータベースがスポーク・データベースです。
スポーク・データベースでは、レプリケートされたスキーマへの変更が可能で、各データベースはそのローカル取得プロセスでこれらの変更を取得します。
競合を解消するために、各データベースでレプリケートされた各表に、更新競合ハンドラが構成されます。
この例では、環境に次の表を追加します。
oe.orders
oe.order_items
この例ではoe
サンプル・スキーマにある表を使用します。 oe
サンプル・スキーマはOracle Databaseとともにデフォルトでインストールされます。
注意: 「Streamsレプリケーションの設定」ウィザードを使用してOracle Streamsレプリケーション環境を拡張する前に、「Oracle Streamsレプリケーション環境の拡張の概要」で説明されている条件を環境が満たしていることを確認してください。 |
Oracle Streamsレプリケーション環境にデータベース・オブジェクトを追加するには:
ハブアンドスポーク環境で、ハブ・データベースの取得プロセスを停止します。
この例では、hub.example.com
データベースの取得プロセスを停止します。取得プロセスを停止しても、レプリケートされたデータベース・オブジェクトは変更に対してオープンなままにしておくことができます。これらの変更は、取得プロセスが再開されたときに取得されます。
Oracle Enterprise Managerで、Oracle Streams管理者としてハブ・データベースにログインします。
「データベース」ホームページに移動します。
「高可用性」の下にある「Streamsコンポーネント」の番号リンクをクリックします。
「レプリケーションの管理」ページが表示され、「概要」サブページが表示されます。
「Streams」をクリックして「Streams」サブページを開きます。
停止する取得プロセスを選択します。必要に応じて、検索ツールを使用して取得プロセスを検索してから選択します。
「アクション」で「無効化」を選択します。
「実行」をクリックします。
確認ページで「はい」をクリックして、取得プロセスを定位します。
注意: DBMS_CAPTURE_ADM.STOP_CAPTURE プロシージャを使用して、取得プロセスを停止することもできます。 |
Oracle Streams管理者としてOracle Enterprise Managerのハブ・データベースに接続している状態で、データベース・インスタンスの「データベース」ホームページに移動します。
「データ移動」をクリックして「データ移動」サブページを開きます。
「Streams」セクションの「設定」をクリックします。
「Streams」ページが表示され、「設定」オプションが表示されます。
「Streamsレプリケーションの設定」で、「表のレプリケート」を選択します。
「ホスト資格証明」セクションで、ホスト・コンピュータ・システムの管理ユーザーのユーザー名とパスワードを入力します。
「続行」をクリックします。
「オブジェクト選択」ページで、「追加」をクリックして「表の選択」ページを開きます。
検索ツールを使用して、oe.orders
およびoe.order_items
表を表示し、これらの表を選択します。
たとえば、「スキーマ」フィールドにoe
と入力して「実行」をクリックすると、これらの表が表示されます。
「選択」をクリックします。「オブジェクト選択」ページにoe.orders
およびoe.order_items
表が表示されます。
「次へ」をクリックします。
「宛先オプション」ページで、ホスト名、ポート、SIDまたはサービス名およびOracle Streams管理者資格証明を指定して、スポーク・データベースspoke1.example.com
を指定します。
(レプリケーションをspoke2.example.com
データベースで構成する場合は、spoke2.example.com
を指定します。)
「次へ」をクリックします。
「レプリケーション・オプション」ページを完了します。
「ディレクトリ・パス」セクションで、手順6で指定したホスト・ユーザーがディレクトリに対して読取りおよび書込みを行うことができ、データ・ポンプ・エクスポート・ダンプ・ファイルに対する十分な領域がある場合、ソース・データベースと宛先データベースのディレクトリ・パスをそのままにしておきます。変更する場合は、別のディレクトリ・パスを指定するか、またはこれらの要件を満たすディレクトリ・オブジェクトを作成して指定します。
「拡張オプション」を拡張します。
「オプション」セクションで「データ操作言語(DML)の変更を取得、伝播および適用」が選択されていることを確認します。
DDL変更をレプリケートしない場合は、「データ定義言語(DDL)の変更を取得、伝播および適用」を選択解除します。
「双方向レプリケーションの設定」を選択します。
「取得プロセス」セクションで、「取得名」にcapture_hns
と入力します。
「伝播プロセス」セクションで、「伝播名」にpropagation_spoke1
と入力します。(レプリケーションをspoke2.example.com
データベースで構成する場合は、propagation_spoke2
と入力します。)
「適用プロセス」セクションで、「適用名」にapply_spoke1
と入力します。(レプリケーションをspoke2.example.com
データベースで構成する場合は、apply_spoke2
と入力します。)
「次へ」をクリックします。
「ジョブのスケジュール」ページで、「即時」を選択するか、後でジョブを実行する時刻を指定します。
「次へ」をクリックします。
「確認」ページで、構成情報を確認して、「発行」をクリックします。
確認ページで、オプションとして、ジョブ・リンクをクリックしてジョブを監視します。
ジョブを実行すると、進捗情報がDBA_RECOVERABLE_SCRIPT
、DBA_RECOVERABLE_SCRIPT_PARAMS
、DBA_RECOVERABLE_SCRIPT_BLOCKS
およびDBA_RECOVERABLE_SCRIPT_ERRORS
データ・ディクショナリ・ビューに記録されます。ジョブがエラーによって停止した場合は、DBMS_STREAMS_ADM
パッケージ内のRECOVER_OPERATION
プロシージャの使用方法について、『Oracle Streamsレプリケーション管理者ガイド』を参照してエラーからリカバリしてください。
Oracle Streams管理者としてハブ・データベースに接続している状態で、手順1から19をもう一度完了します。ただし、手順12では、「宛先オプション」ページで、ホスト名、ポート、SIDまたはサービス名およびOracle Streams管理者資格証明を指定して、スポーク・データベースspoke2.example.com
を識別します。
また、手順14gでは「伝播名」にpropagation_spoke2
を入力し、手順14hでは「適用名」にapply_spoke2
を入力します。
スポーク・データベースで、レプリケートされた表のインスタンス化SCNを設定します。
注意: この例でこの手順が必要なのは、ウィザードの実行前に、レプリケートされた表がスポーク・データベースに存在していたためです。ウィザードの実行前に、レプリケートされた表がスポーク・データベースに存在していなかった場合は、ウィザードによって、レプリケートされた表にインスタンス化SCNが設定されるため、この手順は必要ありません。インスタンス化SCNが設定されたときに共有表がソース・データベースと宛先データベースで一貫していること、およびSCNがインスタンス化SCNに使用されるまでソース・データベースの表が変更されないことを確認します。 |
SQL*Plusで、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
表に対して最新時刻競合解消を構成します。方法については、「チュートリアル: 表の最新時刻競合解消の構成」を参照してください。
この項では、Oracle Enterprise Managerの「Streamsレプリケーションの設定」ウィザードを使用して、既存のハブアンドスポーク・レプリケーション環境に新しいスポーク・データベースを追加する例を説明します。この例を完了すると、Oracle Streamsレプリケーション環境によって、新しいデータベースのスキーマに対する変更がレプリケートされます。
具体的には、この項の例では、「チュートリアル: ローカル取得プロセスでのハブアンドスポーク・レプリケーションの構成」で構成したレプリケーション環境を拡張します。この構成には、次のような特徴があります。
hr
スキーマが、hub.example.com
、spoke1.example.com
、spoke2.example.com
の各データベースでレプリケートされます。
hub.example.com
データベースが、ハブアンドスポーク環境におけるハブ・データベースであり、他のデータベースがスポーク・データベースです。
スポーク・データベースでは、レプリケートされたスキーマへの変更が可能で、各データベースはそのローカル取得プロセスでこれらの変更を取得します。
この例では、レプリケーション環境にspoke3.example.com
データベースを追加します。
注意: 「Streamsレプリケーションの設定」ウィザードを使用してOracle Streamsレプリケーション環境を拡張する前に、「Oracle Streamsレプリケーション環境の拡張の概要」で説明されている条件を環境が満たしていることを確認してください。 |
既存のOracle Streamsレプリケーション環境にデータベースを追加するには:
次のタスクを完了して、新しいデータベースの環境を準備します。
ハブ・データベースが新しいスポーク・データベースと通信できるようにネットワーク接続を構成します。この例では、hub.example.com
データベースとspoke3.example.com
データベースが相互に通信できるようにネットワーク接続を構成します。
データベース間のネットワーク接続の構成の詳細は、『Oracle Database 2日でデータベース管理者』を参照してください。
新しいスポーク・データベースでOracle Streams管理者を構成します。この例では、spoke3.example.com
データベースでOracle Streams管理者を構成します。方法については、「チュートリアル: Oracle Streams管理者の構成」を参照してください。この例では、Oracle Streams管理者がstrmadmin
であると想定します。
新しいスポーク・データベースで初期化パラメータを正しく設定します。この例では、spoke3.example.com
データベースで初期化パラメータを正しく設定します。方法については、「Oracle Streamsレプリケーションの準備」を参照してください。
ARCHIVELOG
モードで実行するように新しいスポーク・データベースを構成します。取得プロセスがソース・データベースで生成された変更を取得するには、ソース・データベースをARCHIVELOG
モードで実行する必要があります。この例では、spoke3.example.com
データベースをARCHIVELOG
モードで実行する必要があります。ARCHIVELOG
モードで実行するためのデータベースの構成の詳細は、『Oracle Database管理者ガイド』を参照してください。
ハブアンドスポーク環境で、ハブ・データベースの取得プロセスを停止します。
この例では、hub.example.com
データベースの取得プロセスを停止します。取得プロセスを停止しても、レプリケートされたデータベース・オブジェクトは変更に対してオープンなままにしておくことができます。これらの変更は、取得プロセスが再開されたときに取得されます。
Oracle Enterprise Managerで、Oracle Streams管理者としてハブ・データベースにログインします。
「データベース」ホームページに移動します。
「高可用性」の下にある「Streamsコンポーネント」の番号リンクをクリックします。
「レプリケーションの管理」ページが表示され、「概要」サブページが表示されます。
「Streams」をクリックして「Streams」サブページを開きます。
停止する取得プロセスを選択します。必要に応じて、検索ツールを使用して取得プロセスを検索してから選択します。
「アクション」で「無効化」を選択します。
「実行」をクリックします。
確認ページで「はい」をクリックして、取得プロセスを定位します。
注意: DBMS_CAPTURE_ADM.STOP_CAPTURE プロシージャを使用して、取得プロセスを停止することもできます。 |
Oracle Streams管理者としてOracle Enterprise Managerのハブ・データベースに接続している状態で、データベース・インスタンスの「データベース」ホームページに移動します。
「データ移動」をクリックして「データ移動」サブページを開きます。
「Streams」セクションの「設定」をクリックします。
「Streams」ページが表示され、「設定」オプションが表示されます。
「Streamsレプリケーションの設定」で、「スキーマのレプリケート」を選択します。
「ホスト資格証明」セクションで、ホスト・コンピュータ・システムの管理ユーザーのユーザー名とパスワードを入力します。
「続行」をクリックします。
「オブジェクト選択」ページで、「HR」を選択して、「次へ」をクリックします。
「宛先オプション」ページで、ホスト名、ポート、SIDまたはサービス名およびOracle Streams管理者資格証明を指定して、スポーク・データベースspoke3.example.com
を指定します。
「次へ」をクリックします。
「レプリケーション・オプション」ページを完了します。
「ディレクトリ・パス」セクションで、手順7で指定したホスト・ユーザーがディレクトリに対して読取りおよび書込みを行うことができ、データ・ポンプ・エクスポート・ダンプ・ファイルに対する十分な領域がある場合、ソース・データベースと宛先データベースのディレクトリ・パスをそのままにしておきます。変更する場合は、別のディレクトリ・パスを指定するか、またはこれらの要件を満たすディレクトリ・オブジェクトを作成して指定します。
「拡張オプション」を拡張します。
「オプション」セクションで「データ操作言語(DML)の変更を取得、伝播および適用」が選択されていることを確認します。
DDL変更をレプリケートしない場合は、「データ定義言語(DDL)の変更を取得、伝播および適用」を選択解除します。
「双方向レプリケーションの設定」を選択します。
「取得プロセス」セクションで、「取得名」にcapture_hns
と入力します。
「伝播プロセス」セクションで、「伝播名」にpropagation_spoke3
と入力します。
「適用プロセス」セクションで、「適用名」にapply_spoke3
と入力します。
「次へ」をクリックします。
「ジョブのスケジュール」ページで、「即時」を選択するか、後でジョブを実行する時刻を指定します。
「次へ」をクリックします。
「確認」ページで、構成情報を確認して、「発行」をクリックします。
確認ページで、オプションとして、ジョブ・リンクをクリックしてジョブを監視します。
ジョブを実行すると、進捗情報が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
の各表が含まれます。方法については、「チュートリアル: 表の最新時刻競合解消の構成」を参照してください。