この章では、Oracle Streamsレプリケーション環境の取得プロセスまたは同期取得を使用して変更を取得するベスト・プラクティスについて説明します。この章の内容は次のとおりです。
ソース・データベースとは、取得プロセスによって取得される変更がREDOログで生成されるデータベースです。これらの変更は、ローカルの取得プロセスがソース・データベースで取得するか、またはダウンストリームの取得プロセスがリモート・データベースで取得する場合があります。次のベスト・プラクティスは、ローカルの取得プロセスを使用するソース・データベースおよびダウンストリームの取得プロセスを使用するソース・データベースを含む、取得プロセスのすべてのソース・データベースに関連します。
各ソース・データベースがARCHIVELOG
モードで実行していることを確認します。ダウンストリーム取得環境の場合、ソースREDOログが作成されるデータベースは、ARCHIVELOG
モードで実行する必要があります。
参照: 『Oracle Database管理者ガイド』 |
各ソース・データベースで、必要なサプリメンタル・ロギングが追加されたことを確認します。取得プロセスが表に対する変更を取得する場合、その表にはサプリメンタル・ロギングが必要です。Oracle Database 10g リリース2以上では、インスタンス化のために表が準備されると、表の主キー列、一意索引列、外部キー列にサプリメンタル・ロギングが自動的に追加されます。Oracle Streamsを使用してデータベース・オブジェクトを保守し、ルールを追加するためのDBMS_STREAMS_ADM
パッケージのプロシージャでは、インスタンス化のために自動的にオブジェクトが準備されます。ダウンストリーム取得の場合、ソースREDOログが生成されるデータベースでサプリメンタル・ロギングを追加する必要があります。
各レプリケート表の主キー列、一意索引列、外部キー列などの接続先データベースのすべての索引列は、ソース・データベースでサプリメンタル・ロギングを行う必要があります。主キー列は無条件でログに記録する必要がありますが、一意索引列および外部キー列は、条件付きでログに記録されます。表の追加の列にサプリメンタル・ロギングが必要になる場合があります。たとえば、ルールベースの変換で指定されたすべての列、またはDMLハンドラ内で使用されるすべての列は、ソース・データベースで無条件にログに記録されます。これらの列に対するサプリメンタル・ロギングは、データベース管理者によって明示的に構成される必要があります。
ハートビート表を使用して、Oracle Streamsレプリケーション環境内に変更がレプリケートされているかを確認できます。特に、取得データベースが定期的に更新されているか確認するために、取得データベースでDBA_CAPTURE
データ・ディクショナリ・ビューのAPPLIED_SCN
値を確認できます。たとえレプリケートされた変更が少なくても、レプリケーション環境が適切に動作していることを確認できるため、アクティビティ・レートが低いデータベースにハートビート表は、特に有効です。
Oracle Streams取得プロセスは、10MBのREDOが生成されるごとにチェックポイントを要求します。アクティブなトランザクションがある場合、チェックポイント中にOracle Streamsのメタデータがメンテナンスされます。ハートビート表を実装すると、メタデータが頻繁に更新される機会が追加され、ソース・データベースで定期的に発生するオープン・トランザクションが存在することを確認できます。さらに、ハートビート表によってOracle Streamsレプリケーション環境の状態に関して迅速なフィードバックがデータベース管理者に提供されます。
ハートビート表を実装するには、次の手順を実行します。
日付列またはタイムスタンプ列およびソース・データベースのグローバル名を含むソース・データベースで表を作成します。
接続先データベースで表をインスタンス化します。複数の接続先データベースが存在する場合、各接続先データベースでハートビート表をインスタンス化します。
ソース・データベースに対する変更を取得する取得プロセスのポジティブ・ルール・セットにルールを追加します。ルールは、取得プロセスに対し、ハートビート表に対する変更を取得するように指示します。
ソース・データベースから接続先データベースに変更を伝播する伝播のポジティブ・ルール・セットにルールを追加します。ルールは、伝播に対し、ハートビート表のLCRを伝播するように指示します。複数の伝播が存在する場合、各伝播のルール・セットにルールを追加します。環境で有向ネットワークを使用する場合、いくつかのデータベースで伝播にルールを追加する必要があります。
ソース・データベースで発生した変更を適用する適用プロセスのポジティブ・ルール・セットにルールを追加します。ルールは、適用プロセスに対し、ハートビート表に対する変更を適用するように指示します。ソース・データベースで発生した変更を適用する複数のデータベースで複数の適用プロセスが存在する場合、各適用プロセスにルールを追加します。
ソース・データベースでハートビート表が定期的に更新されるように自動化ジョブを構成します。たとえば、表は1分ごとに更新されます。
ソース・データベースでのハートビート表に対する変更が接続先データベースにレプリケートされていることを確認するために、Oracle Streamsレプリケーション環境を監視します。
ここでは、取得プロセスを構成するベスト・プラクティスについて説明します。
各取得プロセスの並列性を設定するには、DBMS_CAPTURE_ADM.SET_PARAMETER
プロシージャのparallelism
パラメータを指定します。parallelism
パラメータによって、変更のためにREDOログを同時にマイニングするプロセスの数を制御します。
parallelism
取得プロセス・パラメータのデフォルト設定は1
で、デフォルトのparallelism
の設定は、ほとんどの取得プロセスの構成に適しています。parallelism
取得プロセス・パラメータを設定する際に、PROCESSES
初期化パラメータが適切に設定されていることを確認します。
参照:
|
各取得プロセスのチェックポイント保存時間を設定します。再起動をより迅速に行うために、取得プロセスは定期的にチェックポイントを取得します。デフォルトではこれらのチェックポイントは、SYSAUX
表領域でメンテナンスされます。取得プロセスのチェックポイント保存時間は、保存するチェックポイント・データの量を制御します。チェックポイント保存時間では、チェックポイントを保存するのに必要なチェックポイントSCNより前の日数を指定します。チェックポイントが指定された期間よりも古い場合は、取得プロセスがチェックポイントを消去します。
チェックポイントが消去されると、取得プロセスの先頭SCNが前に移動します。先頭SCNとは、変更を取得するのに使用可能な最小SCNです。取得プロセスを作成すると、チェックポイント保存時間が設定され、取得プロセスを変更すると、チェックポイント保存時間を設定できます。チェックポイント保存時間を超えると、先頭SCNが前に移動し、この新しい先頭SCNより前のOracle Streamsメタデータ表が消去されます。SYSAUX
表領域のこれらの表によって使用される領域が再利用されます。取得プロセスのチェックポイント保存時間を変更するには、DBMS_CAPTURE_ADM
パッケージのALTER_CAPTURE
プロシージャを使用し、checkpoint_retention_time
パラメータを使用して新しい保存時間を指定します。
チェックポイント保存時間のデフォルト値は、60
日です。チェックポイントが過去の時間に使用できる場合、取得プロセスを使用して接続先データベースをリカバリするために変更を再取得できます。環境の適切な値にチェックポイント保存時間を設定する必要があります。一般的な設定は7
日間です。
参照:
|
ここでは、既存の取得プロセスを操作するベスト・プラクティスについて説明します。
ソース・データベースのREDOログで、定期的にデータ・ディクショナリの構築を実行します。REDOログ内のデータ・ディクショナリの現行のコピーを構築するには、DBMS_CAPTURE_ADM.BUILD
プロシージャを実行します。理想的には、構築が実行された後にデータベース・オブジェクトがインスタンス化のために準備される必要があります。データベース・オブジェクトをインスタンス化のために準備するには、DBMS_CAPTURE_ADM
パッケージの1つ以上の次のプロシージャを実行します。
PREPARE_GLOBAL_INSTANTIATION
PREPARE_SCHEMA_INSTANTIATION
PREPARE_TABLE_INSTANTIATION
取得プロセスが変更を取得する各データベース・オブジェクトは、インスタンス化のために定期的に準備される必要があります。追加の取得プロセスが作成される場合、または構築を実行してインスタンス化のために共有オブジェクトを定期的に準備することによって既存の取得プロセスを再作成する必要がある場合に、処理する必要があるREDOデータの量を減らせます。