この章では、簡単な方法を使用した2つのデータベース間でのOracle Streamsレプリケーションの構成について説明します。
この章の内容は次のとおりです。
Enterprise ManagerのOracle Streamsツールには、Oracle Streamsレプリケーション環境を構成する2つのウィザードが含まれています。ここでは、ウィザードおよびそのオープン方法について説明します。
Oracle Streamsのグローバル、スキーマ、表およびサブセット・レプリケーション・ウィザードでは、ソース・データベース全体、ソース・データベース内の特定のスキーマ、ソース・データベース内の特定の表またはソース・データベース内の表のサブセットに対する変更をレプリケートするOracle Streams環境を構成できます。
このウィザードでは、DML変更またはDDL変更(あるいはその両方)をメンテナンスするOracle Streams環境を構成できます。このウィザードでレプリケーションに対して構成したデータベース・オブジェクトは、ソース・データベースの複数の表領域に存在する場合があります。このウィザードでは、単一ソースのレプリーション環境のみを構成します。両方向のレプリケーション環境を構成することはできません。
このウィザードは、Database ControlまたはGrid Controlで実行できます。Database Controlでこのウィザードを実行するには、次の要件を満たす必要があります。
このウィザード、またはこのウィザードで生成されたスクリプトは、Oracle Database 10g リリース2(10.2)以上のデータベースで実行する必要があります。
このウィザードで構成した接続先データベースは、Oracle Database 10g リリース1(10.1)以上のデータベースである必要があります。
Grid Controlでこのウィザードを実行するには、次の要件を満たす必要があります。
このウィザード、またはこのウィザードで生成されたスクリプトは、Oracle9i リリース2(9.2)以上のデータベースで実行する必要があります。
このウィザードで構成した接続先データベースは、Oracle9i リリース2(9.2)以上のデータベースである必要があります。
図6-1に、Oracle Streamsのグローバル、スキーマ、表およびサブセット・レプリケーション・ウィザードの先頭ページを示します。
図6-1 Oracle Streamsのグローバル、スキーマ、表およびサブセット・レプリケーション・ウィザード
Oracle Streamsの表領域レプリケーション・ウィザードでは、特定の自己完結型の表領域または表領域セット内のすべてのデータベース・オブジェクトに対する変更をレプリケートするOracle Streams環境を構成できます。自己完結型の表領域には、その表領域の外部を指す表領域からの参照は含まれません。たとえば、表領域の索引が異なる表領域の表に対する索引である場合、その表領域は自己完結型ではありません。表領域セットに複数の表領域が存在する場合、自己完結型の表領域セットには、その表領域セットの外部を指す表領域セット内からの参照は含まれません。
このウィザードでは、単一ソースのレプリケーション環境または両方向のレプリケーション環境を構成できます。このウィザードでは、表領域セットまたは表領域セット内のデータベース・オブジェクトに対するDDL変更をメンテナンスするOracle Streams環境は構成されません。たとえば、表領域でALTER
TABLESPACE
文をレプリケートしたり、表領域の表でALTER
TABLE
文をレプリケートするようにOracle Streams環境は構成されません。
このウィザードは、Database ControlまたはGrid Controlで実行できます。Database Controlでこのウィザードを実行するには、次の要件を満たす必要があります。
このウィザード、またはこのウィザードで生成されたスクリプトは、Oracle Database 10g リリース2(10.2)以上のデータベースで実行する必要があります。
このウィザードでレプリケーション環境を(スクリプトを使用せずに)直接構成した場合、両方のデータベースがOracle Database 10g リリース2(10.2)以上のデータベースである必要があります。
このウィザードで生成されたスクリプトを使用してレプリケーション環境を構成した場合、接続先データベースはOracle Database 10g リリース1(10.1)以上のデータベースである必要があります。スクリプトでOracle Database 10g リリース1(10.1)データベースを構成する場合は、キュー・ツー・キュー伝播など、Oracle Database 10g リリース2(10.2)以上のみでサポートされる機能を構成しないようにスクリプトを変更する必要があります。
Grid Controlでこのウィザードを実行するには、次の要件を満たす必要があります。
このウィザード、またはこのウィザードで生成されたスクリプトで構成した各データベースは、Oracle Database 10g リリース1(10.1)以上のデータベースである必要があります。
このウィザード、またはこのウィザードで生成されたスクリプトは、Oracle Database 10g リリース1(10.1)以上のデータベースで実行する必要があります。
このウィザードをOracle Database 10g リリース2(10.2)以上のデータベースで実行し、ウィザードでレプリケーション環境を(スクリプトを使用せずに)直接構成した場合、両方のデータベースがOracle Database 10g リリース2(10.2)以上のデータベースである必要があります。
このウィザードをOracle Database 10g リリース2(10.2)以上のデータベースで実行し、生成されたスクリプトを使用してレプリケーション環境を構成した場合、接続先データベースがOracle Database 10g リリース1(10.1)以上のデータベースである必要があります。スクリプトでOracle Database 10g リリース1(10.1)データベースを構成する場合は、キュー・ツー・キュー伝播など、Oracle Database 10g リリース2(10.2)以上のみでサポートされる機能を構成しないようにスクリプトを変更する必要があります。
図6-2に、Oracle Streamsの表領域レプリケーション・ウィザードの先頭ページを示します。
どちらのウィザードでも、Oracle Streamsレプリケーション環境が構成されるか、またはOracle Streamsレプリケーション環境を構成するスクリプトが生成されます。取得プロセスは、ソース・データベースで指定された表領域のデータベース・オブジェクトに対する変更を取得するように構成されます。伝播は、ソース・データベースから接続先データベースに論理変更レコード(LCR)の形式で各変更を伝播するように、ソース・データベースで構成されます。接続先データベースの適用プロセスは、LCRを適用して接続先データベースで変更を行います。Oracle Streamsの表領域レプリケーション・ウィザードを使用して両方向のレプリケーション環境を構成した場合、各データベースは変更を取得して他のデータベースに伝播し、他のデータベースからの変更を適用します。また、どちらのウィザードでも、指定したデータベース・オブジェクトのインスタンス化が実行されます。
これらのウィザードのいずれかをオープンするには、Enterprise Managerで次の手順を実行します。
Oracle Enterprise Managerで、SYSTEM
などの管理ユーザーとしてデータベースにログインします。レプリケーション環境でソース・データベースになるデータベースにログインします。
データベースの「ホーム」ページに移動します。
「データ移動」をクリックして、「データ移動」サブページを開きます。
「Streams」セクションの「設定」をクリックして、「Streams」ページを開きます。
「設定オプション」リストで使用するウィザードをクリックします。詳細を表示するには、「ヘルプ」をクリックします。
注意:
|
参照:
|
DBMS_STREAMS_ADM
パッケージの次のプロシージャでは、Oracle Streamsによってメンテナンスされるレプリケーション環境が構成されます。
MAINTAIN_GLOBAL
: 2つのデータベース間でデータベース・レベルの変更をレプリケートするOracle Streams環境が構成されます。
MAINTAIN_SCHEMAS
: 2つのデータベース間で、指定されたスキーマに対する変更をレプリケートするOracle Streams環境が構成されます。
MAINTAIN_SIMPLE_TTS
: 接続先データベースでソース・データベースからの単一の表領域がクローニングされ、Oracle Streamsを使用して両方のデータベースでこの表領域がメンテナンスされます。
MAINTAIN_TABLES
: 2つのデータベース間で、指定された表に対する変更をレプリケートするOracle Streams環境が構成されます。
MAINTAIN_TTS
: 接続先データベースでソース・データベースからの表領域セットがクローニングされ、Oracle Streamsを使用して両方のデータベースでこれらの表領域がメンテナンスされます。
PRE_INSTANTIATION_SETUP
およびPOST_INSTANTIATION_SETUP
: 2つのデータベース間でデータベース・レベルの変更または指定された表に対する変更をレプリケートするOracle Streams環境が構成されます。Oracle Streamsレプリケーションの構成を完了するには、これらのプロシージャをともに使用し、インスタンス化の操作を手動で実行する必要があります。
ここでは、これらのプロシージャのいずれかの実行を準備する手順および一般的な使用例を示します。
参照: これらのプロシージャの詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。 |
ここでは、DBMS_STREAMS_ADM
パッケージのプロシージャを使用してレプリケーションを構成する前に行う決定および実行する操作について説明します。
Oracle Streamsレプリケーションを構成する前に、次の決定を行います。
この項のプロシージャを使用すると、デフォルトで、指定されたデータベース・オブジェクトに対するデータ操作言語(DML)変更をメンテナンスするように、レプリケーション環境が構成されます。DML変更には、INSERT
、UPDATE
、DELETE
およびLOBの更新操作が含まれます。レプリケーション環境でデータ定義言語(DDL)変更もメンテナンスするかどうかを決定する必要があります。DDL変更が発生する文には、CREATE
TABLE
、ALTER
TABLE
、ALTER
TABLESPACE
、ALTER
DATABASE
などがあります。
一部のOracle Streamsレプリケーション環境では、各データベースに同じデータベース・オブジェクトが存在すると想定されます。この場合、Oracle Streamsを使用してDDL変更をメンテナンスすると、共有データベース・オブジェクトを簡単に同期化できます。ただし、一部のOracle Streamsレプリケーション環境では、データベースによって共有データベース・オブジェクトが異なる必要があります。たとえば、2つの異なるデータベースで、ある表の名前または形状が異なっている場合があります。これらの環境では、ルールベースの変換および適用ハンドラを使用して、データベース間で共有可能になるように変更を変換できるため、Oracle Streamsを使用してDDL変更をメンテナンスする必要はありません。
include_ddl
パラメータは、DDL変更をメンテナンスするようにプロシージャでOracle Streamsレプリケーションを構成するかどうかを制御します。
DDL変更をメンテナンスしないOracle Streamsレプリケーション環境を構成するには、この項のいずれかのプロシージャを実行する際に、include_ddl
パラメータをFALSE
に設定します。このパラメータのデフォルト値はFALSE
です。
DDL変更をメンテナンスするOracle Streamsレプリケーション環境を構成するには、この項のいずれかのプロシージャを実行する際に、include_ddl
パラメータをTRUE
に設定します。
注意: MAINTAIN_SIMPLE_TTS プロシージャにはinclude_ddl パラメータは含まれません。MAINTAIN_SIMPLE_TTS プロシージャで構成するOracle Streamsレプリケーション環境では、DML変更のみがメンテナンスされます。 |
ローカル取得とは、ソース・データベース上で取得プロセスが実行されることを意味します。ダウンストリーム取得とは、ソース・データベース以外のデータベース上で取得プロセスが実行されることを意味します。この項のプロシージャでは、source_database
パラメータに指定したデータベースに対してローカル取得またはダウンストリーム取得のいずれかを構成できます。
ソース・データベースに対する変更を取得するデータベースは、取得データベースと呼ばれます。この項のプロシージャでは、次のいずれかのデータベースを取得データベースとして構成できます。
ソース・データベース(ローカル取得)
接続先データベース(ダウンストリーム取得)
第3のデータベース(ダウンストリーム取得)
図6-3に、取得データベースのロールを示します。
プロシージャが実行されるデータベースは、ソース・データベースに対する変更の取得データベースとして構成されます。そのため、ソース・データベースでのローカル取得を構成するには、ソース・データベースでプロシージャを実行します。接続先データベースまたは第3のデータベースでのダウンストリーム取得を構成するには、接続先データベースまたは第3のデータベースでプロシージャを実行します。
ソース・データベースまたは第3のデータベースを取得データベースに使用する場合、この項のプロシージャでは、取得データベースから接続先データベースに変更を伝播するように伝播が構成されます。接続先データベースを取得データベースに使用して、両方向のレプリケーションを構成しない場合、データベース間でのこの伝播は不要です。この場合、capture_queue_name
とapply_queue_name
が同じであると、伝播は構成されません。
また、次の両方の条件に該当する場合、capture_name
およびcapture_queue_name
パラメータをNULL
に設定する必要があります。
接続先データベースを取得データベースに使用する。
bi_directional
パラメータがTRUE
に設定されている。
これらの両方の条件に該当する場合、この項のプロシージャでは接続先データベースで2つの取得プロセスが構成されます。これらの取得プロセスには異なる名前を付ける必要があります。capture_name
およびcapture_queue_name
パラメータがNULL
に設定されている場合、これらの取得プロセスに対してシステムによって異なる名前が生成されます。両方の条件に該当し、capture_name
パラメータまたはcapture_queue_name
パラメータのいずれかがNULL
以外の値に設定されている場合、この項のプロシージャでエラーが発生します。
注意:
|
参照:
|
この項のプロシージャでは、source_database
パラメータで指定されたデータベースをソース・データベースとする単一ソースのOracle Streams構成、または両方のデータベースをソース・データベースと接続先データベースとする両方向のOracle Streams構成のいずれかが設定されます。Oracle Streams構成を単一ソースとするか両方向とするかは、各プロシージャのbi_directional
パラメータで制御されます。
bi_directional
パラメータをFALSE
に指定した場合、取得プロセスがソース・データベースに対する変更を取得し、適用プロセスが接続先データベースでそれらの変更を適用します。接続先データベースを取得データベースに使用しない場合、伝播によって、取得された変更が接続先データベースに伝播されます。このパラメータのデフォルト値はFALSE
です。
bi_directional
パラメータをTRUE
に指定した場合、個別の取得プロセスが各データベースに対する変更を取得し、伝播によってこれらの変更が他のデータベースに伝播され、各データベースで他のデータベースからの変更が適用されます。
レプリケーション環境が両方向ではなく、接続先データベースで変更が許可されていない場合、Oracle Streamsはデータベース間で共有データベース・オブジェクトの同期化を保持します。ただし、レプリケーション環境が両方向ではなく、接続先データベースで独立した変更が許可されている場合、データベース間で共有データベース・オブジェクトが異なる場合があります。独立した変更は、ユーザー、アプリケーション、または第3のデータベースを含むレプリケーションによって行われます。
この項のプロシージャを使用して、環境内の第3のデータベースによってソース・データベースに変更が循環される複数方向のレプリケーションを構成することはできません。たとえば、これらのプロシージャを使用して、3つのデータベースによってそれぞれ環境内の他の2つのデータベースと変更が共有されるOracle Streamsレプリケーション環境を構成することはできません。これらのプロシージャを使用してこのような3方向のレプリケーション環境を構成すると、ソース・データベースに加えられた変更は、同じソース・データベースに循環されます。有効な3方向のレプリケーション環境では、特定の変更は各データベースに一度のみ行われます。ただし、いずれかのプロシージャを使用してOracle Streams環境を構成した後、この環境にデータベースを追加できます。また、これらのプロシージャを使用してハブ・アンド・スポーク・レプリケーション環境を構成できます。
注意:
|
この項のプロシージャでは、Oracle Streamsレプリケーション環境を直接構成するか、または環境を構成するスクリプトを生成できます。スクリプトを実行するよりプロシージャを使用してレプリケーションを直接構成する方が簡単で、環境が即時に構成されます。ただし、次の理由でスクリプトを生成することもあります。
環境を構成する前にプロシージャによって実行される操作を確認する必要がある。
構成をカスタマイズするためにスクリプトを変更する必要がある。
たとえば、適用プロセスで、特定の表に変更を適用する前に、適用ハンドラを使用してこれらの変更にカスタマイズされた処理を行う場合があります。この場合、プロシージャを使用してスクリプトを生成し、適用ハンドラを追加するようにスクリプトを変更できます。
また、多数の表に対するDML変更をメンテナンスするが、これらの表のサブセットに対してのみDDL変更をメンテナンスする場合があります。この場合、include_ddl
パラメータをFALSE
に設定してMAINTAIN_TABLES
プロシージャを実行することによって、スクリプトを生成できます。適切な表に対するDDL変更をメンテナンスするようにスクリプトを変更できます。
perform_actions
パラメータは、プロシージャでレプリケーション環境を直接構成するかどうかを制御します。
この項のいずれかのプロシージャを実行する際にOracle Streams環境を直接構成する場合は、perform_actions
パラメータをTRUE
に設定します。このパラメータのデフォルト値はTRUE
です。
この項のいずれかのプロシージャを実行する際に構成スクリプトを生成する場合は、perform_actions
パラメータをFALSE
に設定し、script_name
およびscript_directory_object
パラメータを使用して構成スクリプトの名前と格納場所を指定します。
MAINTAIN_GLOBAL
、MAINTAIN_SCHEMAS
およびMAINTAIN_TABLES
プロシージャでは、インスタンス化のオプションが提供されます。インスタンス化とは、ソース・データベースでデータベース・オブジェクトをインスタンス化のために準備するプロセスです。オプションで、データベース・オブジェクトをソース・データベースから接続先データベースにコピーしたり、インスタンス化された各データベース・オブジェクトにインスタンス化SCNを設定します。
これら3つのプロシージャのいずれかを実行する場合、次のいずれかの方法でインスタンス化を実行するように選択できます。
データ・ポンプ・エクスポート・ダンプ・ファイルによるインスタンス化: このオプションでは、ソース・データベースで共有データベース・オブジェクトにデータ・ポンプでのエクスポートが実行され、接続先データベースでエクスポート・ダンプ・ファイルのデータ・ポンプでのインポートが実行されます。インポート時に各共有データベース・オブジェクトに対してインスタンス化SCNが設定されます。
このインスタンス化オプションを指定するには、instantiation
パラメータを次のいずれかの値に設定します。
MAINTAIN_GLOBAL
プロシージャを実行する場合はDBMS_STREAMS_ADM.INSTANTIATION_FULL
MAINTAIN_SCHEMAS
プロシージャを実行する場合はDBMS_STREAMS_ADM.INSTANTIATION_SCHEMA
MAINTAIN_TABLES
プロシージャを実行する場合はDBMS_STREAMS_ADM.INSTANTIATION_TABLE
bi_directional
パラメータがTRUE
に設定されている場合、プロシージャでは、ソース・データベースの各共有データベース・オブジェクトに対してもインスタンス化SCNが設定されます。
データ・ポンプでのネットワーク・インポートによるインスタンス化: このオプションでは、共有データベース・オブジェクトのデータ・ポンプでのネットワーク・インポートが実行されます。ネットワーク・インポートとは、エクスポート・ダンプ・ファイルを使用せずにデータ・ポンプでインポートを実行することを意味します。したがって、このオプションを使用する場合、インスタンス化のためにディレクトリ・オブジェクトを作成する必要はありません。インポート時に各共有データベース・オブジェクトに対してインスタンス化SCNが設定されます。
このインスタンス化オプションを指定するには、instantiation
パラメータを次のいずれかの値に設定します。
MAINTAIN_GLOBAL
プロシージャを実行する場合はDBMS_STREAMS_ADM.INSTANTIATION_FULL_NETWORK
MAINTAIN_SCHEMAS
プロシージャを実行する場合はDBMS_STREAMS_ADM.INSTANTIATION_SCHEMA_NETWORK
MAINTAIN_TABLES
プロシージャを実行する場合はDBMS_STREAMS_ADM.INSTANTIATION_TABLE_NETWORK
bi_directional
パラメータがTRUE
に設定されている場合、プロシージャでは、ソース・データベースの各共有データベース・オブジェクトに対してもインスタンス化SCNが設定されます。
インスタンス化を指定しない構成スクリプトの生成: このオプションでは、インスタンス化は実行されません。この設定は、perform_actions
パラメータがFALSE
に設定されており、プロシージャで構成スクリプトを生成する場合にのみ有効です。この場合、構成スクリプトではインスタンス化が実行されず、各共有データベース・オブジェクトに対してインスタンス化SCNが設定されません。かわりに、自分でインスタンス化を実行し、インスタンス化SCNの値が適切に設定されていることを確認する必要があります。
このインスタンス化オプションを指定するには、各プロシージャでinstantiation
パラメータをDBMS_STREAMS_ADM.INSTANTIATION_NONE
に設定します。
これらのプロシージャでダンプ・ファイルまたはネットワークのインスタンス化を実行すると、インスタンス化されたデータベース・オブジェクトが接続先データベースに存在しない場合、接続先データベースにデータベース・オブジェクトがインポートされます。これには、ソース・データベースからのサプリメンタル・ロギング指定およびサポート・データベース・オブジェクト(索引、トリガーなど)が含まれます。ただし、インスタンス化の実行前に接続先データベースにデータベース・オブジェクトが存在する場合は、接続先データベースにデータベース・オブジェクトはインポートされません。したがって、ソース・データベースからのサプリメンタル・ロギング指定は接続先データベースのデータベース・オブジェクトに指定されず、サポート・データベース・オブジェクトもインポートされません。
PRE_INSTANTIATION_SETUP
およびPOST_INSTANTIATION_SETUP
プロシージャでは、インスタンス化が実行されません。必要なインスタンス化操作を、PRE_INSTANTIATION_SETUP
の実行後およびPOST_INSTANTIATION_SETUP
の実行前に手動で実行する必要があります。また、instantiation
パラメータをDBMS_STREAMS_ADM.INSTANTIATION_NONE
に設定してMAINTAIN_GLOBAL
、MAINTAIN_SCHEMAS
およびMAINTAIN_TABLES
プロシージャを使用した場合も、必要なインスタンス化操作を手動で実行する必要があります。
これらの場合、任意のインスタンス化方法を使用できます。たとえば、Recovery ManagerのDUPLICATE
またはCONVERT
DATABASE
コマンドを使用してデータベースをインスタンス化したり、Recovery ManagerのTRANSPORT
TABLESPACE
コマンドを使用して表領域をインスタンス化することができます。bi_directional
パラメータがTRUE
に設定されている場合、接続先データベースのみでなくソース・データベースでもインスタンス化SCNの値が適切に設定されていることを確認します。
注意:
|
ここでは、Oracle Streamsレプリケーションを構成する前に実行するタスクについて説明します。
各データベースのOracle Streams管理者は、構成操作を実行するために必要な権限を持っている必要があります。この章の例では、各データベースのOracle Streams管理者のユーザー名がstrmadmin
であると想定しています。
参照: Oracle Streams管理者を構成する方法は、『Oracle Streams概要および管理』を参照してください。 |
この項のいずれかのプロシージャを実行するには、ソース・データベースから接続先データベースへのデータベース・リンクが常に必要です。次のいずれかの場合、接続先データベースからソース・データベースへのデータベース・リンクが必要です。
Oracle Streamsレプリケーション環境を両方向にする場合。
インスタンス化中にデータ・ポンプでのネットワーク・インポートを実行する場合。
接続先データベースを、ソース・データベースに対する変更のダウンストリーム取得の取得データベースに使用する場合。
データベースのインスタンス化にRecovery ManagerのDUPLICATE
またはCONVERT
DATABASE
コマンドを使用する場合。
instantiation_scn
パラメータをNULL
以外の値に設定してPOST_INSTANTIATION_SETUP
プロシージャを実行すると、接続先データベースでDBMS_APPLY_ADM
パッケージのSET_GLOBAL_INSTANTIATION_SCN
プロシージャが実行されるため、このデータベース・リンクが必要になります。SET_GLOBAL_INSTANTIATION_SCN
プロシージャにはこのデータベース・リンクが必要です。このデータベース・リンクは、Recovery Managerによるインスタンス化の実行後、POST_INSTANTIATION_SETUP
プロシージャを実行する前に作成する必要があります。
第3のデータベースをソース・データベースに対する変更のダウンストリーム取得の取得データベースに使用する場合は、次のデータベース・リンクも必要です。
第3のデータベースからソース・データベースへのデータベース・リンク。
第3のデータベースから接続先データベースへのデータベース・リンク。
各データベース・リンクは、Oracle Streams管理者のスキーマに作成する必要があります。たとえば、ソース・データベースがstm1.net
、接続先データベースがstm2.net
、各データベースのOracle Streams管理者がstrmadmin
である場合、次の文を実行すると、ソース・データベースから接続先データベースへのデータベース・リンクが作成されます。
CONNECT strmadmin@stm1.net Enter password: password CREATE DATABASE LINK stm2.net CONNECT TO strmadmin IDENTIFIED BY password USING 'stm2.net';
接続先データベースからソース・データベースへのデータベース・リンクが必要な場合、次の文を実行すると、このデータベース・リンクが作成されます。
CONNECT strmadmin@stm2.net Enter password: password CREATE DATABASE LINK stm1.net CONNECT TO strmadmin IDENTIFIED BY password USING 'stm1.net';
第3のデータベースを取得データベースに使用する場合、第3のデータベースからソース・データベースおよび接続先データベースへのデータベース・リンクが必要です。たとえば、第3のデータベースがstm3.net
の場合、次の文を実行すると、第3のデータベースからソース・データベースおよび接続先データベースへのデータベース・リンクが作成されます。
CONNECT strmadmin@stm3.net Enter password: password CREATE DATABASE LINK stm1.net CONNECT TO strmadmin IDENTIFIED BY password USING 'stm1.net'; CREATE DATABASE LINK stm2.net CONNECT TO strmadmin IDENTIFIED BY password USING 'stm2.net';
Recovery Managerを使用してデータベースのインスタンス化を実行した場合、インスタンス化中にソース・データベースのデータベース・リンクが接続先データベースにコピーされます。このコピーされたデータベース・リンクは、接続先データベースで削除する必要があります。この場合、レプリケーションが両方向で、接続先データベースからソース・データベースへのデータベース・リンクが必要な場合、インスタンス化後にこのデータベース・リンクを作成する必要があります。
ディレクトリ・オブジェクトは、ファイル・システム上のディレクトリの別名に類似しています。この項のいずれかのプロシージャを実行する場合、次のディレクトリ・オブジェクトが必要になる場合があります。
スクリプト・ディレクトリ・オブジェクト。これは、構成スクリプトを生成する場合に必要です。構成スクリプトは、プロシージャが実行されるコンピュータ・システム上のこのディレクトリに格納されます。この項のいずれかのプロシージャを実行してスクリプト・ディレクトリ・オブジェクトを指定する場合、script_directory_object
パラメータを使用します。
ソース・ディレクトリ・オブジェクト。これは、データ・ポンプ・エクスポート・ダンプ・ファイルによるインスタンス化を実行し、MAINTAIN_GLOBAL
、MAINTAIN_SCHEMAS
、MAINTAIN_SIMPLE_TTS
、MAINTAIN_TABLES
またはMAINTAIN_TTS
のいずれかのプロシージャを使用する場合に必要です。データ・ポンプ・エクスポート・ダンプ・ファイルおよびログ・ファイルは、ソース・データベースが実行されるコンピュータ・システム上のこのディレクトリに格納されます。これらのいずれかのプロシージャを実行してソース・ディレクトリ・オブジェクトを指定する場合、source_directory_object
パラメータを使用します。PRE_INSTANTIATION_SETUP
およびPOST_INSTANTIATION_SETUP
プロシージャを使用する場合、このディレクトリ・オブジェクトは不要です。
接続先ディレクトリ・オブジェクト。これは、データ・ポンプ・エクスポート・ダンプ・ファイルによるインスタンス化を実行し、MAINTAIN_GLOBAL
、MAINTAIN_SCHEMAS
、MAINTAIN_SIMPLE_TTS
、MAINTAIN_TABLES
またはMAINTAIN_TTS
のいずれかのプロシージャを使用する場合に必要です。ソース・データベースが実行されているコンピュータ・システムから接続先データベースが実行されているコンピュータ・システムにデータ・ポンプ・エクスポート・ダンプ・ファイルが転送され、接続先データベースが実行されているコンピュータ・システム上のこのディレクトリに格納されます。これらのプロシージャのいずれかを実行して接続先ディレクトリ・オブジェクトを指定する場合、destination_directory_object
パラメータを使用します。PRE_INSTANTIATION_SETUP
およびPOST_INSTANTIATION_SETUP
プロシージャを使用する場合、このディレクトリ・オブジェクトは不要です。
各ディレクトリ・オブジェクトは、SQL文CREATE
DIRECTORY
を使用して作成する必要があります。また、いずれかのプロシージャをコールするユーザーは、各ディレクトリ・オブジェクトに対するREAD
およびWRITE
権限を持っている必要があります。たとえば、次の文を実行すると、/usr/db_files
ディレクトリに対応するディレクトリ・オブジェクトdb_files_directory
が作成されます。
CREATE DIRECTORY db_files_directory AS '/usr/db_files';
このディレクトリ・オブジェクトはOracle Streams管理者(strmadmin
)によって作成されているため、このユーザーにはディレクトリ・オブジェクトに対するREAD
およびWRITE
権限が自動的に付与されます。
この項のいずれかのプロシージャ(またはこれらのプロシージャのいずれかによって生成されたスクリプト)を実行する前に、各ソース・データベースがARCHIVELOG
モードで実行されている必要があります。ソース・データベースは、取得プロセスによって取得される変更を生成するデータベースです。ソース・データベースは、常に、ARCHIVELOG
モードである必要があります。プロシージャで両方向のレプリケーション環境を構成する場合、接続先データベースもARCHIVELOG
モードである必要があります。
ソース・データベースでのローカル取得プロセスを使用するように決定した場合、ログ・ファイルを転送する必要はありません。ただし、ソース・データベースに対してダウンストリーム取得を使用するように決定した場合は、プロシージャを実行する前に、ソース・データベースから取得データベースへのログ・ファイルの転送を構成します。
次の手順を実行して、ソース・データベースのREDOログ・ファイルを取得データベースに転送するための準備、および取得データベースでそれらのREDOログ・ファイルを受け入れるための準備を行います。
ソース・データベースが取得データベースと通信できるように、Oracle Netを構成します。
参照: 『Oracle Database Net Services管理者ガイド』 |
両方のデータベースで、REDOデータの転送がサポートされるように認証を構成します。
REDO転送セッションは、Secure Sockets Layer(SSL)プロトコルまたはリモート・ログイン・パスワード・ファイルのいずれかを使用して認証されます。ソース・データベースにリモート・ログイン・パスワード・ファイルがある場合は、そのファイルをダウンストリーム取得データベース・システムの適切なディレクトリにコピーします。 ソース・データベースとダウンストリーム取得データベースで、同じパスワード・ファイルを使用する必要があります。
参照: REDO転送の認証要件の詳細は、『Oracle Data Guard概要および管理』を参照してください。 |
ソース・データベースからダウンストリーム・データベースにREDOデータを転送するREDO転送サービスを構成するために、ソース・データベースで次の初期化パラメータを設定します。
LOG_ARCHIVE_DEST_
n
: ダウンストリーム・データベースにREDOデータが転送されるように、1つ以上のLOG_ARCHIVE_DEST_
n
初期化パラメータを構成します。これを行うには、このパラメータの次の属性を設定します。
SERVICE
: ダウンストリーム・データベースのネットワーク・サービス名を指定します。
ASYNC
またはSYNC
: REDO転送モードを指定します。
ASYNC
を指定するメリットは、ソース・データベースのパフォーマンスにほとんど影響を与えないことです。ソース・データベースでOracle Database 10gリリース1以上を実行しており、ダウンストリーム・データベースまたはネットワークのパフォーマンスが低い場合は、ソース・データベースのパフォーマンスに影響を及ぼさないようにASYNC
を指定することをお薦めします。
SYNC
を指定するメリットは、ASYNC
を指定した場合より高速にダウンストリーム・データベースにREDOデータが送信されることです。また、SYNC
AFFIRM
を指定すると、MAXIMUM
AVAILABILITY
スタンバイ保護モードと同様に動作します。SQL文ALTER
DATABASE
STANDBY
DATABASE
TO
MAXIMIZE
AVAILABILITY
を指定しても、Oracle Streamsの取得プロセスに影響しないことに注意してください。
NOREGISTER
: この属性を指定すると、アーカイブREDOログ・ファイルの位置が、ダウンストリーム・データベースの制御ファイルに記録されません。
VALID_FOR
: (ONLINE_LOGFILE,PRIMARY_ROLE)
または(ONLINE_LOGFILE,ALL_ROLES)
のいずれかを指定します。
TEMPLATE
: アーカイブ・ログ・ダウンストリームの取得プロセスを構成するときには、ダウンストリーム・データベースでアーカイブREDOログ用のディレクトリおよびフォーマット・テンプレートを指定します。TEMPLATE
属性は、ダウンストリーム・データベースのLOG_ARCHIVE_FORMAT
初期化パラメータ設定を上書きします。TEMPLATE
属性は、リモートの接続先でのみ有効です。各ソース・データベースで、フォーマットに%t
、%s
および%r
のすべての変数を使用していることを確認します。
リアルタイム・ダウンストリームの取得プロセスを構成するときには、TEMPLATE
属性を指定しないでください。
DB_UNIQUE_NAME
: ダウンストリーム・データベースの一意の名前。ダウンストリーム・データベースでDB_UNIQUE_NAME
初期化パラメータに指定した名前を使用します。
次に、リアルタイム・ダウンストリームの取得プロセスにダウンストリーム・データベースを指定するLOG_ARCHIVE_DEST_
n
設定の例を示します。
LOG_ARCHIVE_DEST_2='SERVICE=STM2.NET ASYNC NOREGISTER VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=stm2'
注意: 構成プロシージャでは、リアルタイム・ダウンストリーム取得ではなく、常にアーカイブ・ログ・ダウンストリーム取得が構成されます。ただし、プロシージャを実行する前にリアルタイム・ダウンストリーム取得用のREDO転送サービスを構成して、プロシージャの完了後にdownstream_real_time_mine 取得プロセス・パラメータをY に設定することができます。また、これらのプロシージャによって生成されるスクリプトを、リアルタイム・ダウンストリーム取得を構成するように変更することもできます。リアルタイム・ダウンストリームの取得プロセスを使用するOracle Streamsレプリケーション環境を構成するためにMAINTAIN_SCHEMAS プロシージャを使用する例については、『Oracle Database 2日でデータ・レプリケーションおよび統合ガイド』を参照してください。 |
次に、アーカイブ・ログ・ダウンストリームの取得プロセスにダウンストリーム・データベースを指定するLOG_ARCHIVE_DEST_
n
設定の例を示します。
LOG_ARCHIVE_DEST_2='SERVICE=STM2.NET ASYNC NOREGISTER VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) TEMPLATE=/usr/oracle/log_for_stm1/stm1_arch_%t_%s_%r.log DB_UNIQUE_NAME=stm2'
注意: リモート・ソース・データベースからのログ・ファイルをローカル・データベースのログ・ファイルとは別に格納するように、TEMPLATE 属性の値を指定します。また、ダウンストリーム・データベースに複数のソース・データベースからのログ・ファイルが含まれている場合、各ソース・データベースからのログ・ファイルを個別に格納する必要があります。 |
LOG_ARCHIVE_DEST_STATE_
n
: ダウンストリーム・データベースのLOG_ARCHIVE_DEST_
n
パラメータに対応するこの初期化パラメータをENABLE
に設定します。
たとえば、LOG_ARCHIVE_DEST_2
初期化パラメータがダウンストリーム・データベース用に設定されている場合は、LOG_ARCHIVE_DEST_STATE_2
パラメータを次のとおり設定します。
LOG_ARCHIVE_DEST_STATE_2=ENABLE
LOG_ARCHIVE_CONFIG
: ソース・データベースとダウンストリーム・データベースのDB_UNIQUE_NAME
を含めるように、この初期化パラメータのDB_CONFIG
属性を設定します。
たとえば、ソース・データベースのDB_UNIQUE_NAME
がstm1
で、ダウンストリーム・データベースのDB_UNIQUE_NAME
がstm2
の場合は、次のパラメータを指定します。
LOG_ARCHIVE_CONFIG='DG_CONFIG=(stm1,stm2)'
デフォルトで、LOG_ARCHIVE_CONFIG
パラメータによって、データベースによるREDOの送受信が可能になります。
参照: これらの初期化パラメータの詳細は、『Oracle Databaseリファレンス』および『Oracle Data Guard概要および管理』を参照してください。 |
ダウンストリーム・データベースで、ソース・データベースとダウンストリーム・データベースのDB_UNIQUE_NAME
を含めるように、LOG_ARCHIVE_CONFIG
初期化パラメータのDB_CONFIG
属性を設定します。
たとえば、ソース・データベースのDB_UNIQUE_NAME
がstm1
で、ダウンストリーム・データベースのDB_UNIQUE_NAME
がstm2
の場合は、次のパラメータを指定します。
LOG_ARCHIVE_CONFIG='DG_CONFIG=(stm1,stm2)'
デフォルトで、LOG_ARCHIVE_CONFIG
パラメータによって、データベースによるREDOの送受信が可能になります。
手順3または手順4で、データベース上でインスタンスを実行中に初期化パラメータをリセットした場合、データベースが再起動されたときに新しい値が保持されるように、それらのパラメータを初期化パラメータ・ファイルでもリセットする必要があります。
手順3または手順4で、インスタンスの実行中に初期化パラメータをリセットせず、初期化パラメータ・ファイルでリセットした場合は、データベースを再起動します。ソース・データベースから取得データベースにREDOログ・ファイルを送信するには、ソース・データベースがオープンされている必要があります。これは、ソース・データベースのグローバル名は、ソース・データベースがオープンである場合にのみ取得データベースに送信されるためです。
特定の初期化パラメータは、Oracle Streams環境で重要です。いずれかのプロシージャを実行する前に、すべてのデータベースで初期化パラメータが適切に設定されていることを確認してください。
参照: Oracle Streams環境で重要な初期化パラメータについては、『Oracle Streams概要および管理』を参照してください。 |
DBMS_STREAMS_ADM
パッケージの次のプロシージャを使用すると、データベース・レプリケーションを構成できます。
MAINTAIN_GLOBAL
PRE_INSTANTIATION_SETUP
およびPOST_INSTANTIATION_SETUP
MAINTAIN_GLOBAL
プロシージャでは、Oracle Streamsによってサポートされていないデータベース・オブジェクトがレプリケーション環境からは自動的に除外されます。PRE_INSTANTIATION_SETUP
およびPOST_INSTANTIATION_SETUP
プロシージャでは、データベース・オブジェクトが自動的に除外されません。かわりに、これらのプロシージャを使用すると、レプリケーション環境から除外するデータベース・オブジェクトを指定できます。Oracle Streamsによってサポートされていないデータベース・オブジェクトを判別するには、DBA_STREAMS_UNSUPPORTED
データ・ディクショナリ・ビューを問い合せます。サポートされていないデータベース・オブジェクトが除外されていない場合、取得エラーが発生します。
この項の例では、PRE_INSTANTIATION_SETUP
およびPOST_INSTANTIATION_SETUP
プロシージャを使用してデータベース・レプリケーションを構成します。レプリケーション構成では、Oracle Streamsによってサポートされていないすべてのデータベースが除外されます。ソース・データベースはstm1.net
、接続先データベースはstm2.net
です。
構成について次の決定を行っていると想定します。
DDL変更をメンテナンスします。
ソース・データベースに対してローカル取得を構成します。
レプリケーション環境は両方向です。
Recovery Managerによるデータベースのインスタンス化を実行します。
プロシージャでレプリケーション環境を直接構成します。構成スクリプトは生成されません。
注意: 取得プロセスでは、SYS 、SYSTEM またはCTXSYS スキーマ内の変更は取得されません。これらのスキーマに対する変更は、この項で説明するレプリケーション環境でOracle Streamsによってメンテナンスされません。 |
参照:
|
次の手順を実行して、PRE_INSTANTIATION_SETUP
およびPOST_INSTANTIATION_SETUP
プロシージャを使用して環境を構成します。
PRE_INSTANTIATION_SETUP
プロシージャを実行する前に必要なタスクを実行します。手順については、「Oracle Streamsレプリケーションを構成する前に実行するタスク」を参照してください。
この構成について、次のタスクを実行する必要があります。
両方のデータベースでOracle Streams管理者を構成します。
ソース・データベースstm1.net
から接続先データベースstm2.net
へのデータベース・リンクを作成します。
両方のデータベースがARCHIVELOG
モードであることを確認します。
両方のデータベースの初期化パラメータが適切に設定されていることを確認します。
接続先データベースからソース・データベースへのデータベース・リンクが必要です。ただし、データベースのインスタンス化にRecovery Managerが使用されるため、インスタンス化の後にこのデータベース・リンクを作成する必要があります。レプリケーション環境が両方向であり、データベースのインスタンス化にRecovery Managerが使用されるため、このデータベース・リンクが必要です。
SQL*Plusで、Oracle Streams管理者としてソース・データベースstm1.net
に接続します。
SQL*Plusでデータベースに接続する手順については、『Oracle Database管理者ガイド』を参照してください。
PRE_INSTANTIATION_SETUP
プロシージャを実行します。
DECLARE empty_tbs DBMS_STREAMS_TABLESPACE_ADM.TABLESPACE_SET; BEGIN DBMS_STREAMS_ADM.PRE_INSTANTIATION_SETUP( maintain_mode => 'GLOBAL', tablespace_names => empty_tbs, source_database => 'stm1.net', destination_database => 'stm2.net', perform_actions => TRUE, bi_directional => TRUE, include_ddl => TRUE, start_processes => TRUE, exclude_schemas => '*', exclude_flags => DBMS_STREAMS_ADM.EXCLUDE_FLAGS_UNSUPPORTED + DBMS_STREAMS_ADM.EXCLUDE_FLAGS_DML + DBMS_STREAMS_ADM.EXCLUDE_FLAGS_DDL); END; /
start_processes
パラメータがTRUE
に設定されていることに注意してください。したがって、構成中に作成される各取得プロセスおよび適用プロセスは、自動的に起動されます。
また、exclude_schemas
およびexclude_flags
パラメータに指定されている値に注意してください。exclude_schemas
に指定されているアスタリスク(*
)は、データベース内の各スキーマの特定のデータベース・オブジェクトがレプリケーション環境から除外されることを示します。exclude_flags
パラメータに指定されている値は、サポートされていないすべてのデータベース・オブジェクトに対するDML変更およびDDL変更がレプリケーション環境から除外されることを示します。ルールは、これらのデータベース・オブジェクトを除外するために取得プロセスのネガティブ・ルール・セットに入れられます。
プロシージャはソース・データベースで実行されるため、ソース・データベースでローカル取得が構成されます。
このプロシージャでは両方向のレプリケーション環境が構成されるため、プロシージャの実行中に接続先データベースの共有データベース・オブジェクトに対するDML変更またはDDL変更を許可しないでください。
プロシージャには、apply_name
パラメータを指定しません。したがって、このパラメータには、デフォルトでNULL
が指定されます。apply_name
パラメータをNULL
に設定すると、ソース・データベースからの変更を適用する適用プロセスは、接続先データベース上に存在することができません。ソース・データベースからの変更を適用する適用プロセスが接続先データベースに存在する場合、NULL
でない値をapply_name
パラメータに指定します。
このプロシージャでエラーが発生してプロシージャが停止した場合、エラーからのリカバリまたは構成操作のロールバックを実行する方法の詳細は、「構成エラーからのリカバリ」を参照してください。
インスタンス化を実行します。第10章「インスタンス化の実行」で説明するいずれの方法でもインスタンス化を実行できます。この例では、次の手順を実行することによって、Recovery ManagerのDUPLICATE
コマンドを使用してインスタンス化を実行します。
ソース・データベースのバックアップを作成します(存在しない場合)。Recovery Managerには、複製用に有効なバックアップが必要です。この例では、stm1.net
のバックアップを作成します(存在しない場合)。
注意: Recovery ManagerのDUPLICATE コマンドを実行する際にFROM ACTIVE DATABASE オプションを使用する場合、ソース・データベースのバックアップは不要です。大規模なデータベースでは、FROM ACTIVE DATABASE オプションの実行に大量のネットワーク・リソースが必要になります。この例では、このオプションは使用しません。 |
SQL*Plusで、Oracle Streams管理者としてソース・データベースstm1.net
に接続します。
SQL*Plusでデータベースに接続する手順については、『Oracle Database管理者ガイド』を参照してください。
Recovery ManagerのDUPLICATE
コマンドに指定する終了SCNを判断します。
SET SERVEROUTPUT ON SIZE 1000000 DECLARE until_scn NUMBER; BEGIN until_scn:= DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER; DBMS_OUTPUT.PUT_LINE('Until SCN: ' || until_scn); END; /
戻された終了SCNをメモします。この番号は手順hで使用します。この例では、戻された終了SCNが45442631
であると想定します。
SQL*Plusで、管理ユーザーとしてソース・データベースstm1.net
に接続します。
現行のオンラインREDOログをアーカイブします。
ALTER SYSTEM ARCHIVE LOG CURRENT;
データベース複製のために環境を準備します。これには、接続先データベースを複製の補助インスタンスとして準備することも含まれます。手順については、『Oracle Databaseバックアップおよびリカバリ・ユーザーズ・ガイド』を参照してください。
Recovery Managerクライアントを起動し、TARGET
としてソース・データベースstm1.net
に、AUXILIARY
として接続先データベースstm2.net
に接続します。
参照: Recovery ManagerのCONNECT コマンドの詳細は、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。 |
OPEN
RESTRICTED
オプションを指定してRecovery ManagerのDUPLICATE
コマンドを実行し、接続先データベースでソース・データベースをインスタンス化します。OPEN
RESTRICTED
オプションは必須です。このオプションを指定すると、SQL文ALTER
SYSTEM
ENABLE
RESTRICTED
SESSION
を発行することによって、複製データベースで制限付きセッションを有効にできます。Recovery Managerは、複製データベースがオープンされる直前にこの文を発行します。
UNTIL
SCN
句を使用して、複製用のSCNを指定できます。この句には、手順cで判断した終了SCNを使用します。アーカイブREDOログは、指定した終了SCN値以上で使用可能である必要があります。したがって、手順eでは、終了SCNを含むREDOログをアーカイブしています。
DUPLICATE
コマンドのTO
database_name
に、複製データベースの名前を指定していることを確認してください。この例では、複製データベースはstm2.net
です。したがって、この例のDUPLICATE
コマンドにはTO
stm2.net
が含まれます。
次に、Recovery ManagerのDUPLICATE
コマンドの例を示します。
RMAN> RUN { SET UNTIL SCN 45442631; ALLOCATE AUXILIARY CHANNEL stm2 DEVICE TYPE sbt; DUPLICATE TARGET DATABASE TO stm2 NOFILENAMECHECK OPEN RESTRICTED; }
参照: Recovery ManagerのDUPLICATE コマンドの詳細は、『Oracle Databaseバックアップおよびリカバリ・リファレンス』を参照してください。 |
SQL*Plusで、管理ユーザーとして接続先データベースに接続します。
グローバル名を変更します。Recovery Managerによるデータベースのインスタンス化を実行すると、接続先データベースはソース・データベースと同じグローバル名を持ちます。次の文を使用して、接続先データベースのグローバル名を元の名前に戻します。
ALTER DATABASE RENAME GLOBAL_NAME TO stm2.net;
SQL*Plusで、Oracle Streams管理者として接続先データベースstm2.net
に接続します。
ソース・データベースからクローニングされた、ソース・データベースから接続先データベースへのデータベース・リンクを削除します。
DROP DATABASE LINK stm2.net;
接続先データベースにOracle Streams管理者として接続したままで、接続先データベースからソース・データベースにデータベース・リンクを作成します。
CREATE DATABASE LINK stm1.net CONNECT TO strmadmin
IDENTIFIED BY password USING 'stm1.net';
このデータベース・リンクが必要な理由については、手順1を参照してください。
SQL*Plusで、Oracle Streams管理者としてソース・データベースstm1.net
に接続します。
POST_INSTANTIATION_SETUP
プロシージャを実行します。
DECLARE empty_tbs DBMS_STREAMS_TABLESPACE_ADM.TABLESPACE_SET; BEGIN DBMS_STREAMS_ADM.POST_INSTANTIATION_SETUP( maintain_mode => 'GLOBAL', tablespace_names => empty_tbs, source_database => 'stm1.net', destination_database => 'stm2.net', perform_actions => TRUE, bi_directional => TRUE, include_ddl => TRUE, start_processes => TRUE, instantiation_scn => 45442630, exclude_schemas => '*', exclude_flags => DBMS_STREAMS_ADM.EXCLUDE_FLAGS_UNSUPPORTED + DBMS_STREAMS_ADM.EXCLUDE_FLAGS_DML + DBMS_STREAMS_ADM.EXCLUDE_FLAGS_DDL); END; /
PRE_INSTANTIATION_SETUP
およびPOST_INSTANTIATION_SETUP
プロシージャの両方に指定されたパラメータ値が一致する必要があります。ただし、perform_actions
、script_name
、script_directory_object
およびstart_processes
は除きます。
また、instantiation_scn
パラメータが45442630
に設定されていることに注意してください。Recovery ManagerのDUPLICATE
コマンドを実行すると、UNTIL
SCN
句で指定したSCN値より1つ少ない値まで、データベースが複製されます。したがって、手順4hでDUPLICATE
コマンドを実行した際に指定した終了SCN値から1を引く必要があります。この例では、終了SCNを45442631
に設定しています。したがって、instantiation_scn
パラメータは45442631 - 1の45442630
に設定する必要があります。
インスタンス化中に接続先データベースの共有データベース・オブジェクトにインスタンス化SCNが設定されている場合、instantiation_scn
パラメータをNULL
に設定する必要があります。たとえば、全データベースのエクスポート/インポート中にインスタンス化SCNが設定される場合があります。
このプロシージャでは両方向のレプリケーション環境が構成されるため、プロシージャの実行中に接続先データベースの共有データベース・オブジェクトに対するDML変更またはDDL変更を許可しないでください。
このプロシージャでエラーが発生してプロシージャが停止した場合、エラーからのリカバリまたは構成操作のロールバックを実行する方法の詳細は、「構成エラーからのリカバリ」を参照してください。
SQL*Plusで接続先データベースに管理ユーザーとして接続し、ALTER
SYSTEM
文を実行してRESTRICTED
SESSION
を無効化します。
ALTER SYSTEM DISABLE RESTRICTED SESSION;
必要に応じて、共有データベース・オブジェクトの競合解消を構成します。
通常、両方向のレプリケーション環境では、競合が発生する可能性があります。PRE_INSTANTIATION_SETUP
およびPOST_INSTANTIATION_SETUP
プロシージャによって作成された環境で競合が発生する可能性がある場合は、共有データベース・オブジェクトに対する変更をユーザーに許可する前に競合解消を構成します。
この例で構成された両方向のレプリケーション環境には、次の特性があります。
両方のデータベースでデータベース・サプリメンタル・ロギングが構成されています。
stm1.net
データベースには、システム生成名を持つ2つのキューおよびキュー表があります。1つのキューはローカル取得プロセス用で、もう1つのキューは適用プロセス用です。
stm2.net
データベースには、システム生成名を持つ2つのキューおよびキュー表があります。1つのキューはローカル取得プロセス用で、もう1つのキューは適用プロセス用です。
stm1.net
データベースで、システム生成名を持つ取得プロセスが、Oracle Streamsによってサポートされているデータベース内のすべてのデータベース・オブジェクトに対するDML変更およびDDL変更を取得します。
stm2.net
データベースで、システム生成名を持つ取得プロセスが、Oracle Streamsによってサポートされているデータベース内のすべてのデータベース・オブジェクトに対するDML変更およびDDL変更を取得します。
stm1.net
データベースで実行されているシステム生成名を持つ伝播が、stm1.net
データベースのキューからstm2.net
データベースのキューに取得された変更を伝播します。
stm2.net
データベースで実行されているシステム生成名を持つ伝播が、stm2.net
データベースのキューからstm1.net
データベースのキューに取得された変更を伝播します。
stm1.net
データベースで、システム生成名を持つ適用プロセスが、キューから変更をデキューしてこれらの変更をデータベース・オブジェクトに適用します。
stm2.net
データベースで、システム生成名を持つ適用プロセスが、キューから変更をデキューしてこれらの変更をデータベース・オブジェクトに適用します。
タグを使用して、変更の循環が回避されます。具体的には、適用プロセスによって適用される変更のREDOレコードにタグが含まれるように、各適用プロセスで適用タグが使用されます。各適用プロセスは、レプリケーション環境で一意の適用タグを使用します。各伝播は、同じデータベースで実行されている適用プロセスのタグを持つ変更を廃棄します。
DBMS_STREAMS_ADM
パッケージの次のプロシージャを使用すると、表領域レプリケーションを構成できます。
MAINTAIN_SIMPLE_TTS
MAINTAIN_TTS
PRE_INSTANTIATION_SETUP
およびPOST_INSTANTIATION_SETUP
MAINTAIN_SIMPLE_TTS
プロシージャを使用すると、単一の表領域にOracle Streamsレプリケーションを構成できます。また、MAINTAIN_TTS
プロシージャを使用すると、自己完結型の表領域セットにOracle Streamsレプリケーションを構成できます。これらのプロシージャでは、トランスポータブル表領域、データ・ポンプ、DBMS_STREAMS_TABLESPACE_ADM
パッケージおよびDBMS_FILE_TRANSFER
パッケージを使用して、環境が構成されます。
自己完結型の表領域には、その表領域の外部を指す表領域からの参照は含まれません。たとえば、表領域の索引が異なる表領域の表に対する索引である場合、その表領域は自己完結型ではありません。 単一の表領域は、データ・ファイルを1つのみ使用する自己完結型の表領域です。表領域セットに複数の表領域が存在する場合、自己完結型の表領域セットには、その表領域セットの外部を指す表領域セット内からの参照は含まれません。
この項のプロシージャでは、構成する表領域が、ソース・データベースから接続先データベースへのレプリケーションにクローニングされます。MAINTAIN_SIMPLE_TTS
プロシージャでは、DBMS_STREAMS_TABLESPACE_ADM
パッケージのCLONE_SIMPLE_TABLESPACE
プロシージャが使用されます。MAINTAIN_TTS
プロシージャでは、DBMS_STREAMS_TABLESPACE_ADM
パッケージのCLONE_TABLESPACES
プロシージャが使用されます。表領域がクローニングされると、この表領域はクローン操作が完了するまで自動的に読取り専用になります。
この項の例では、MAINTAIN_TTS
プロシージャを使用して、Oracle Streamsを使用して次の表領域をメンテナンスするOracle Streamsレプリケーション環境を構成します。
tbs1
tbs2
ソース・データベースはstm1.net
、接続先データベースはstm2.net
です。
構成について次の決定を行っていると想定します。
これらの表領域およびこれらの表領域内のデータベース・オブジェクトに対するDDL変更がメンテナンスされます。
接続先データベース(stm2.net
)で実行されているダウンストリーム取得プロセスは、ソース・データベース(stm1.net
)に対する変更を取得します。
レプリケーション環境は両方向です。
MAINTAIN_TTS
プロシージャでレプリケーション環境を直接構成します。構成スクリプトは生成されません。
また、この例では、次のことを想定しています。
表領域tbs1
およびtbs2
が、ソース・データベースstm1.net
に自己完結型の表領域セットを構成しています。
表領域セットのデータ・ファイルは、いずれもソース・データベースstm1.net
の/orc/dbs
ディレクトリに存在します。
stm2.net
データベースには現在、表領域セットは含まれていません。
MAINTAIN_SIMPLE_TTS
およびMAINTAIN_TTS
プロシージャでは、各取得プロセスおよび適用プロセスのネガティブ・ルール・セットにルールを追加することによって、Oracle Streamsによってサポートされていないデータベース・オブジェクトがレプリケーション環境から自動的に除外されます。PRE_INSTANTIATION_SETUP
およびPOST_INSTANTIATION_SETUP
プロシージャを使用すると、レプリケーション環境から除外するデータベース・オブジェクトを指定できます。
Oracle Streamsによってサポートされていないデータベース・オブジェクトを判別するには、DBA_STREAMS_UNSUPPORTED
データ・ディクショナリ・ビューを問い合せます。サポートされていないデータベース・オブジェクトが除外されていない場合、取得エラーが発生します。
参照: Oracle Streamsによってサポートされていないデータベース・オブジェクトを判別する手順については、『Oracle Streamsレプリケーション管理者ガイド』を参照してください。 |
MAINTAIN_TTS
プロシージャを使用して環境を構成するには、次の手順を実行します。
MAINTAIN_TTS
プロシージャを実行する前に必要なタスクを実行します。手順については、「Oracle Streamsレプリケーションを構成する前に実行するタスク」を参照してください。
この構成について、次のタスクを実行する必要があります。
両方のデータベースでOracle Streams管理者を構成します。
ソース・データベースstm1.net
から接続先データベースstm2.net
へのデータベース・リンクを作成します。
レプリケーション環境が両方向であり、接続先データベースでダウンストリーム取得が構成されているため、接続先データベースstm2.net
からソース・データベースstm1.net
へのデータベース・リンクを作成します。
次に示す必要なディレクトリ・オブジェクトを作成します。
ソース・データベースのソース・ディレクトリ・オブジェクト。この例では、このディレクトリ・オブジェクトはSOURCE_DIRECTORY
であると想定しています。
接続先データベースの接続先ディレクトリ・オブジェクト。この例では、このディレクトリ・オブジェクトはDEST_DIRECTORY
であると想定しています。
両方のデータベースがARCHIVELOG
モードであることを確認します。
接続先データベースをソース・データベースに対する変更の取得データベースに使用するため、ソース・データベースstm1.net
から接続先データベースstm2.net
へのログ・ファイルのコピーを構成します。
両方のデータベースの初期化パラメータが適切に設定されていることを確認します。
SQL*Plusで、Oracle Streams管理者として表領域セットを含むデータベースに接続します。この例では、stm1.net
データベースに接続します。
SQL*Plusでデータベースに接続する手順については、『Oracle Database管理者ガイド』を参照してください。
表領域セットの表領域のデータ・ファイルを含むディレクトリのディレクトリ・オブジェクトを作成します。たとえば、次の文を実行すると、/orc/dbs
ディレクトリに対応するディレクトリ・オブジェクトtbs_directory
が作成されます。
CREATE DIRECTORY tbs_directory AS '/orc/dbs';
データ・ファイルが複数のディレクトリに存在する場合、ディレクトリ・オブジェクトはそれらのディレクトリごとに存在する必要があります。また、手順5でMAINTAIN_TTS
プロシージャを実行するユーザーが、それらのディレクトリ・オブジェクトに対するREAD
権限を持っている必要があります。この例では、Oracle Streams管理者がディレクトリ・オブジェクトを作成するため、この権限を持っていることになります。
SQL*Plusで、Oracle Streams管理者として接続先データベースstm2.net
に接続します。
MAINTAIN_TTS
プロシージャを実行します。
DECLARE t_names DBMS_STREAMS_TABLESPACE_ADM.TABLESPACE_SET; BEGIN -- Tablespace names t_names(1) := 'TBS1'; t_names(2) := 'TBS2'; DBMS_STREAMS_ADM.MAINTAIN_TTS( tablespace_names => t_names, source_directory_object => 'SOURCE_DIRECTORY', destination_directory_object => 'DEST_DIRECTORY', source_database => 'stm1.net', destination_database => 'stm2.net', perform_actions => TRUE, bi_directional => TRUE, include_ddl => TRUE); END; /
このプロシージャが完了すると、両方向のOracle Streamsレプリケーション環境が構成されます。このプロシージャでは、作成するANYDATA
キュー、取得プロセス、伝播および適用プロセスの名前が自動的に生成されます。これらのコンポーネントにシステム生成名を使用しない場合、MAINTAIN_TTS
プロシージャに使用可能な追加のパラメータを使用して名前を指定できます。また、このプロシージャによって、キュー、取得プロセス、伝播および適用プロセスが起動されます。
このプロシージャは接続先データベースで実行されるため、接続先データベースで、ソース・データベースに対する変更のダウンストリーム取得が構成されます。
プロシージャには、apply_name
パラメータを指定しません。したがって、このパラメータには、デフォルトでNULL
が指定されます。apply_name
パラメータをNULL
に設定すると、ソース・データベースからの変更を適用する適用プロセスは、接続先データベース上に存在することができません。ソース・データベースからの変更を適用する適用プロセスが接続先データベースに存在する場合、NULL
でない値をapply_name
パラメータに指定します。
このプロシージャでエラーが発生してプロシージャが停止した場合、エラーからのリカバリまたは構成操作のロールバックを実行する方法の詳細は、「構成エラーからのリカバリ」を参照してください。
必要に応じて、表領域セットのデータベース・オブジェクトの競合解消を構成します。
通常、両方向のレプリケーション環境では、競合が発生する可能性があります。MAINTAIN_TTS
プロシージャで作成した環境で競合が発生する可能性がある場合は、競合解消を構成してから、表領域セットのオブジェクトに対する変更をユーザーに許可します。
構成された両方向のレプリケーション環境には、次の特性があります。
両方のデータベースで共有データベース・オブジェクトのサプリメンタル・ロギングが構成されています。
stm1.net
データベースには、システム生成名を持つキューおよびキュー表があります。このキューは適用プロセス用です。
stm2.net
データベースには、システム生成名を持つ3つのキューおよびキュー表があります。1つのキューはダウンストリーム取得プロセス用、1つのキューはローカル取得プロセス用、もう1つのキューは適用プロセス用です。
stm2.net
データベースで、システム生成名を持つダウンストリーム取得プロセスが、ソース・データベースに対するDML変更およびDDL変更を取得します。具体的には、このダウンストリーム取得プロセスは、tbs1
およびtbs2
表領域内の表に対するDML変更、およびこれらの表領域およびそのデータベース・オブジェクトに対するDDL変更を取得します。
stm2.net
データベースで、システム生成名を持つローカル取得プロセスが、接続先データベースに対するDML変更およびDDL変更を取得します。具体的には、このローカル取得プロセスは、tbs1
およびtbs2
表領域の表に対するDML変更、およびこれらの表領域およびそのデータベース・オブジェクトに対するDDL変更を取得します。
システム生成名を持つstm2.net
データベースで実行されている伝播が、ダウンストリーム取得プロセス用のキューからstm2.net
データベース内の適用プロセス用のキューに、ダウンストリーム取得プロセスによって取得された変更を伝播します。
システム生成名を持つstm2.net
データベースで実行されている伝播が、ローカル取得プロセス用のキューからstm1.net
データベースのキューに、ローカル取得プロセスによって取得された変更を伝播します。
stm1.net
データベースで、システム生成名を持つ適用プロセスが、キューから変更をデキューしてこれらの変更を共有データベース・オブジェクトに適用します。
stm2.net
データベースで、システム生成名を持つ適用プロセスが、キューから変更をデキューしてこれらの変更を共有データベース・オブジェクトに適用します。
タグを使用して、変更の循環が回避されます。具体的には、適用プロセスによって適用される変更のREDOレコードにタグが含まれるように、各適用プロセスで適用タグが使用されます。各適用プロセスは、レプリケーション環境で一意の適用タグを使用します。各伝播は、同じデータベースで実行されている適用プロセスのタグを持つ変更を廃棄します。
DBMS_STREAMS_ADM
パッケージのMAINTAIN_SCHEMAS
を使用すると、スキーマ・レプリケーションを構成できます。この項の例では、このプロシージャを使用して、hr
スキーマをメンテナンスするOracle Streamsレプリケーション環境を構成します。ソース・データベースはstm1.net
、接続先データベースはstm2.net
です。
構成について次の決定を行っていると想定します。
hr
スキーマおよびhr
スキーマ内のデータベース・オブジェクトに対するDDL変更がメンテナンスされます。
レプリケーション環境は両方向です。
第3のデータベースstm3.net
で実行されているダウンストリーム取得プロセスがソース・データベース(stm1.net
)に対する変更を取得し、stm3.net
の伝播が取得されたこれらの変更を接続先データベース(stm2.net
)に伝播します。
データ・ポンプ・エクスポート・ダンプ・ファイルによるインスタンス化が実行されます。
MAINTAIN_SCHEMAS
プロシージャでレプリケーション環境を直接構成します。構成スクリプトは生成されません。
MAINTAIN_SCHEMAS
プロシージャでは、各取得プロセスおよび適用プロセスのネガティブ・ルール・セットにルールを追加することによって、Oracle Streamsによってサポートされていないデータベース・オブジェクトがレプリケーション環境から自動的に除外されます。Oracle Streamsによってサポートされていないデータベース・オブジェクトを判別するには、DBA_STREAMS_UNSUPPORTED
データ・ディクショナリ・ビューを問い合せます。サポートされていないデータベース・オブジェクトが除外されていない場合、取得エラーが発生します。
参照:
|
MAINTAIN_SCHEMAS
プロシージャを使用して環境を構成するには、次の手順を実行します。
MAINTAIN_SCHEMAS
プロシージャを実行する前に必要なタスクを実行します。手順については、「Oracle Streamsレプリケーションを構成する前に実行するタスク」を参照してください。
この構成について、次のタスクを実行する必要があります。
3つすべてのデータベースでOracle Streams管理者を構成します。
ソース・データベースstm1.net
から接続先データベースstm2.net
へのデータベース・リンクを作成します。
ダウンストリーム取得が第3のデータベースで構成されるため、第3のデータベースstm3.net
からソース・データベースstm1.net
へのデータベース・リンクを作成します。
ダウンストリーム取得が第3のデータベースで構成されるため、第3のデータベースstm3.net
から接続先データベースstm2.net
へのデータベース・リンクを作成します。
レプリケーション環境は両方向になるため、接続先データベースstm2.net
からソース・データベースstm1.net
へのデータベース・リンクを作成します。
次に示す必要なディレクトリ・オブジェクトを作成します。
ソース・データベースのソース・ディレクトリ・オブジェクト。この例では、このディレクトリ・オブジェクトはSOURCE_DIRECTORY
であると想定しています。
接続先データベースの接続先ディレクトリ・オブジェクト。この例では、このディレクトリ・オブジェクトはDEST_DIRECTORY
であると想定しています。
ソース・データベースおよび接続先データベースがARCHIVELOG
モードであることを確認します。
第3のデータベース(stm3.net
)をソース・データベースに対する変更の取得データベースに使用するため、ソース・データベースstm1.net
から第3のデータベースstm3.net
へのログ・ファイルのコピーを構成します。アーカイブ・ログ・ダウンストリームの取得プロセスのためのログ・ファイルのコピーの構成
すべてのデータベースの初期化パラメータが適切に設定されていることを確認します。
SQL*Plusで、Oracle Streams管理者として第3のデータベースstm3.net
に接続します。
SQL*Plusでデータベースに接続する手順については、『Oracle Database管理者ガイド』を参照してください。
MAINTAIN_SCHEMAS
プロシージャを実行します。
BEGIN DBMS_STREAMS_ADM.MAINTAIN_SCHEMAS( schema_names => 'hr', source_directory_object => 'SOURCE_DIRECTORY', destination_directory_object => 'DEST_DIRECTORY', source_database => 'stm1.net', destination_database => 'stm2.net', perform_actions => TRUE, dump_file_name => 'export_hr.dmp', capture_queue_table => 'rep_capture_queue_table', capture_queue_name => 'rep_capture_queue', capture_queue_user => NULL, apply_queue_table => 'rep_dest_queue_table', apply_queue_name => 'rep_dest_queue', apply_queue_user => NULL, capture_name => 'capture_hr', propagation_name => 'prop_hr', apply_name => 'apply_hr', log_file => 'export_hr.clg', bi_directional => TRUE, include_ddl => TRUE, instantiation => DBMS_STREAMS_ADM.INSTANTIATION_SCHEMA); END; /
このプロシージャでは両方向のレプリケーション環境が構成されるため、プロシージャの実行中に接続先データベースの共有データベース・オブジェクトに対するDML変更またはDDL変更を許可しないでください。
このプロシージャは第3のデータベースで実行されるため、第3のデータベースで、ソース・データベースに対する変更のダウンストリーム取得が構成されます。
このプロシージャでエラーが発生してプロシージャが停止した場合、エラーからのリカバリまたは構成操作のロールバックを実行する方法の詳細は、「構成エラーからのリカバリ」を参照してください。
必要に応じて、共有データベース・オブジェクトの競合解消を構成します。
通常、両方向のレプリケーション環境では、競合が発生する可能性があります。MAINTAIN_SCHEMAS
プロシージャで作成した環境で競合が発生する可能性がある場合は、競合解消を構成してから、共有データベース・オブジェクトに対する変更をユーザーに許可します。
この例で構成された両方向のレプリケーション環境には、次の特性があります。
ソース・データベースおよび接続先データベースで共有データベース・オブジェクトのサプリメンタル・ロギングが構成されています。
stm1.net
データベースには、キュー表rep_dest_queue_table
を使用するキューrep_dest_queue
があります。このキューは適用プロセス用です。
stm2.net
データベースには、キュー表rep_capture_queue_table
を使用するキューrep_capture_queue
があります。このキューはローカル取得プロセス用です。
stm2.net
データベースには、キュー表rep_dest_queue_table
を使用するキューrep_dest_queue
があります。このキューは適用プロセス用です。
stm3.net
データベースには、キュー表rep_capture_queue_table
を使用するキューrep_capture_queue
があります。このキューはダウンストリーム取得プロセス用です。
stm3.net
データベースで、アーカイブ・ログ・ダウンストリームの取得プロセスcapture_hr
が、hr
スキーマおよびソース・データベースのスキーマ内のデータベース・オブジェクトに対するDML変更およびDDL変更を取得します。
stm2.net
データベースで、ローカル取得プロセスcapture_hr
が、hr
スキーマおよび接続先データベースのスキーマ内のデータベース・オブジェクトに対するDML変更およびDDL変更を取得します。
stm3.net
データベースで実行されている伝播prop_hr
が、stm3.net
データベースのキューからstm2.net
データベースのキューに取得された変更を伝播します。
stm2.net
データベースで実行されている伝播prop_hr
が、stm2.net
データベースのキューからstm1.net
データベースのキューに取得された変更を伝播します。
stm1.net
データベースで、適用プロセスapply_hr
が、rep_dest_queue
から変更をデキューしてこれらの変更をデータベース・オブジェクトに適用します。
stm2.net
データベースで、適用プロセスapply_hr
が、rep_dest_queue
から変更をデキューしてこれらの変更をデータベース・オブジェクトに適用します。
タグを使用して、変更の循環が回避されます。具体的には、適用プロセスによって適用される変更のREDOレコードにタグが含まれるように、各適用プロセスで適用タグが使用されます。各適用プロセスは、レプリケーション環境で一意の適用タグを使用します。各伝播は、同じデータベースで実行されている適用プロセスのタグを持つ変更を廃棄します。
DBMS_STREAMS_ADM
パッケージのMAINTAIN_TABLES
を使用すると、表レプリケーションを構成できます。この項の例では、このプロシージャを使用して、hr
スキーマ内の表をメンテナンスするOracle Streamsレプリケーション環境を構成します。ソース・データベースはstm1.net
、接続先データベースはstm2.net
です。
構成について次の決定を行っていると想定します。
レプリケーション環境で、hr
スキーマ内の次の表に対するDDL変更がメンテナンスされるようにする必要があります。
departments
employees
レプリケーション環境で、hr
スキーマ内の次の表に対するDDL変更がメンテナンスされないようにする必要があります。
countries
regions
locations
jobs
job_history
ソース・データベースに対してローカル取得を構成します。
レプリケーション環境は単一ソースで、両方向ではありません。
データ・ポンプ・ネットワーク・インポートによるインスタンス化が実行されます。
MAINTAIN_TABLES
プロシージャでレプリケーション環境を直接構成しません。かわりに、構成スクリプトを生成し、departments
およびemployees
表に対するDDL変更がメンテナンスされるようにこのスクリプトを変更します。
Oracle Streamsによってサポートされていない表は、レプリケートしないようにしてください。
参照:
|
MAINTAIN_TABLES
プロシージャを使用して環境を構成するには、次の手順を実行します。
MAINTAIN_TABLES
プロシージャを実行する前に必要なタスクを実行します。手順については、「Oracle Streamsレプリケーションを構成する前に実行するタスク」を参照してください。
この構成について、次のタスクを実行する必要があります。
両方のデータベースでOracle Streams管理者を構成します。
ソース・データベースstm1.net
から接続先データベースstm2.net
へのデータベース・リンクを作成します。
MAINTAIN_TABLES
プロシージャではデータ・ポンプ・ネットワーク・インポートによるインスタンス化が実行されるため、接続先データベースstm2.net
からソース・データベースstm1.net
へのデータベース・リンクを作成します。
ソース・データベースでスクリプト・ディレクトリ・オブジェクトを作成します。この例では、このディレクトリ・オブジェクトはSCRIPT_DIRECTORY
であると想定しています。
ソース・データベースstm1.net
がARCHIVELOG
モードであることを確認します。
両方のデータベースの初期化パラメータが適切に設定されていることを確認します。
SQL*Plusで、Oracle Streams管理者としてソース・データベースstm1.net
に接続します。
SQL*Plusでデータベースに接続する手順については、『Oracle Database管理者ガイド』を参照してください。
MAINTAIN_TABLES
プロシージャを実行します。
DECLARE tables DBMS_UTILITY.UNCL_ARRAY; BEGIN tables(1) := 'hr.departments'; tables(2) := 'hr.employees'; tables(3) := 'hr.countries'; tables(4) := 'hr.regions'; tables(5) := 'hr.locations'; tables(6) := 'hr.jobs'; tables(7) := 'hr.job_history'; DBMS_STREAMS_ADM.MAINTAIN_TABLES( table_names => tables, source_directory_object => NULL, destination_directory_object => NULL, source_database => 'stm1.net', destination_database => 'stm2.net', perform_actions => FALSE, script_name => 'configure_rep.sql', script_directory_object => 'SCRIPT_DIRECTORY', bi_directional => FALSE, include_ddl => FALSE, instantiation => DBMS_STREAMS_ADM.INSTANTIATION_TABLE_NETWORK); END; /
プロシージャによって生成されたconfigure_rep.sql
スクリプトでは、プロシージャのコールで指定されていないパラメータにデフォルト値が使用されます。スクリプトでは、作成するANYDATA
キュー、キュー表、取得プロセス、伝播および適用プロセスにシステム生成名が使用されます。MAINTAIN_TABLES
プロシージャに使用可能な追加のパラメータを使用して、異なる名前を指定することもできます。include_ddl
パラメータがFALSE
に設定されていることに注意してください。したがって、このスクリプトでは、表に対するDDL変更をメンテナンスするようにレプリケーション環境が構成されません。
プロシージャには、apply_name
パラメータを指定しません。したがって、このパラメータには、デフォルトでNULL
が指定されます。apply_name
パラメータをNULL
に設定すると、ソース・データベースからの変更を適用する適用プロセスは、接続先データベース上に存在することができません。ソース・データベースからの変更を適用する適用プロセスが接続先データベースに存在する場合、NULL
でない値をapply_name
パラメータに指定します。
configure_rep.sql
スクリプトを変更します。
ソース・データベースが実行されているコンピュータ・システムのSCRIPT_DIRECTORY
ディレクトリ・オブジェクトに対応するディレクトリにナビゲートします。
テキスト・エディタでconfigure_rep.sql
スクリプトをオープンします。このスクリプトを変更する前に、このスクリプトをバックアップすることを検討してください。
スクリプトで、hr.departments
およびhr.employees
表のルールを作成するADD_TABLE_RULES
およびADD_TABLE_PROPAGATION_RULES
プロシージャのコールを検索します。たとえば、取得プロセスのプロシージャ・コールは次のようになります。
dbms_streams_adm.add_table_rules( table_name => '"HR"."DEPARTMENTS"', streams_type => 'CAPTURE', streams_name => '"STM1$CAP"', queue_name => '"STRMADMIN"."STM1$CAPQ"', include_dml => TRUE, include_ddl => FALSE, include_tagged_lcr => TRUE, source_database => 'STM1.NET', inclusion_rule => TRUE, and_condition => get_compatible); dbms_streams_adm.add_table_rules( table_name => '"HR"."EMPLOYEES"', streams_type => 'CAPTURE', streams_name => '"STM1$CAP"', queue_name => '"STRMADMIN"."STM1$CAPQ"', include_dml => TRUE, include_ddl => FALSE, include_tagged_lcr => TRUE, source_database => 'STM1.NET', inclusion_rule => TRUE, and_condition => get_compatible);
手順cで検索したプロシージャ・コールで、include_ddl
パラメータの設定をTRUE
に変更します。たとえば、変更後の取得プロセスのプロシージャ・コールは次のようになります。
dbms_streams_adm.add_table_rules( table_name => '"HR"."DEPARTMENTS"', streams_type => 'CAPTURE', streams_name => '"STM1$CAP"', queue_name => '"STRMADMIN"."STM1$CAPQ"', include_dml => TRUE, include_ddl => TRUE, include_tagged_lcr => TRUE, source_database => 'STM1.NET', inclusion_rule => TRUE, and_condition => get_compatible); dbms_streams_adm.add_table_rules( table_name => '"HR"."EMPLOYEES"', streams_type => 'CAPTURE', streams_name => '"STM1$CAP"', queue_name => '"STRMADMIN"."STM1$CAPQ"', include_dml => TRUE, include_ddl => TRUE, include_tagged_lcr => TRUE, source_database => 'STM1.NET', inclusion_rule => TRUE, and_condition => get_compatible);
すべての取得プロセス、伝播および適用プロセスのプロシージャ・コールを変更する必要があります。
configure_rep.sql
スクリプトを保存してクローズします。
SQL*Plusで、Oracle Streams管理者としてソース・データベースstm1.net
に接続します。
ソース・データベースにOracle Streams管理者として接続し、構成スクリプトを実行します。
SET ECHO ON SPOOL configure_rep.out @configure_rep.sql
スクリプトを実行すると、データベース名およびOracle Streams管理者に関する情報を入力するように求められます。この構成スクリプトが完了すると、単一ソースのOracle Streamsレプリケーション環境が構成されます。また、このスクリプトによって、キュー、取得プロセス、伝播および適用プロセスが起動されます。
構成された単一ソース・レプリケーション環境には、次の特性があります。
ソース・データベースで、共有データベース・オブジェクトのサプリメンタル・ロギングが構成されています。
ソース・データベースstm1.net
には、システム生成名を持つキューおよびキュー表があります。
接続先データベースstm2.ne
には、システム生成名を持つキューおよびキュー表があります。
ソース・データベースで、システム生成名を持つ取得プロセスが、hr
スキーマ内のすべての表に対するDML変更、およびhr.departments
およびhr.employees
表に対するDDL変更を取得します。
ソース・データベースで実行されているシステム生成名を持つ伝播が、ソース・データベースのキューから接続先データベースのキューに取得された変更を伝播します。
接続先データベースで、システム生成名を持つ適用プロセスが、キューから変更をデキューしてこれらの変更を接続先データベースの表に適用します。