この章では、既存のOracle Streamsレプリケーション環境にデータベース・オブジェクトおよびデータベースを追加する方法について説明します。
この章の内容は次のとおりです。
注意:
|
参照:
|
既存の単一ソース環境に既存のデータベース・オブジェクトを追加するには、適切な取得プロセス、同期取得、伝播および適用プロセスに必要なルールを追加します。稼働中のOracle Streams環境で取得ルールまたは伝播ルールを作成または変更する前に、新規のルールまたは変更後のルールの結果としてLCRを受信する伝播や適用プロセスが、これらのLCRを処理するように構成されていることを確認してください。つまり、伝播または適用プロセスが存在し、それぞれがLCRを適切に処理するルール・セットに関連付けられている必要があります。これらの伝播と適用プロセスがこれらのLCRを処理するように適切に構成されていないと、LCRが失われる可能性があります。
たとえば、すでに変更が取得、伝播されて他の表に適用されているOracle Streams環境に、表を追加する必要がある場合を考えます。この表に対する変更を取得する取得プロセスまたは同期取得は1つのみで、この表に変更を適用する適用プロセスも1つのみであるとします。この場合は、次のルール・セットに表の1つ以上のルールを追加する必要があります。
表に変更を適用する適用プロセスのポジティブ・ルール・セット
表に対する変更を伝播する各伝播のポジティブ・ルール・セット
表に対する変更を取得する取得プロセスまたは同期取得のポジティブ・ルール・セット
管理手順を正しい順序で実行しないと、LCRが失われる可能性があります。たとえば、取得プロセスを停止せず、先に取得プロセスのルール・セットにルールを追加した場合、変更を伝播するように指示するルールがなければ伝播は変更を伝播せず、変更が失われる可能性があります。
この例では、共有データベース・オブジェクトが接続先データベースで読取り専用であることを想定しています。共有オブジェクトが接続先データベースで読取り/書込み可能である場合、接続先データベースの共有オブジェクトに対して行われた変更をレプリケートするようにOracle Streamsが構成されないため、レプリケーション環境では同期状態が保たれません。
図8-1に、共有データベース・オブジェクトを単一ソースOracle Streams環境に追加するために実行する必要がある追加の構成手順を示します。
LCRの消失を回避するために、構成手順を次の順序で完了する必要があります。
共有オブジェクトを追加する各ソース・データベースで、追加する共有オブジェクトのサプリメンタル・ロギングを指定します。手順については、「Oracle Streamsレプリケーション環境内のサプリメンタル・ロギングの管理」を参照してください。
取得プロセス、1つの伝播または適用プロセスを停止します。
取得プロセスを停止するには、DBMS_CAPTURE_ADM
パッケージのSTOP_CAPTURE
プロシージャを使用します。
伝播を停止するには、DBMS_PROPAGATION_ADM
パッケージのSTOP_PROPAGATION
プロシージャを使用します。
適用プロセスを停止するには、DBMS_APPLY_ADM
パッケージのSTOP_APPLY
プロシージャを使用します。
通常は、操作中にメッセージがキューに蓄積されないように、取得プロセスを停止することをお薦めします。
注意: 同期取得は停止できません。 |
参照: これらのタスクを実行する方法の詳細は、『Oracle Streams概要および管理』を参照してください。 |
適用プロセスのルール・セットに、関連ルールを追加します。適用プロセスのルール・セットにルールを追加するには、次のいずれかの手順を実行します。
DBMS_STREAMS_ADM.ADD_TABLE_RULES
DBMS_STREAMS_ADM.ADD_SUBSET_RULES
DBMS_STREAMS_ADM.ADD_SCHEMA_RULES
DBMS_STREAMS_ADM.ADD_GLOBAL_RULES
ADD_SUBSET_RULES
プロシージャ以外のこれらのプロシージャでは、適用プロセスのポジティブ・ルール・セットまたはネガティブ・ルール・セットにルールを追加できます。ADD_SUBSET_RULES
プロシージャでは、適用プロセスのポジティブ・ルール・セットにのみルールを追加できます。
伝播のルール・セットに、関連ルールを追加します。伝播のルール・セットにルールを追加するには、次のいずれかのプロシージャを実行します。
DBMS_STREAMS_ADM.ADD_TABLE_PROPAGATION_RULES
DBMS_STREAMS_ADM.ADD_SUBSET_PROPAGATION_RULES
DBMS_STREAMS_ADM.ADD_SCHEMA_PROPAGATION_RULES
DBMS_STREAMS_ADM.ADD_GLOBAL_PROPAGATION_RULES
ADD_SUBSET_PROPAGATION_RULES
プロシージャ以外のこれらのプロシージャでは、伝播のポジティブ・ルール・セットまたはネガティブ・ルール・セットにルールを追加できます。ADD_SUBSET_PROPAGATION_RULES
プロシージャでは、伝播のポジティブ・ルール・セットにのみルールを追加できます。
取得プロセスまたは同期取得で使用するルール・セットに関連ルールを追加します。既存の取得プロセスのルール・セットにルールを追加するには、次のいずれかのプロシージャを使用して既存の取得プロセスを指定できます。
DBMS_STREAMS_ADM.ADD_TABLE_RULES
DBMS_STREAMS_ADM.ADD_SUBSET_RULES
DBMS_STREAMS_ADM.ADD_SCHEMA_RULES
DBMS_STREAMS_ADM.ADD_GLOBAL_RULES
ADD_SUBSET_RULES
プロシージャ以外のこれらのプロシージャでは、取得プロセスのポジティブ・ルール・セットまたはネガティブ・ルール・セットにルールを追加できます。ADD_SUBSET_RULES
プロシージャでは、取得プロセスのポジティブ・ルール・セットにのみルールを追加できます。
既存の同期取得のルール・セットにルールを追加するには、次のいずれかのプロシージャを使用して既存の同期取得を指定できます。
DBMS_STREAMS_ADM.ADD_TABLE_RULES
DBMS_STREAMS_ADM.ADD_SUBSET_RULES
DBMS_STREAMS_ADM
パッケージのプロシージャを使用して取得プロセスのルールを追加すると、その取得プロセスがソース・データベースへのデータベース・リンクを持つローカル取得プロセスまたはダウンストリーム取得プロセスである場合は、指定した表、指定したスキーマまたはデータベース全体に対して、それぞれDBMS_CAPTURE_ADM
パッケージのPREPARE_TABLE_INSTANTIATION
、PREPARE_SCHEMA_INSTANTIATION
またはPREPARE_GLOBAL_INSTANTIATION
プロシージャが自動的に実行されます。
次のいずれかの条件に該当する場合は、適切なプロシージャを実行してインスタンス化の準備を手動で行う必要があります。
DBMS_RULE_ADM
を使用して、取得プロセスのルール・セット内でルールを作成または変更する場合。
取得プロセスは追加されるオブジェクトに対する変更をすでに取得しているため、取得プロセスのルール・セットにはこれらのオブジェクトのルールを追加しない場合。この場合、オブジェクトのルールを環境内の伝播と適用プロセスには追加できますが、取得プロセスには追加できません。
ソース・データベースへのデータベース・リンクを持たないダウンストリーム取得プロセスを使用する場合。
インスタンス化の準備を手動で行う必要がある場合の手順については、「ソース・データベースでインスタンス化を行うためのデータベース・オブジェクトの準備」を参照してください。
DBMS_STREAMS_ADM
パッケージのプロシージャを使用して同期取得のルールを追加すると、指定した表に対してDBMS_CAPTURE_ADM
パッケージのPREPARE_SYNC_INSTANTIATION
ファンクションが自動的に実行されます。
各接続先データベースで、Oracle Streams環境に追加する各データベース・オブジェクトをインスタンス化するか、そのインスタンス化SCNを設定します。接続先データベースにデータベース・オブジェクトが存在しない場合は、エクスポート/インポート、トランスポータブル表領域またはRecovery Managerを使用してインスタンス化します。接続先データベースにデータベース・オブジェクトが存在する場合は、そのインスタンス化SCNを手動で設定します。
エクスポート/インポートを使用してデータベース・オブジェクトをインスタンス化するには、まずソース・データベースでそれらのデータベース・オブジェクトをエクスポートします。次に、接続先データベースでそれらのオブジェクトをインポートします。詳細は、「エクスポート/インポートを使用したインスタンス化SCNの設定」を参照してください。エクスポート/インポート、トランスポータブル表領域またはRecovery Managerを使用してオブジェクトをインスタンス化する方法の詳細は、「Oracle Streamsレプリケーション環境でのオブジェクトのインスタンス化」を参照してください。
ソース・データベースでのデータベース・オブジェクトのエクスポート中、それらのデータベース・オブジェクトに対する変更は許可しないでください。接続先データベースでのデータベース・オブジェクトのインポート中、それらのデータベース・オブジェクトに対する変更は許可しないでください。
FLASHBACK_SCN
やFLASHBACK_TIME
などのエクスポート・パラメータを使用して、より厳密な一貫性レベルを指定できます。
表、スキーマまたはデータベースのインスタンス化SCNを手動で設定するには、接続先データベースでDBMS_APPLY_ADM
パッケージの適切なプロシージャを1つ以上実行します。
SET_TABLE_INSTANTIATION_SCN
SET_SCHEMA_INSTANTIATION_SCN
SET_GLOBAL_INSTANTIATION_SCN
これらのプロシージャのいずれかを接続先データベースで実行する場合は、接続先データベースに追加された各オブジェクトに、インスタンス化SCNの時点でソース・データベースとの一貫性があることを確認する必要があります。
接続先データベースでSET_GLOBAL_INSTANTIATION_SCN
を実行する場合、接続先データベースの各スキーマおよびそれらのスキーマが所有する表にもインスタンス化SCNが設定されるように、このプロシージャのrecursive
パラメータをTRUE
に設定します。
接続先データベースでSET_SCHEMA_INSTANTIATION_SCN
を実行する場合、スキーマ内の各表にもインスタンス化SCNが設定されるように、このプロシージャのrecursive
パラメータをTRUE
に設定します。
SET_GLOBAL_INSTANTIATION_SCN
プロシージャまたはSET_SCHEMA_INSTANTIATION_SCN
プロシージャでrecursive
パラメータをTRUE
に設定する場合は、接続先データベースからソース・データベースへのデータベース・リンクが必要です。このデータベース・リンクはソース・データベースのグローバル名と同じ名前であり、プロシージャを実行するユーザーからアクセス可能である必要があります。手順については、「DBMS_APPLY_ADMパッケージを使用したインスタンス化SCNの設定」を参照してください。
または、メタデータのエクスポート/インポートを実行して、既存のデータベース・オブジェクトについてインスタンス化SCNを設定できます。このオプションを選択した場合は、行がインポートされないことを確認してください。また、インポートする接続先データベースに追加された各オブジェクトに、エクスポートを実行したソース・データベースとのエクスポート時点での一貫性があることを確認してください。DML変更のみを共有する場合は、表レベルのエクスポート/インポートで十分です。DDL変更も共有する場合は、追加の考慮事項があります。メタデータのエクスポート/インポートを実行する方法の詳細は、「エクスポート/インポートを使用したインスタンス化SCNの設定」を参照してください。
手順2で停止したOracle Streamsクライアントを起動します。
取得プロセスを起動するには、DBMS_CAPTURE_ADM
パッケージのSTART_CAPTURE
プロシージャを使用します。
伝播を起動するには、DBMS_PROPAGATION_ADM
パッケージのSTART_PROPAGATION
プロシージャを使用します。
適用プロセスを起動するには、DBMS_APPLY_ADM
パッケージのSTART_APPLY
プロシージャを使用します。
参照: これらのタスクを実行する方法の詳細は、『Oracle Streams概要および管理』を参照してください。 |
追加したルールによって生じる最初のLCRが適用プロセスに到達する前に、表またはスキーマがインスタンス化されるように、手順2で取得プロセスを停止するか、伝播ジョブの1つを無効化するか、適用プロセスを停止する必要があります。この操作を実行しないと、適用プロセスのルールを追加したかどうかに応じてLCRが失われたり、適用エラーが発生する可能性があります。
追加した表がこの手順の実行中にソース・データベースで変更されないことと、表のLCRがストリーム内にないことまたは取得を待機していないことが確実な場合は、手順6の前に手順7を実行して、Oracle Streamsプロセスや伝播ジョブの停止期間を短縮できます。
既存の単一ソース環境に接続先データベースを追加するには、新規の接続先データベースで1つ以上の新規適用プロセスを作成し、必要な場合は、そのデータベースに変更を伝播する1つ以上の伝播を構成します。また、新規接続先データベースに伝播するストリーム内の既存の伝播に、ルールの追加が必要になる場合があります。
「既存の単一ソース環境への共有オブジェクトの追加」で説明した例と同様に、稼働中のOracle Streams環境で伝播ルールを作成または変更する前に、新規のルールまたは変更後のルールの結果としてLCRを受信する伝播や適用プロセスが、これらのLCRを処理するように構成されていることを確認してください。このように構成されていないと、LCRが失われる可能性があります。
この例では、共有データベース・オブジェクトが接続先データベースで読取り専用であることを想定しています。共有オブジェクトが接続先データベースで読取り/書込み可能である場合、接続先データベースの共有オブジェクトに対して行われた変更をレプリケートするようにOracle Streamsが構成されないため、レプリケーション環境では同期状態が保たれません。
図8-2に、接続先データベースを単一ソースOracle Streams環境に追加するために実行する必要がある追加の構成手順を示します。
LCRの消失を回避するために、構成手順を次の順序で完了する必要があります。
次に示す必要なタスクを完了し、Oracle Streams用の環境内で各データベースを準備します。
Oracle Streams管理者の構成
Oracle Streamsに関連する初期化パラメータの設定
ネットワーク接続性とデータベース・リンクの構成
これらのタスクの一部は、一部のデータベースでは不要な場合があります。
参照: Oracle Streams用のデータベースを準備する方法の詳細は、『Oracle Streams概要および管理』を参照してください。 |
必要なANYDATA
キューを作成します(接続先データベースに存在しない場合)。適用プロセスを作成するときに、その適用プロセスを特定のANYDATA
キューに関連付けます。手順については、「LCRをステージングするANYDATAキューの作成」を参照してください。
新規の接続先データベースで、ソース・データベースからの変更を適用できるように1つ以上の適用プロセスを作成します。各適用プロセスで、変更の適用に適切なルール・セットが使用されることを確認します。新規データベースでは適用プロセスを起動しないでください。手順については、「取得LCRを適用する適用プロセスの作成」を参照してください。
適用プロセスを停止したままにすると、ソース・データベースで行われた変更は新規データベースのインスタンス化が完了するまで適用されません。それ以外の場合は、データが不正になったりエラーが発生します。
必要な伝播を、ソース・データベースからの変更を新規の接続先データベースに伝播するように構成します。各伝播で変更の伝播に適切なルール・セットが使用されることを確認します。「LCRを伝播させる伝播の作成」を参照してください。
ソース・データベースで、新規の接続先データベースの適用プロセスによって変更が適用される各データベース・オブジェクトについて、インスタンス化の準備を行います。
1つ以上の取得プロセスを使用している場合は、指定した表、指定したスキーマまたはデータベース全体に対して、それぞれDBMS_CAPTURE_ADM
パッケージのPREPARE_TABLE_INSTANTIATION
、PREPARE_SCHEMA_INSTANTIATION
またはPREPARE_GLOBAL_INSTANTIATION
プロシージャを実行します。
1つ以上の同期取得を使用している場合は、指定した表に対してDBMS_CAPTURE_ADM
パッケージのPREPARE_SYNC_INSTANTIATION
ファンクションを実行します。
手順については、「ソース・データベースでインスタンス化を行うためのデータベース・オブジェクトの準備」を参照してください。
新規の接続先データベースで、適用プロセスによって変更が適用される各データベース・オブジェクトをインスタンス化するか、そのインスタンス化SCNを設定します。新規の接続先データベースにデータベース・オブジェクトが存在しない場合は、エクスポート/インポート、トランスポータブル表領域またはRecovery Managerを使用してインスタンス化します。新規の接続先データベースにデータベース・オブジェクトが存在する場合は、そのインスタンス化SCNを設定します。
エクスポート/インポートを使用してデータベース・オブジェクトをインスタンス化するには、まずソース・データベースでそれらのデータベース・オブジェクトをエクスポートします。次に、接続先データベースでそれらのオブジェクトをインポートします。詳細は、「エクスポート/インポートを使用したインスタンス化SCNの設定」を参照してください。エクスポート/インポート、トランスポータブル表領域またはRecovery Managerを使用してオブジェクトをインスタンス化する方法の詳細は、「Oracle Streamsレプリケーション環境でのオブジェクトのインスタンス化」を参照してください。
ソース・データベースでのデータベース・オブジェクトのエクスポート中、それらのデータベース・オブジェクトに対する変更は許可しないでください。接続先データベースでのデータベース・オブジェクトのインポート中、それらのデータベース・オブジェクトに対する変更は許可しないでください。
FLASHBACK_SCN
やFLASHBACK_TIME
などのエクスポート・パラメータを使用して、より厳密な一貫性レベルを指定できます。
表、スキーマまたはデータベースのインスタンス化SCNを手動で設定するには、新規の接続先データベースでDBMS_APPLY_ADM
パッケージの適切なプロシージャを1つ以上実行します。
SET_TABLE_INSTANTIATION_SCN
SET_SCHEMA_INSTANTIATION_SCN
SET_GLOBAL_INSTANTIATION_SCN
これらのプロシージャのいずれかを実行する場合は、新規の接続先データベースの共有オブジェクトに、インスタンス化SCNの時点でソース・データベースとの一貫性があることを確認する必要があります。
接続先データベースでSET_GLOBAL_INSTANTIATION_SCN
を実行する場合、接続先データベースの各スキーマおよびそれらのスキーマが所有する表にもインスタンス化SCNが設定されるように、このプロシージャのrecursive
パラメータをTRUE
に設定します。
接続先データベースでSET_SCHEMA_INSTANTIATION_SCN
を実行する場合、スキーマ内の各表にもインスタンス化SCNが設定されるように、このプロシージャのrecursive
パラメータをTRUE
に設定します。
SET_GLOBAL_INSTANTIATION_SCN
プロシージャまたはSET_SCHEMA_INSTANTIATION_SCN
プロシージャでrecursive
パラメータをTRUE
に設定する場合は、接続先データベースからソース・データベースへのデータベース・リンクが必要です。このデータベース・リンクはソース・データベースのグローバル名と同じ名前であり、プロシージャを実行するユーザーからアクセス可能である必要があります。手順については、「DBMS_APPLY_ADMパッケージを使用したインスタンス化SCNの設定」を参照してください。
または、メタデータのエクスポート/インポートを実行して、既存のデータベース・オブジェクトについてインスタンス化SCNを設定できます。このオプションを選択した場合は、行がインポートされないことを確認してください。また、インポートする接続先データベースの共有オブジェクトに、エクスポートを実行したソース・データベースとのエクスポート時点での一貫性があることを確認してください。DML変更のみを共有する場合は、表レベルのエクスポート/インポートで十分です。DDL変更も共有する場合は、追加の考慮事項があります。メタデータのエクスポート/インポートを実行する方法の詳細は、「エクスポート/インポートを使用したインスタンス化SCNの設定」を参照してください。
DBMS_APPLY_ADM
パッケージのSTART_APPLY
プロシージャを使用して、手順3で作成した適用プロセスを起動します。
既存の複数ソース環境に既存のデータベース・オブジェクトを追加するには、適切な取得プロセス、同期取得、伝播および適用プロセスに必要なルールを追加します。
この例では、次の用語を使用しています。
実装済データベース: 複数ソース環境に追加する共有データベース・オブジェクトがすでに含まれているデータベース。環境にオブジェクトを追加するには、少なくとも1つは実装済データベースが必要です。
エクスポート・データベース: 環境に追加するデータベース・オブジェクトのエクスポートを実行する実装済データベース。このエクスポートを使用して、インポート・データベースで追加したデータベース・オブジェクトがインスタンス化されます。すべてのデータベースが実装済データベースである環境では、エクスポート・データベースが存在しないことがあります。
インポート・データベース: 複数ソース環境に追加する前には、共有データベース・オブジェクトが含まれていないデータベース。共有データベース・オブジェクトのインポートを実行して、そのデータベース・オブジェクトをインポート・データベースでインスタンス化します。すべてのデータベースが実装済データベースである環境では、インポート・データベースが存在しないことがあります。
稼働中のOracle Streams環境で取得ルールまたは伝播ルールを作成または変更する前に、新規のルールまたは変更後のルールの結果としてLCRを受信する伝播や適用プロセスが、これらのLCRを処理するように構成されていることを確認してください。つまり、伝播または適用プロセスが存在し、それぞれがLCRを適切に処理するルール・セットに関連付けられている必要があります。これらの伝播と適用プロセスがこれらのLCRを処理するように適切に構成されていないと、LCRが失われる可能性があります。
たとえば、すでに変更が取得、伝播されて他の表に適用されているOracle Streams環境に、新規の表を追加する必要がある場合を考えます。環境内の複数の取得プロセスまたは同期取得がこの表に対する変更を取得し、複数の適用プロセスがこの表に変更を適用するとします。この場合は、次のルール・セットに表の1つ以上のルールを追加する必要があります。
表に変更を適用する各適用プロセスのポジティブ・ルール・セット
表に対する変更を伝播する各伝播のポジティブ・ルール・セット
表に対する変更を取得する各取得プロセスまたは同期取得のポジティブ・ルール・セット
管理手順を正しい順序で実行しないと、LCRが失われる可能性があります。たとえば、取得プロセスを停止せず、先に取得プロセスのルール・セットにルールを追加した場合、変更を伝播するように指示するルールがなければ伝播は変更を伝播せず、変更が失われる可能性があります。
図8-3に、共有データベース・オブジェクトを複数ソースOracle Streams環境に追加するために実行する必要がある追加の構成手順を示します。
Oracle Streamsレプリケーション環境に複数のソース・データベースが存在する場合、変更の循環が発生する可能性があります。変更の循環は、変更が発生場所であるデータベースに再送されると発生します。通常は、変更の循環を回避する必要があります。レプリケーション環境を構成する前に、第4章「Oracle Streamsタグ」を参照して、変更の循環が回避されるようにレプリケーション環境を構成してください。
LCRの消失を回避するために、構成手順を次の順序で完了する必要があります。
各実装済データベースで、環境に追加するオブジェクトに必要なサプリメンタル・ロギングを指定します。手順については、「Oracle Streamsレプリケーション環境内のサプリメンタル・ロギングの管理」を参照してください。
追加したオブジェクトに対する変更を取得する取得プロセスをすべて停止するか、それを伝播する伝播をすべて停止するか、または追加したオブジェクトに変更を適用する適用プロセスをすべて停止します。
取得プロセスを停止するには、DBMS_CAPTURE_ADM
パッケージのSTOP_CAPTURE
プロシージャを使用します。
伝播を停止するには、DBMS_PROPAGATION_ADM
パッケージのSTOP_PROPAGATION
プロシージャを使用します。
適用プロセスを停止するには、DBMS_APPLY_ADM
パッケージのSTOP_APPLY
プロシージャを使用します。
通常は、操作中にメッセージがキューに蓄積されないように、取得プロセスを停止することをお薦めします。
注意: 同期取得は停止できません。 |
参照: これらのタスクを実行する方法の詳細は、『Oracle Streams概要および管理』を参照してください。 |
追加したオブジェクトに変更を適用する適用プロセスについて、ルール・セットに関連ルールを追加します。適用プロセスのルール・セットにルールを追加するには、次のいずれかの手順を実行します。
DBMS_STREAMS_ADM.ADD_TABLE_RULES
DBMS_STREAMS_ADM.ADD_SUBSET_RULES
DBMS_STREAMS_ADM.ADD_SCHEMA_RULES
DBMS_STREAMS_ADM.ADD_GLOBAL_RULES
ADD_SUBSET_RULES
プロシージャ以外のこれらのプロシージャでは、適用プロセスのポジティブ・ルール・セットまたはネガティブ・ルール・セットにルールを追加できます。ADD_SUBSET_RULES
プロシージャでは、適用プロセスのポジティブ・ルール・セットにのみルールを追加できます。
追加したオブジェクトに変更を伝播する伝播について、ルール・セットに関連ルールを追加します。伝播のルール・セットにルールを追加するには、次のいずれかのプロシージャを実行します。
DBMS_STREAMS_ADM.ADD_TABLE_PROPAGATION_RULES
DBMS_STREAMS_ADM.ADD_SUBSET_PROPAGATION_RULES
DBMS_STREAMS_ADM.ADD_SCHEMA_PROPAGATION_RULES
DBMS_STREAMS_ADM.ADD_GLOBAL_PROPAGATION_RULES
ADD_SUBSET_PROPAGATION_RULES
プロシージャ以外のこれらのプロシージャでは、伝播のポジティブ・ルール・セットまたはネガティブ・ルール・セットにルールを追加できます。ADD_SUBSET_PROPAGATION_RULES
プロシージャでは、伝播のポジティブ・ルール・セットにのみルールを追加できます。
追加したオブジェクトに対する変更を取得する各取得プロセスまたは同期取得で使用されるルール・セットに、関連ルールを追加します。既存の取得プロセスのルール・セットにルールを追加するには、次のいずれかのプロシージャを使用して既存の取得プロセスを指定できます。
DBMS_STREAMS_ADM.ADD_TABLE_RULES
DBMS_STREAMS_ADM.ADD_SUBSET_RULES
DBMS_STREAMS_ADM.ADD_SCHEMA_RULES
DBMS_STREAMS_ADM.ADD_GLOBAL_RULES
ADD_SUBSET_RULES
プロシージャ以外のこれらのプロシージャでは、取得プロセスのポジティブ・ルール・セットまたはネガティブ・ルール・セットにルールを追加できます。ADD_SUBSET_RULES
プロシージャでは、取得プロセスのポジティブ・ルール・セットにのみルールを追加できます。
既存の同期取得のルール・セットにルールを追加するには、次のいずれかのプロシージャを使用して既存の同期取得を指定できます。
DBMS_STREAMS_ADM.ADD_TABLE_RULES
DBMS_STREAMS_ADM.ADD_SUBSET_RULES
DBMS_STREAMS_ADM
パッケージのプロシージャを使用して取得プロセスのルールを追加すると、その取得プロセスがソース・データベースへのデータベース・リンクを持つローカル取得プロセスまたはダウンストリーム取得プロセスである場合は、指定した表、指定したスキーマまたはデータベース全体に対して、それぞれDBMS_CAPTURE_ADM
パッケージのPREPARE_TABLE_INSTANTIATION
、PREPARE_SCHEMA_INSTANTIATION
またはPREPARE_GLOBAL_INSTANTIATION
プロシージャが自動的に実行されます。
次のいずれかの条件に該当する場合は、適切なプロシージャを実行してインスタンス化の準備を手動で行う必要があります。
DBMS_RULE_ADM
を使用して、取得プロセスのルール・セット内でルールを作成または変更する場合。
取得プロセスは追加されるオブジェクトに対する変更をすでに取得しているため、取得プロセスのルール・セットにはこれらのオブジェクトのルールを追加しない場合。この場合、オブジェクトのルールを環境内の伝播と適用プロセスには追加できますが、取得プロセスには追加できません。
ソース・データベースへのデータベース・リンクを持たないダウンストリーム取得プロセスを使用する場合。
インスタンス化の準備を手動で行う必要がある場合の手順については、「ソース・データベースでインスタンス化を行うためのデータベース・オブジェクトの準備」を参照してください。
DBMS_STREAMS_ADM
パッケージのプロシージャを使用して同期取得のルールを追加すると、指定した表に対してDBMS_CAPTURE_ADM
パッケージのPREPARE_SYNC_INSTANTIATION
ファンクションが自動的に実行されます。
前述の手順を完了してから、環境に応じて次の各項の手順を完了します。各項の一方の手順のみを完了すればよい場合と、両方の手順を完了する必要がある場合があります。
各実装済データベースには、「共有オブジェクト追加時の実装済データベースの構成」の手順を実行します。この手順は、環境に複数の実装済データベースが存在する場合にのみ必要です。
各インポート・データベースには、「既存の環境におけるインポート・データベースへの共有オブジェクトの追加」の手順を実行します。
環境に複数の実装済データベースが存在する場合は、「既存の複数ソース環境への共有オブジェクトの追加」の手順を完了してから、各実装済データベースについて次の手順を実行します。
実装済データベースごとに、環境内の他の各実装済データベースで、追加した各オブジェクトにインスタンス化SCNを設定します。これらのインスタンス化SCNの設定は必須です。また、特定の実装済データベースで行われ、そのデータベースの対応するSCNより後にコミットされる変更のみが、他の実装済データベースで適用されます。
実装済データベースごとに、追加した各オブジェクトにこれらのインスタンス化SCNを次のいずれかの方法で設定できます。
実装済データベースで追加したオブジェクトのメタデータのみのエクスポートを実行し、そのメタデータを他のそれぞれの実装済データベースでインポートします。このインポートによって、データベースに必須のインスタンス化SCNが、他のデータベースで設定されます。行がインポートされないことを確認してください。また、他の各実装済データベースの共有オブジェクトに、エクスポートを実行した実装済データベースとのエクスポート時点での一貫性があることを確認してください。
DML変更のみを共有する場合は、表レベルのエクスポート/インポートで十分です。DDL変更も共有する場合は、追加の考慮事項があります。メタデータのエクスポート/インポートを実行する方法の詳細は、「エクスポート/インポートを使用したインスタンス化SCNの設定」を参照してください。
他の各実装済データベースで、追加したオブジェクトについてインスタンス化SCNを手動で設定します。各実装済データベースに追加した各オブジェクトに、そのデータベースで設定したインスタンス化SCNとの一貫性があることを確認してください。手順については、「DBMS_APPLY_ADMパッケージを使用したインスタンス化SCNの設定」を参照してください。
「既存の複数ソース環境への共有オブジェクトの追加」の手順を完了した後に、インポート・データベースについて次の手順を実行します。
エクスポート・データベースとして使用する実装済データベースを選択します。まだインスタンス化は実行しないでください。
インポート・データベースごとに、インポート・データベースの接続先データベースとなる環境内の他のすべてのデータベースで、追加したオブジェクトにインスタンス化SCNを設定します。この場合、インポート・データベースがこれらの接続先データベースのソース・データベースになります。インスタンス化SCNを設定するデータベースは、実装済データベースの場合もあれば、他のインポート・データベースの場合もあります。
インスタンス化中に、またはその後に共有DDLの変更によって、インポート・データベースで1つ以上のスキーマが作成される場合は、環境内の他のすべてのデータベースで、このインポート・データベースについてDBMS_APPLY_ADM
パッケージのSET_GLOBAL_INSTANTIATION_SCN
プロシージャを実行します。
インポート・データベースにスキーマが存在し、インスタンス化中に、またはその後に共有DDLの変更によって、そのスキーマに1つ以上の表が作成される場合は、環境内の他の各データベースで、このインポート・データベースのスキーマについてDBMS_APPLY_ADM
パッケージのSET_SCHEMA_INSTANTIATION_SCN
プロシージャを実行します。この操作は、この種のスキーマごとに行います。
手順については、「DBMS_APPLY_ADMパッケージを使用したインスタンス化SCNの設定」を参照してください。
これらのプロシージャは、インポート・データベースで表がインスタンス化される前に実行し、これらのインポート・データベースについてはローカルの取得プロセスまたは同期取得がすでに構成されているため、インスタンス化中に作成される表ごとにSET_TABLE_INSTANTIATION_SCN
プロシージャを実行する必要はありません。インポート・データベースの接続先データベースとなる環境内の他のすべてのデータベースで、その表ごとにインスタンス化SCNが自動的に設定されます。
手順1で選択したエクスポート・データベースで、共有オブジェクトのエクスポートを実行します。次に、各インポート・データベースで共有オブジェクトのインポートを実行します。エクスポート/インポートの使用方法は、「Oracle Streamsレプリケーション環境でのオブジェクトのインスタンス化」および『Oracle Databaseユーティリティ』を参照してください。
ソース・データベースでのデータベース・オブジェクトのエクスポート中、それらのデータベース・オブジェクトに対する変更は許可しないでください。接続先データベースでのデータベース・オブジェクトのインポート中、それらのデータベース・オブジェクトに対する変更は許可しないでください。
FLASHBACK_SCN
やFLASHBACK_TIME
などのエクスポート・パラメータを使用して、より厳密な一貫性レベルを指定できます。
エクスポート・データベース以外の実装済データベースごとに、実装済ソース・データベースの接続先データベースとなる各インポート・データベースで、追加したオブジェクトにインスタンス化SCNを設定します。これらのインスタンス化SCNの設定は必須です。また、実装済データベースで行われ、そのデータベースの対応するSCNより後にコミットされる変更のみが、インポート・データベースで適用されます。
実装済データベースごとに、追加したオブジェクトにこれらのインスタンス化SCNを次のいずれかの方法で設定できます。
実装済データベースで追加したオブジェクトのメタデータのみのエクスポートを実行し、そのメタデータを各インポート・データベースでインポートします。各インポートによって、実装済データベースに必須のインスタンス化SCNが、インポート・データベースで設定されます。この場合は、インポート・データベースで追加した各オブジェクトに、エクスポート時点で実装済データベースとの一貫性があることを確認してください。
DML変更のみを共有する場合は、表レベルのエクスポート/インポートで十分です。DDL変更も共有する場合は、追加の考慮事項があります。メタデータのエクスポート/インポートを実行する方法の詳細は、「エクスポート/インポートを使用したインスタンス化SCNの設定」を参照してください。
各インポート・データベースで、追加したオブジェクトについてインスタンス化SCNを手動で設定します。各インポート・データベースで追加した各オブジェクトに、対応するインスタンス化SCNの時点で実装済データベースとの一貫性があることを確認してください。手順については、「DBMS_APPLY_ADMパッケージを使用したインスタンス化SCNの設定」を参照してください。
構成を完了する前に、次のタスクを完了する必要があります。
環境に複数の実装済データベースが存在する場合は、「共有オブジェクト追加時の実装済データベースの構成」
環境にインポート・データベースが存在する場合は、「既存の環境におけるインポート・データベースへの共有オブジェクトの追加」
前述の構成手順をすべて完了してから、次の手順を行います。
競合が発生する可能性がある場合は、各データベースで、追加したデータベース・オブジェクトに対する競合解消を構成します。手順については、「Oracle Streamsの競合検出および解消の管理」を参照してください。
「既存の複数ソース環境への共有オブジェクトの追加」の手順2で停止した各Oracle Streamsクライアントを起動します。
取得プロセスを起動するには、DBMS_CAPTURE_ADM
パッケージのSTART_CAPTURE
プロシージャを使用します。
伝播を起動するには、DBMS_PROPAGATION_ADM
パッケージのSTART_PROPAGATION
プロシージャを使用します。
適用プロセスを起動するには、DBMS_APPLY_ADM
パッケージのSTART_APPLY
プロシージャを使用します。
参照: これらのタスクを実行する方法の詳細は、『Oracle Streams概要および管理』を参照してください。 |
図8-4に、ソース・データベースと接続先データベースを複数ソースOracle Streams環境に追加するために実行する必要がある追加の構成手順を示します。
Oracle Streamsレプリケーション環境に複数のソース・データベースが存在する場合、変更の循環が発生する可能性があります。変更の循環は、変更が発生場所であるデータベースに再送されると発生します。通常は、変更の循環を回避する必要があります。レプリケーション環境を構成する前に、第4章「Oracle Streamsタグ」を参照して、変更の循環が回避されるようにレプリケーション環境を構成してください。
次の手順を実行して、既存の複数ソースOracle Streams環境に新規ソース・データベースと接続先データベースを追加します。
注意: Oracle Streams環境に追加するデータベースでは、そのデータベースでのインスタンス化が完了するまでは、共有されるオブジェクトに対して変更が行われないことを確認してください。 |
次に示す必要なタスクを完了し、Oracle Streams用の環境内で各データベースを準備します。
Oracle Streams管理者の構成
Oracle Streamsに関連する初期化パラメータの設定
取得プロセスを実行するための各データベースの準備
ネットワーク接続性とデータベース・リンクの構成
これらのタスクの一部は、一部のデータベースでは不要な場合があります。
参照: Oracle Streams用のデータベースを準備する方法の詳細は、『Oracle Streams概要および管理』を参照してください。 |
必要なANYDATA
キューを作成します(存在しない場合)。取得プロセス、同期取得または適用プロセスを作成するときに、そのプロセスを特定のANYDATA
キューに関連付けます。伝播を作成するときには、その伝播を特定のソース・キューおよび宛先キューに関連付けます。手順については、「LCRをステージングするANYDATAキューの作成」を参照してください。
新規データベースで、ソース・データベースからの変更を適用できるように1つ以上の適用プロセスを作成します。各適用プロセスで、変更の適用に適切なルール・セットが使用されることを確認します。新規データベースでは適用プロセスを起動しないでください。手順については、「取得LCRを適用する適用プロセスの作成」を参照してください。
適用プロセスを停止したままにすると、ソース・データベースで行われた変更は新規データベースのインスタンス化が完了するまで適用されません。それ以外の場合は、データが不正になったりエラーが発生します。
新規データベースがソース・データベースとなる場合は、新規データベースで行われる変更の接続先データベースとなる全データベースで、新規データベースからの変更を適用する1つ以上の適用プロセスを作成します。各適用プロセスで、変更の適用に適切なルール・セットが使用されることを確認します。これらの新規適用プロセスは起動しないでください。手順については、「取得LCRを適用する適用プロセスの作成」を参照してください。
新規データベースのソース・データベースとなるデータベースで、変更を新規データベースに送信するように伝播を構成します。各伝播で変更の伝播に適切なルール・セットが使用されることを確認します。「LCRを伝播させる伝播の作成」を参照してください。
新規データベースがソース・データベースとなる場合は、そこでの変更を各接続先データベースに送信するように、新規データベースで伝播を構成します。各伝播で変更の伝播に適切なルール・セットが使用されることを確認します。「LCRを伝播させる伝播の作成」を参照してください。
新規データベースがソース・データベースとなり、そこに既存の共有オブジェクトがある場合は、その共有オブジェクトに必要なサプリメンタル・ロギングを指定します。手順については、「Oracle Streamsレプリケーション環境内のサプリメンタル・ロギングの管理」を参照してください。
新規データベースの各ソース・データベースで、新規データベースの適用プロセスによって変更が適用される各データベース・オブジェクトについて、インスタンス化の準備を行います。
1つ以上の取得プロセスを使用している場合は、指定した表、指定したスキーマまたはデータベース全体に対して、それぞれDBMS_CAPTURE_ADM
パッケージのPREPARE_TABLE_INSTANTIATION
、PREPARE_SCHEMA_INSTANTIATION
またはPREPARE_GLOBAL_INSTANTIATION
プロシージャを実行します。
1つ以上の同期取得を使用している場合は、指定した表に対してDBMS_CAPTURE_ADM
パッケージのPREPARE_TABLE_INSTANTIATION
プロシージャを実行します。
手順については、「ソース・データベースでインスタンス化を行うためのデータベース・オブジェクトの準備」を参照してください。
新規データベースがソース・データベースとなる場合は、関連する変更を取得するために1つ以上の取得プロセスまたは同期取得を作成します。手順については、「取得プロセスの作成」を参照してください。取得プロセスを使用する場合、各ソース・データベースには1つのみの取得プロセスを使用することをお薦めします。
DBMS_STREAMS_ADM
パッケージのプロシージャを使用して取得プロセスのルールを追加すると、その取得プロセスがソース・データベースへのデータベース・リンクを持つローカル取得プロセスまたはダウンストリーム取得プロセスである場合は、指定した表、指定したスキーマまたはデータベース全体に対して、それぞれDBMS_CAPTURE_ADM
パッケージのPREPARE_TABLE_INSTANTIATION
、PREPARE_SCHEMA_INSTANTIATION
またはPREPARE_GLOBAL_INSTANTIATION
プロシージャが自動的に実行されます。
次のいずれかの条件に該当する場合は、適切なプロシージャを実行してインスタンス化の準備を手動で行う必要があります。
DBMS_RULE_ADM
パッケージを使用してルールを追加または変更する場合。
既存の取得プロセスを使用し、共有オブジェクトの取得プロセスのルールは追加しない場合。
ソース・データベースへのデータベース・リンクを持たないダウンストリーム取得プロセスを使用する場合。
インスタンス化の準備を手動で行う必要がある場合の手順については、「ソース・データベースでインスタンス化を行うためのデータベース・オブジェクトの準備」を参照してください。
DBMS_STREAMS_ADM
パッケージのプロシージャを使用して同期取得のルールを追加すると、指定した表に対してDBMS_CAPTURE_ADM
パッケージのPREPARE_SYNC_INSTANTIATION
ファンクションが自動的に実行されます。
新規データベースがソース・データベースになる場合、DBMS_CAPTURE_ADM
パッケージのSTART_CAPTURE
プロシージャを使用して、手順9で作成したすべての取得プロセスを起動します。
前述の手順を完了してから、次の該当する項の手順を完了します。
新規データベースと共有するオブジェクトが新規データベースに存在する場合は、「共有オブジェクトが新規データベースに存在する場合のデータベースの構成」の手順を完了します。
新規データベースと共有するオブジェクトが新規データベースに存在しない場合は、「新規データベースへの共有オブジェクトの追加」の手順を完了します。
新規データベースと共有するオブジェクトがすでに新規データベースに存在する場合は、「既存の複数ソース環境への新規データベースの追加」の手順を完了してから次の手順を完了します。
新規データベースのソース・データベースごとに、新規データベースでインスタンス化SCNを設定します。これらのインスタンス化SCNの設定は必須です。また、ソース・データベースで行われ、そのデータベースの対応するSCNより後にコミットされる変更のみが、新規データベースで適用されます。
新規データベースのソース・データベースごとに、これらのインスタンス化SCNを次のいずれかの方法で設定できます。
ソース・データベースで共有オブジェクトのメタデータのみのエクスポートを実行し、そのメタデータを新規データベースでインポートします。このインポートによって、ソース・データベースに必須のインスタンス化SCNが、新規データベースで設定されます。行がインポートされないことを確認してください。この場合は、新規データベースの共有オブジェクトに、エクスポート時点でソース・データベースとの一貫性があることを確認してください。
DML変更のみを共有する場合は、表レベルのエクスポート/インポートで十分です。DDL変更も共有する場合は、追加の考慮事項があります。メタデータのエクスポート/インポートを実行する方法の詳細は、「エクスポート/インポートを使用したインスタンス化SCNの設定」を参照してください。
新規データベースで、共有オブジェクトについてインスタンス化SCNを手動で設定します。新規データベースの共有オブジェクトに、対応するインスタンス化SCNの時点でソース・データベースとの一貫性があることを確認してください。手順については、「DBMS_APPLY_ADMパッケージを使用したインスタンス化SCNの設定」を参照してください。
新規データベースについて、それぞれの接続先データベースでインスタンス化SCNを設定します。これらのインスタンス化SCNの設定は必須です。また、新規のソース・データベースで行われ、それに対応するSCNより後にコミットされる変更のみが、接続先データベースで適用されます。新規データベースがソース・データベースでない場合は、この手順を実行しないでください。
新規データベースのインスタンス化SCNを設定するには、次の方法があります。
新規データベースでメタデータのみのエクスポートを実行し、そのメタデータを各接続先データベースでインポートします。行がインポートされないことを確認してください。このインポートによって、新規データベースに必須のインスタンス化SCNが、各接続先データベースで設定されます。この場合は、各接続先データベースの共有オブジェクトに、エクスポート時点で新規データベースとの一貫性があることを確認してください。
DML変更のみを共有する場合は、表レベルのエクスポート/インポートで十分です。DDL変更も共有する場合は、追加の考慮事項があります。メタデータのエクスポート/インポートを実行する方法の詳細は、「エクスポート/インポートを使用したインスタンス化SCNの設定」を参照してください。
接続先データベースで、共有オブジェクトについてインスタンス化SCNを手動で設定します。各接続先データベースの共有オブジェクトに、対応するインスタンス化SCNの時点で新規データベースとの一貫性があることを確認してください。手順については、「DBMS_APPLY_ADMパッケージを使用したインスタンス化SCNの設定」を参照してください。
競合が発生する可能性がある場合は、新規データベースで競合解消を構成します。手順については、「Oracle Streamsの競合検出および解消の管理」を参照してください。
DBMS_APPLY_ADM
パッケージのSTART_APPLY
プロシージャを使用して、手順3で新規データベースに作成した適用プロセスを起動します。
手順4で他の各接続先データベースに作成した適用プロセスを起動します。新規データベースがソース・データベースでない場合は、この手順を実行しないでください。
新規データベースと共有するオブジェクトが新規データベースに存在しない場合は、「既存の複数ソース環境への新規データベースの追加」の手順を完了してから次の手順を完了します。
新規データベースが他のデータベースのソース・データベースである場合は、新規ソース・データベースの各接続先データベースで、新規データベースのインスタンス化SCNを設定します。
インスタンス化中に、またはその後に共有DDLの変更によって、新規データベースで1つ以上のスキーマが作成される場合は、新規データベースの各接続先データベースで、新規データベースについてDBMS_APPLY_ADM
パッケージのSET_GLOBAL_INSTANTIATION_SCN
プロシージャを実行します。
新規データベースにスキーマが存在し、インスタンス化中に、またはその後に共有DDLの変更によって、そのスキーマに1つ以上の表が作成される場合は、新規データベースの各接続先データベースで、そのスキーマについてDBMS_APPLY_ADM
パッケージのSET_SCHEMA_INSTANTIATION_SCN
プロシージャを実行します。この操作は、この種のスキーマごとに行います。
手順については、「DBMS_APPLY_ADMパッケージを使用したインスタンス化SCNの設定」を参照してください。
これらのプロシージャは、新規データベースで表がインスタンス化される前に実行し、新規データベースではローカルの取得プロセスまたは同期取得がすでに構成されているため、インスタンス化中に作成される表ごとにSET_TABLE_INSTANTIATION_SCN
プロシージャを実行する必要はありません。新規データベースの接続先データベースとなる環境内の他のすべてのデータベースで、その表ごとにインスタンス化SCNが自動的に設定されます。
新規データベースがソース・データベースでない場合は、この手順を実行せずに次の手順に進んでください。
新規データベースでエクスポート/インポートを使用して共有オブジェクトをインスタンス化する場合の、ソース・データベースを1つ選択します。まず、共有オブジェクトのエクスポートを実行します。次に、新規データベースで共有オブジェクトのインポートを実行します。エクスポート/インポートの使用方法は、「Oracle Streamsレプリケーション環境でのオブジェクトのインスタンス化」および『Oracle Databaseユーティリティ』を参照してください。
ソース・データベースでのデータベース・オブジェクトのエクスポート中、それらのデータベース・オブジェクトに対する変更は許可しないでください。接続先データベースでのデータベース・オブジェクトのインポート中、それらのデータベース・オブジェクトに対する変更は許可しないでください。
FLASHBACK_SCN
やFLASHBACK_TIME
などのエクスポート・パラメータを使用して、より厳密な一貫性レベルを指定できます。
手順2でインスタンス化のためのエクスポートを実行したソース・データベースを除き、新規データベースのソース・データベースごとに、新規データベースでインスタンス化SCNを設定します。これらのインスタンス化SCNの設定は必須です。また、ソース・データベースで行われ、そのデータベースの対応するSCNより後にコミットされる変更のみが、新規データベースで適用されます。
ソース・データベースごとに、これらのインスタンス化SCNを次のいずれかの方法で設定できます。
ソース・データベースでメタデータのみのエクスポートを実行し、そのメタデータを新規データベースでインポートします。このインポートによって、ソース・データベースに必須のインスタンス化SCNが、新規データベースで設定されます。この場合は、新規データベースの共有オブジェクトに、エクスポート時点でソース・データベースとの一貫性があることを確認してください。
DML変更のみを共有する場合は、表レベルのエクスポート/インポートで十分です。DDL変更も共有する場合は、追加の考慮事項があります。メタデータのエクスポート/インポートを実行する方法の詳細は、「エクスポート/インポートを使用したインスタンス化SCNの設定」を参照してください。
新規データベースで、共有オブジェクトについてインスタンス化SCNを手動で設定します。新規データベースの共有オブジェクトに、対応するインスタンス化SCNの時点でソース・データベースとの一貫性があることを確認してください。手順については、「DBMS_APPLY_ADMパッケージを使用したインスタンス化SCNの設定」を参照してください。
競合が発生する可能性がある場合は、新規データベースで競合解消を構成します。手順については、「Oracle Streamsの競合検出および解消の管理」を参照してください。
DBMS_APPLY_ADM
パッケージのSTART_APPLY
プロシージャを使用して、手順3で新規データベースに作成した適用プロセスを起動します。
手順4で他の各接続先データベースに作成した適用プロセスを起動します。新規データベースがソース・データベースでない場合は、この手順を実行しないでください。