ヘッダーをスキップ
Oracle Streamsレプリケーション管理者ガイド
11g リリース1(11.1)
E05776-02
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

16 取得のベスト・プラクティス

この章では、Oracle Streamsレプリケーション環境の取得プロセスまたは同期取得を使用して変更を取得するベスト・プラクティスについて説明します。この章の内容は次のとおりです。

取得プロセスのソース・データベース構成のベスト・プラクティス

ソース・データベースとは、取得プロセスによって取得される変更がREDOログで生成されるデータベースです。これらの変更は、ローカルの取得プロセスがソース・データベースで取得するか、またはダウンストリームの取得プロセスがリモート・データベースで取得する場合があります。次のベスト・プラクティスは、ローカルの取得プロセスを使用するソース・データベースおよびダウンストリームの取得プロセスを使用するソース・データベースを含む、取得プロセスのすべてのソース・データベースに関連します。

Oracle Streams環境内の各ソース・データベースでのアーカイブ・ロギングの有効化

各ソース・データベースがARCHIVELOGモードで実行していることを確認します。ダウンストリーム取得環境の場合、ソースREDOログが作成されるデータベースは、ARCHIVELOGモードで実行する必要があります。


参照:

『Oracle Database管理者ガイド』

Oracle Streams環境内の各ソース・データベースでのサプリメンタル・ロギングの追加

各ソース・データベースで、必要なサプリメンタル・ロギングが追加されたことを確認します。取得プロセスが表に対する変更を取得する場合、その表にはサプリメンタル・ロギングが必要です。Oracle Database 10g リリース2以上では、インスタンス化のために表が準備されると、表の主キー列、一意索引列、外部キー列にサプリメンタル・ロギングが自動的に追加されます。Oracle Streamsを使用してデータベース・オブジェクトを保守し、ルールを追加するためのDBMS_STREAMS_ADMパッケージのプロシージャでは、インスタンス化のために自動的にオブジェクトが準備されます。ダウンストリーム取得の場合、ソースREDOログが生成されるデータベースでサプリメンタル・ロギングを追加する必要があります。

各レプリケート表の主キー列、一意索引列、外部キー列などの接続先データベースのすべての索引列は、ソース・データベースでサプリメンタル・ロギングを行う必要があります。主キー列は無条件でログに記録する必要がありますが、一意索引列および外部キー列は、条件付きでログに記録されます。表の追加の列にサプリメンタル・ロギングが必要になる場合があります。たとえば、ルールベースの変換で指定されたすべての列、またはDMLハンドラ内で使用されるすべての列は、ソース・データベースで無条件にログに記録されます。これらの列に対するサプリメンタル・ロギングは、データベース管理者によって明示的に構成される必要があります。


参照:


Oracle Streams環境内の各ソース・データベースでのハートビート表の構成

ハートビート表を使用して、Oracle Streamsレプリケーション環境内に変更がレプリケートされているかを確認できます。特に、取得データベースが定期的に更新されているか確認するために、取得データベースでDBA_CAPTUREデータ・ディクショナリ・ビューのAPPLIED_SCN値を確認できます。たとえレプリケートされた変更が少なくても、レプリケーション環境が適切に動作していることを確認できるため、アクティビティ・レートが低いデータベースにハートビート表は、特に有効です。

Oracle Streams取得プロセスは、10MBのREDOが生成されるごとにチェックポイントを要求します。アクティブなトランザクションがある場合、チェックポイント中にOracle Streamsのメタデータがメンテナンスされます。ハートビート表を実装すると、メタデータが頻繁に更新される機会が追加され、ソース・データベースで定期的に発生するオープン・トランザクションが存在することを確認できます。さらに、ハートビート表によってOracle Streamsレプリケーション環境の状態に関して迅速なフィードバックがデータベース管理者に提供されます。

ハートビート表を実装するには、次の手順を実行します。

  1. 日付列またはタイムスタンプ列およびソース・データベースのグローバル名を含むソース・データベースで表を作成します。

  2. 接続先データベースで表をインスタンス化します。複数の接続先データベースが存在する場合、各接続先データベースでハートビート表をインスタンス化します。

  3. ソース・データベースに対する変更を取得する取得プロセスのポジティブ・ルール・セットにルールを追加します。ルールは、取得プロセスに対し、ハートビート表に対する変更を取得するように指示します。

  4. ソース・データベースから接続先データベースに変更を伝播する伝播のポジティブ・ルール・セットにルールを追加します。ルールは、伝播に対し、ハートビート表のLCRを伝播するように指示します。複数の伝播が存在する場合、各伝播のルール・セットにルールを追加します。環境で有向ネットワークを使用する場合、いくつかのデータベースで伝播にルールを追加する必要があります。

  5. ソース・データベースで発生した変更を適用する適用プロセスのポジティブ・ルール・セットにルールを追加します。ルールは、適用プロセスに対し、ハートビート表に対する変更を適用するように指示します。ソース・データベースで発生した変更を適用する複数のデータベースで複数の適用プロセスが存在する場合、各適用プロセスにルールを追加します。

  6. ソース・データベースでハートビート表が定期的に更新されるように自動化ジョブを構成します。たとえば、表は1分ごとに更新されます。

  7. ソース・データベースでのハートビート表に対する変更が接続先データベースにレプリケートされていることを確認するために、Oracle Streamsレプリケーション環境を監視します。

取得プロセスの構成のベスト・プラクティス

ここでは、取得プロセスを構成するベスト・プラクティスについて説明します。

取得プロセスの並列性の設定

各取得プロセスの並列性を設定するには、DBMS_CAPTURE_ADM.SET_PARAMETERプロシージャのparallelismパラメータを指定します。parallelismパラメータによって、変更のためにREDOログを同時にマイニングするプロセスの数を制御します。

parallelism取得プロセス・パラメータのデフォルト設定は1で、デフォルトのparallelismの設定は、ほとんどの取得プロセスの構成に適しています。parallelism取得プロセス・パラメータを設定する際に、PROCESSES初期化パラメータが適切に設定されていることを確認します。


参照:

  • 『Oracle Streams概要および管理』

  • 『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』


チェックポイント保存時間の設定

各取得プロセスのチェックポイント保存時間を設定します。再起動をより迅速に行うために、取得プロセスは定期的にチェックポイントを取得します。デフォルトではこれらのチェックポイントは、SYSAUX表領域でメンテナンスされます。取得プロセスのチェックポイント保存時間は、保存するチェックポイント・データの量を制御します。チェックポイント保存時間では、チェックポイントを保存するのに必要なチェックポイントSCNより前の日数を指定します。チェックポイントが指定された期間よりも古い場合は、取得プロセスがチェックポイントを消去します。

チェックポイントが消去されると、取得プロセスの先頭SCNが前に移動します。先頭SCNとは、変更を取得するのに使用可能な最小SCNです。取得プロセスを作成すると、チェックポイント保存時間が設定され、取得プロセスを変更すると、チェックポイント保存時間を設定できます。チェックポイント保存時間を超えると、先頭SCNが前に移動し、この新しい先頭SCNより前のOracle Streamsメタデータ表が消去されます。SYSAUX表領域のこれらの表によって使用される領域が再利用されます。取得プロセスのチェックポイント保存時間を変更するには、DBMS_CAPTURE_ADMパッケージのALTER_CAPTUREプロシージャを使用し、checkpoint_retention_timeパラメータを使用して新しい保存時間を指定します。

チェックポイント保存時間のデフォルト値は、60日です。チェックポイントが過去の時間に使用できる場合、取得プロセスを使用して接続先データベースをリカバリするために変更を再取得できます。環境の適切な値にチェックポイント保存時間を設定する必要があります。一般的な設定は7日間です。


参照:

  • 『Oracle Streams概要および管理』

  • ALTER_CAPTUREプロシージャの詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。


取得プロセスの操作のベスト・プラクティス

ここでは、既存の取得プロセスを操作するベスト・プラクティスについて説明します。

定期的なディクショナリ構築およびインスタンス化のためのデータベース・オブジェクトの定期的な準備

ソース・データベースのREDOログで、定期的にデータ・ディクショナリの構築を実行します。REDOログ内のデータ・ディクショナリの現行のコピーを構築するには、DBMS_CAPTURE_ADM.BUILDプロシージャを実行します。理想的には、構築が実行された後にデータベース・オブジェクトがインスタンス化のために準備される必要があります。データベース・オブジェクトをインスタンス化のために準備するには、DBMS_CAPTURE_ADMパッケージの1つ以上の次のプロシージャを実行します。

  • PREPARE_GLOBAL_INSTANTIATION

  • PREPARE_SCHEMA_INSTANTIATION

  • PREPARE_TABLE_INSTANTIATION

取得プロセスが変更を取得する各データベース・オブジェクトは、インスタンス化のために定期的に準備される必要があります。追加の取得プロセスが作成される場合、または構築を実行してインスタンス化のために共有オブジェクトを定期的に準備することによって既存の取得プロセスを再作成する必要がある場合に、処理する必要があるREDOデータの量を減らせます。


参照:


バッチ処理のパフォーマンスへの影響の最小化

パフォーマンスを最適化するために、バッチ処理ジョブのコミット・ポイントを小さくする必要があります。また、ソース・データベースで大きなバッチ処理ジョブを実行する必要がある場合は、各Oracle Streamsレプリケーション・データベースで独立して実行することを検討します。この技術を使用する場合、バッチ処理ジョブから生じる変更がレプリケートされないことを確認します。これを行うには、バッチ処理ジョブを実行するセッションでDBMS_STREAMS.SET_TAGプロシージャを実行し、取得プロセスによって取得されない値にセッション・タグを設定します。

同期取得の構成のベスト・プラクティス

DBMS_STREAMS_ADMパッケージを使用すると、同期取得の作成および管理が簡単になります。具体的には、同期取得の作成および同期取得のルールの構成を行う場合は、DBMS_STREAMS_ADMパッケージの次のプロシージャを使用します。

また、同期取得のルール・セットからルールを削除する場合は、DBMS_STREAMS_ADMパッケージのREMOVE_RULEプロシージャを使用します。