16 取得のベスト・プラクティス
この章では、Oracle Streamsレプリケーション環境の取得プロセスまたは同期取得を使用して変更を取得するベスト・プラクティスについて説明します。この章の内容は、次のとおりです。
関連項目:
-
「Oracle Real Application ClustersおよびOracle Streamsのベスト・プラクティス」
-
Oracle Streams取得プロセスを準備する場合のベスト・プラクティスについては、「Oracle Streamsレプリケーションの準備」を参照してください
16.1 取得プロセスの構成のベスト・プラクティス
ここでは、取得プロセスを構成するベスト・プラクティスについて説明します。
16.1.1 取得ユーザーへの必要な権限の付与
取得ユーザーは、取得プロセスがそのルール・セットを満たす変更を取得し、取得プロセスのルール用に構成されたカスタム・ルールベースの変換を実行するセキュリティ・ドメイン内のユーザーです。
取得プロセスを作成すると、取得プロセスの取得ユーザーが構成され、取得プロセスを変更すると、取得ユーザーを変更できます。適用ユーザーに次の権限を付与します。
-
取得プロセスで使用するルール・セットの
EXECUTE
権限 -
ポジティブ・ルール・セットで使用されるすべてのルールベースの変換ファンクションに対する
EXECUTE
権限
これらの権限は取得ユーザーに直接付与するか、またはロールによって付与できます。
また、取得ユーザーには、取得プロセスで実行されるルールベースの変換で起動されるすべてのパッケージ(Oracle提供パッケージを含む)に対するEXECUTE
権限を付与する必要があります。これらの権限は、取得ユーザーに直接付与する必要があります。ロールを通して付与することはできません。
関連項目:
-
権限の付与の概要は、『Oracle Databaseセキュリティ・ガイド』を参照してください。
-
ルール・セットに対する権限の付与の詳細は、『Oracle Streams概要および管理』を参照してください。
16.1.2 取得プロセスの並列性の設定
各取得プロセスの並列性を設定するには、DBMS_CAPTURE_ADM.SET_PARAMETER
プロシージャのparallelism
パラメータを指定します。parallelism
パラメータによって、変更のためにREDOログを同時にマイニングするプロセスの数を制御します。
parallelism
取得プロセス・パラメータのデフォルト設定は1
で、デフォルトのparallelism
の設定は、ほとんどの取得プロセスの構成に適しています。parallelism
取得プロセス・パラメータを設定する際に、PROCESSES
初期化パラメータが適切に設定されていることを確認します。
16.1.3 チェックポイント保存時間の設定
各取得プロセスのチェックポイント保存時間を設定します。再起動をより迅速に行うために、取得プロセスは定期的にチェックポイントを取得します。デフォルトではこれらのチェックポイントは、SYSAUX
表領域でメンテナンスされます。取得プロセスのチェックポイント保存時間は、保存するチェックポイント・データの量を制御します。チェックポイント保存時間では、チェックポイントを保存するのに必要なチェックポイントSCNより前の日数を指定します。チェックポイントが指定された期間よりも古い場合は、取得プロセスがチェックポイントを消去します。
チェックポイントが消去されると、取得プロセスの先頭SCNが前に移動し、Oracle Databaseによってアラート・ログに「先頭SCNが変更されました」というテキストを含むメッセージが書き込まれます。先頭SCNとは、変更を取得するのに使用可能な最小SCNです。取得プロセスを作成すると、チェックポイント保存時間が設定され、取得プロセスを変更すると、チェックポイント保存時間を設定できます。チェックポイント保存時間を超えると、先頭SCNが前に移動し、この新しい先頭SCNより前のOracle Streamsメタデータ表が消去されます。SYSAUX
表領域のこれらの表によって使用される領域が再利用されます。取得プロセスのチェックポイント保存時間を変更するには、DBMS_CAPTURE_ADM
パッケージのALTER_CAPTURE
プロシージャを使用し、checkpoint_retention_time
パラメータを使用して新しい保存時間を指定します。
チェックポイント保存時間のデフォルト値は、60
日です。チェックポイントが過去の時間に使用できる場合、取得プロセスによって宛先データベースをリカバリするために変更を再取得できます。環境の適切な値にチェックポイント保存時間を設定する必要があります。一般的な設定は7
日間です。
関連項目:
-
ALTER_CAPTURE
プロシージャの詳細は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。
16.2 取得プロセスの操作のベスト・プラクティス
ここでは、既存の取得プロセスを操作するベスト・プラクティスについて説明します。
16.2.1 Oracle Streams環境内の各ソース・データベースでのハートビート表の構成
ハートビート表を使用して、Oracle Streamsレプリケーション環境内に変更がレプリケートされているかを確認できます。特に、取得データベースが定期的に更新されているかを確認するために、取得データベースでDBA_CAPTURE
データ・ディクショナリ・ビューのAPPLIED_SCN
値を確認できます。たとえレプリケートされた変更が少なくても、レプリケーション環境が適切に動作していることを確認できるため、アクティビティ・レートが低いデータベースにハートビート表は、特に有効です。
Oracle Streams取得プロセスは、10MBのREDOが生成されるごとにチェックポイントを要求します。アクティブなトランザクションがある場合、チェックポイント中にOracle Streamsのメタデータがメンテナンスされます。ハートビート表を実装すると、メタデータが頻繁に更新される機会が追加され、ソース・データベースで定期的に発生するオープン・トランザクションが存在することを確認できます。さらに、ハートビート表によってOracle Streamsレプリケーション環境の状態に関して迅速なフィードバックがデータベース管理者に提供されます。
ハートビート表を実装するには、次の手順を実行します。
- 日付列またはタイムスタンプ列およびソース・データベースのグローバル名を含むソース・データベースで表を作成します。
- 宛先データベースで表をインスタンス化します。複数の宛先データベースが存在する場合、各宛先データベースでハートビート表をインスタンス化します。
- ソース・データベースに対する変更を取得する取得プロセスのポジティブ・ルール・セットにルールを追加します。ルールは、取得プロセスに対し、ハートビート表に対する変更を取得するように指示します。
- ソース・データベースから宛先データベースに変更を伝播する伝播のポジティブ・ルール・セットにルールを追加します。ルールは、伝播に対し、ハートビート表のLCRを伝播するように指示します。複数の伝播が存在する場合、各伝播のルール・セットにルールを追加します。環境で有向ネットワークを使用する場合、いくつかのデータベースで伝播にルールを追加する必要があります。
- ソース・データベースで発生した変更を適用する適用プロセスのポジティブ・ルール・セットにルールを追加します。ルールは、適用プロセスに対し、ハートビート表に対する変更を適用するように指示します。ソース・データベースで発生した変更を適用する複数のデータベースで複数の適用プロセスが存在する場合、各適用プロセスにルールを追加します。
- ソース・データベースでハートビート表が定期的に更新されるように自動化ジョブを構成します。たとえば、表は1分ごとに更新されます。
- ソース・データベースでのハートビート表に対する変更が宛先データベースにレプリケートされていることを確認するために、Oracle Streamsレプリケーション環境を監視します。
16.2.2 定期的なディクショナリ構築およびインスタンス化のためのデータベース・オブジェクトの定期的な準備
ソース・データベースのREDOログで、定期的にデータ・ディクショナリの構築を実行します。REDOログ内のデータ・ディクショナリの現行のコピーを構築するには、DBMS_CAPTURE_ADM.BUILD
プロシージャを実行します。理想的には、構築が実行された後にデータベース・オブジェクトがインスタンス化のために準備される必要があります。データベース・オブジェクトをインスタンス化のために準備するには、DBMS_CAPTURE_ADM
パッケージの1つ以上の次のプロシージャを実行します。
-
PREPARE_GLOBAL_INSTANTIATION
-
PREPARE_SCHEMA_INSTANTIATION
-
PREPARE_TABLE_INSTANTIATION
取得プロセスが変更を取得する各データベース・オブジェクトは、インスタンス化のために定期的に準備される必要があります。追加の取得プロセスが作成される場合、または構築を実行してインスタンス化のために共有オブジェクトを定期的に準備することによって既存の取得プロセスを再作成する必要がある場合に、処理する必要があるREDOデータの量を減らせます。
16.2.3 バッチ処理のパフォーマンスへの影響の最小化
パフォーマンスを最適化するために、バッチ処理ジョブのコミット・ポイントを小さくする必要があります。また、ソース・データベースで大きなバッチ処理ジョブを実行する必要がある場合は、各Oracle Streamsレプリケーション・データベースで独立して実行することを検討します。この技術を使用する場合、バッチ処理ジョブから生じる変更がレプリケートされないことを確認します。これを行うには、バッチ処理ジョブを実行するセッションでDBMS_STREAMS.SET_TAG
プロシージャを実行し、取得プロセスによって取得されない値にセッション・タグを設定します。
関連項目: