ヘッダーをスキップ
Oracle® Streamsレプリケーション管理者ガイド
11g リリース2 (11.2)
B61352-03
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

18 適用のベスト・プラクティス

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

宛先データベース構成のベスト・プラクティス

Oracle Streamsレプリケーション環境では、宛先データベースは、適用プロセスが変更を適用するデータベースです。この項の内容は次のとおりです。

適用ユーザーへの必要な権限の付与

適用ユーザーは、適用プロセスが次のアクションを実行するセキュリティ・ドメイン内のユーザーです。

  • ルール・セットを満たすメッセージのデキュー

  • 適用プロセスのルール用に構成されたカスタム・ルールベースの変換の実行

  • メッセージのデータベース・オブジェクトへの直接適用

  • 適用プロセス用に構成された適用ハンドラの実行

適用プロセスを作成すると、適用プロセスの適用ユーザーが構成され、適用プロセスを変更すると、適用ユーザーを変更できます。適用ユーザーに次の権限を付与します。

  • 適用プロセスがデータ操作言語(DML)の変更を表に適用する場合、表に対するINSERTUPDATEおよびDELETE権限を適用ユーザーに付与します。

  • 適用プロセスがデータ定義言語(DDL)の変更を表に適用する場合、CREATE TABLEまたはCREATE ANY TABLECREAT INDEXまたはCREATE ANY INDEXCREATE PROCEDUREまたはCREATE ANY PROCEDUREを適用ユーザーに付与します。

  • 適用プロセスによって使用されるルール・セットに対してEXECUTE権限を付与します。

  • 適用プロセスのポジティブ・ルール・セット内のルールに指定されたすべてのカスタム・ルールベースの変換ファンクションに対してEXECUTE権限を付与します。

  • 適用プロセスによって使用されるすべての適用ハンドラに対してEXECUTE権限を付与します。

  • 適用プロセスのキューからメッセージをデキューする権限を付与します。

これらの権限は、適用ユーザーに直接付与することも、ロールを介して付与することもできます。

また、適用ユーザーには、適用プロセスによって実行されるサブプログラムで起動されるすべてのパッケージ(オラクル社が提供するパッケージを含む)に対するEXECUTE権限が付与されている必要があります。これらの権限は、適用ユーザーに直接付与する必要があります。ロールを介して付与することはできません。


関連項目:

  • 権限の付与の概要は、『Oracle Databaseセキュリティ・ガイド』を参照してください。

  • ルール・セットに対する権限の付与の詳細は、『Oracle Streams概要および管理』を参照してください。


インスタンス化SCNの値の設定

インスタンス化SCNの値は、適用プロセスが変更を適用する各データベース・オブジェクトに対して設定する必要があります。すべてのそのようなオブジェクトに対してインスタンス化SCNが設定されていることを確認し、未設定のすべての必要なインスタンス化SCNの値を設定します。

インスタンス化SCNの値は、エクスポート/インポート、Recovery Manager(RMAN)、手動などの様々な方法で設定できます。インスタンス化SCNの値を手動で設定するには、DBMS_APPLY_ADMパッケージの次のいずれかのプロシージャを使用します。

  • SET_TABLE_INSTANTIATION_SCN

  • SET_SCHEMA_INSTANTIATION_SCN

  • SET_GLOBAL_INSTANTIATION_SCN

たとえば、スキーマ内の各表に対して手動でインスタンス化SCNを設定するには、recursiveパラメータをTRUEに設定して、SET_SCHEMA_INSTANTIATION_SCNプロシージャを実行します。適用プロセスがデータ定義言語(DDL)変更を適用する場合、SET_SCHEMA_INSTANTIATION_SCNまたはSET_GLOBAL_INSTANTIATION_SCNプロシージャのいずれかを使用して表レベルより高いレベルでインスタンス化SCNの値を設定します。


関連項目:

インスタンス化およびインスタンス化SCNの値の設定の詳細は、第8章「インスタンス化とOracle Streamsレプリケーション」を参照してください。

競合解消の構成

更新が複数のデータベースで同じ共有データベース・オブジェクトに対して実行される場合、そのオブジェクトの競合解消を構成されていることを確認します。LOB列を含む表の競合解消を簡素化するには、表のエラーを処理するエラー・ハンドラを作成します。DBMS_APPLY_ADM.SET_DML_HANDLERプロシージャを使用してエラー・ハンドラを登録するときに、assemble_lobsパラメータをTRUEに設定していることを確認します。

宛先データベースで競合解消を構成する場合、ソース・データベースで追加のサプリメンタル・ロギングが必要です。特に、ソース・データベースの複数の列が宛先データベースの列リストに使用されている場合、適用時に競合解消用の列リストで指定された列は、条件付きでログに記録する必要があります。

適用プロセスの構成のベスト・プラクティス

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

適用プロセスの並列性の設定

適用プロセスの並列性を設定するには、DBMS_APPLY_ADM.SET_PARAMETERプロシージャのparallelismパラメータを指定します。parallelismパラメータによって、変更を同時に適用するプロセスの数を制御します。parallelism適用プロセス・パラメータのデフォルト設定は、4です。

通常、適用プロセスの並列性は、148または16のいずれかに設定されます。特定の適用プロセスに最適な設定は、適用されるロードおよびデータベースを実行するコンピュータ・システムの処理能力に依存します。適用プロセスの並列性を設定する際は、次のガイドラインに従ってください。

  • 適用プロセスのロードが高く、データベースを実行するコンピュータ・システムの処理能力が高い場合は、適用プロセスの並列性を8または16に設定します。複数の高速CPUによって、高い処理能力が提供されます。

  • 適用プロセスのロードが低い場合は、適用プロセスの並列性を1または4に設定します。

  • データベースを実行するコンピュータ・システムの処理能力が最適な処理能力よりも低い場合は、適用プロセスの並列性を1または4に設定します。

parallelism適用プロセス・パラメータを設定する際に、PROCESSES初期化パラメータが適切に設定されていることを確認します。

また、適用プロセスの並列性が1より大きい場合に、適用プロセスによって変更が適用されるすべてのデータベース・オブジェクトにINITRANSおよびPCTFREEパラメータが適切に設定されていることを確認します。INITRANSパラメータでは、データベース・オブジェクトに割り当てられた各データ・ブロック内で割当て済のトランザクション・エントリの初期の数を指定します。INITRANSパラメータを適用プロセス以上の並列性に設定します。PCTFREEパラメータでは、オブジェクトの列への将来の更新のために予約されたデータベース・オブジェクトの各データ・ブロック内の領域の割合を指定します。PCTFREEパラメータは、10以上に設定する必要があります。ALTER TABLE文を使用して表のこれらのパラメータを変更できます。


関連項目:

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

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

  • ALTER TABLE文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。


エラー発生時の適用プロセスの続行の検討

disable_on_error適用プロセス・パラメータをYに設定すると、たとえエラーがリカバリ不能でなくても、適用プロセスは最初の未解決のエラーに対して無効化されます。disable_on_error適用プロセス・パラメータをNに設定すると、未解決のエラーにかかわらず適用プロセスは続行します。このパラメータのデフォルトの設定はYです。エラーが発生しても適用プロセスが無効化されないようにするには、disable_on_errorパラメータをNに設定します。

適用プロセスの操作のベスト・プラクティス

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

適用エラーの管理

エラー・キューには、データベースのすべての現行の適用エラーが含まれます。データベースに複数の適用プロセスが存在する場合、エラー・キューには各適用プロセスの適用エラーが含まれます。適用プロセスがトランザクション内の論理変更レコード(LCR)を適用しようとする際にエラーが発生する場合、トランザクション内のすべてのLCRは、エラー・キューに移動されます。適用エラーの情報を表示するには、DBA_APPLY_ERRORデータ・ディクショナリ・ビューを問い合せるか、またはEnterprise Managerを使用します。

DBA_APPLY_ERRORビューのMESSAGE_NUMBER列は、エラーが発生したトランザクション内のLCRを示します。適用エラーが発生した場合、エラーの原因となった問題を訂正し、エラー・キュー内のエラー・トランザクションを再試行するか、または削除します。


関連項目:

適用エラーの管理およびエラー・トランザクション内の各LCRの列値の詳細情報の表示の詳細は、『Oracle Streams概要および管理』を参照してください。