D トリガーベースのDDLキャプチャのインストール

この付録では、トリガーベースのOracle GoldenGate DDLサポート方法をサポートするオブジェクトのインストール手順について説明します。

DDLをキャプチャしてレプリケートするようにOracle GoldenGateを構成する場合、「DDLサポートの構成」を参照してください。

ノート:

順序のDDLサポート(CREATEALTERDROPRENAME)は順序値自体のレプリケートと互換性がありますが、順序値をレプリケートするために必須ではありません。順序値のレプリケートのみを行う場合、Oracle GoldenGateのDDLサポート環境をインストールする必要はありません。Extract構成でSEQUENCEパラメータを使用するのみです。

内容は次のとおりです。

トリガーベースのDDLキャプチャを使用する場合

この項では、トリガーベースのDDL Extractを使用する必要がある場合について説明します。

Extractが次の構成で動作する場合は、トリガーベースのDDLキャプチャを使用する必要があります

任意のバージョンのOracle Databaseに対して、Extractがクラシック・キャプチャ・モードで動作する場合。

Oracle Databaseバージョン11.2.0.4以降に対してExtractが統合モードで実行される場合、DDLトリガーは不要です。デフォルトでは、DDLキャプチャはデータベース・ログマイニング・サーバーを介して透過的に処理されます。

Extractがマルチテナント・コンテナ・データベースからキャプチャする場合は、ネイティブDDLキャプチャ・モードで統合キャプチャ・モードを使用する必要があります。

キャプチャ・モードの詳細は、「キャプチャおよび適用モードの選択」を参照してください。

DDLサポートの詳細は、「DDLサポートの構成」を参照してください。

トリガーベースのDDLキャプチャをサポートするオブジェクトの概要

この項では、Oracle GoldenGateのトリガーベースのDDL環境をインストールするための要件を示しています。

Oracle GoldenGateのトリガーベースのDDL環境をインストールするには、次の表に示すデータベース・オブジェクトをインストールします。

オブジェクト 目的 デフォルト名

DDLマーカー表

DDL情報を保存します。この表では挿入のみを受信します。

GGS_MARKER

マーカー表での順序

マーカー表の列に使用します。

GGS_DDL_SEQ

DDL履歴表

オブジェクト・メタデータ履歴を保存します。この表では挿入、更新、削除を受信します。

GGS_DDL_HIST

オブジェクトID履歴表

構成されたオブジェクトのオブジェクトIDが含まれます。

GGS_DDL_HIST_ALT

DDLトリガー

DDL操作を実行します。操作に関する情報をマーカー表および履歴表に書き込みます。トリガーとともにいくつかのパッケージがインストールされます。

GGS_DDL_TRIGGER_BEFORE

DDLスキーマ

DDL同期オブジェクトが含まれます。

なし。インストール時およびGLOBALSファイルで指定する必要があります。

ユーザー・ロール

DDL操作の実行に必要なロールを確立します。

GGS_GGSUSER_ROLE

内部設定表

内部でのみ使用できるデータベース表。

GGS_SETUP

ddl_pin

パフォーマンスを改善するためにDDLトレース、DDLパッケージおよびDDLトリガーをピン留めします。

ddl_pin

ddl_cleartrace.sql

DDLトレース・ファイルを削除します。

ddl_cleartrace.sql

ddl_status.sql

Oracle GoldenGateのDDLオブジェクトがインストールされていることを確認します。

ddl_status.sql

marker_status.sql

マーカー表がインストールされていることを確認します。

marker_status.sql

ddl_tracelevel.sql

DDLトレースのレベルを設定します。

ddl_tracelevel.sql

DDLオブジェクトのインストール

DDLオブジェクトをインストールするには、インストール時の様々なタスクを実行するためのスクリプトが必要です。

これらのスクリプトは、Oracle GoldenGate Microservicesのインストール・ディレクトリにあります。具体的な場所は、oggma_install_home/lib/sql/legacyです。

次のステップに従って、Oracle GoldenGate DDLキャプチャをサポートするデータベース・オブジェクトをインストールします。

ノート:

Active Data Guard環境で、Extractをクラシック・モードで使用してキャプチャする場合、DDLオブジェクトがスタンバイではなくソース・データベースにインストールされている必要があります。

  1. Oracle GoldenGate DDLオブジェクトを含めるスキーマを選択します。このスキーマは大文字と小文字を区別しません。
  2. Oracle GoldenGateスキーマに次の権限を付与します。
    GRANT EXECUTE ON utl_file TO schema;
    
  3. Oracle GoldenGate DDLスキーマに対するデフォルト表領域を作成します。この表領域は、DDLスキーマ専用である必要があります。他のスキーマと共有できません。
  4. DDL表領域に対してAUTOEXTENDONに設定し、そのサイズをGGS_DDL_HIST表およびGGS_MARKER表の拡張に対応できるサイズに設定する必要があります。特に、GGS_DDL_HIST表はDDLアクティビティ全体に比例して増加します。
  5. (オプション)DDL表領域が一杯になった場合にユーザーDDLアクティビティが失敗するようにするには、params.sqlスクリプトを編集してddl_fire_error_in_triggerパラメータをTRUEに設定します。DDL表領域が一杯になった場合、ExtractはDDLをキャプチャできないため、DDLを停止することで表領域のサイズを拡張する時間ができ、DDLキャプチャが失われることを防ぎます。ただし、表領域のサイズをこのように管理する場合、ビジネスの混乱を防ぐためにビジネス・アプリケーションとExtractを絶えず監視する必要があります。ベスト・プラクティスは、まず第一に表領域を適切なサイズに設定し、表領域が一杯にならないようにAUTOEXTENDONに設定することです。

    警告:

    編集する前にparams.sqlスクリプトのバックアップをとり、元の状態を保持してください。

  6. GLOBALSファイルを作成します(あるいは、既存のものを編集します)。
    EDIT PARAMS ./GLOBALS

    ノート:

    EDIT PARAMSで、単純なテキスト・ファイルが作成されます。EDIT PARAMS後にファイルを保存すると、Oracle GoldenGateディレクトリのルートに拡張子なしのGLOBALS(大文字)という名前で保存されます。ファイルの名前や場所を変更しないでください。

  7. GLOBALSファイルで、次のパラメータをGLOBALSファイルに追加することで、DDLスキーマ名を指定します。
    GGSCHEMA schema_name
    
  8. (オプション)表D-*に示すその他のオブジェクトの名前を変更するには、残りのインストールを進める前に変更する必要があります。そうしない場合、Oracle GoldenGateのDDL処理を停止してDDLオブジェクトを再インストールする必要があります。データベース・オブジェクトのデフォルト名を受け入れることをお薦めします。データベース・オブジェクト名(スキーマを除く)を変更するには、次のいずれかまたは両方を実行します。
    • params.sqlスクリプトにすべての名前の変更を記録します。このスクリプトを編集して適切なパラメータを変更します。このスクリプトを実行しないでください。

    • 表D-1に記載されている名前をGLOBALSファイルにリストします。使用する正しいパラメータは、表の「パラメータ」列に示されます。

      表D-1 DDLオブジェクト名を変更するためのGLOBALSパラメータ

      オブジェクト パラメータ

      マーカー表

      MARKERTABLE new_table_name脚注 1

      履歴表

      DDLTABLE new_table_name

      脚注1

      これらの表の名前は修飾しないでください。これらの表のスキーマ名は、GGSCHEMAで指定されたスキーマ、またはGLOBALSGGSCHEMAを指定していない場合は現在のユーザーのスキーマです。

  9. トリガーベースのDDLレプリケーションでOracleの不可視索引を一意の識別子として認識できるようにするには、params.sqlスクリプトで次のパラメータをTRUEに設定します。
    define allow_invisible_index_keys = 'TRUE' 
    
  10. GLOBALSファイルとparams.sqlファイルを保存して閉じます。
  11. ディレクトリをOracle GoldenGateのインストール・ディレクトリに変更します。
  12. SQL*Plusのセッション、ビジネス・アプリケーションのセッション、Oracle GoldenGateのプロセスのセッションおよびOracleを使用するその他のソフトウェアのセッションなどのすべてのOracleセッションを終了します。新しいセッションの開始を回避します。
  13. SQL*Plusを実行し、SYSDBA権限を持つユーザーでログインします。この権限は、Oracleに必要なSYSスキーマへのDDLトリガーのインストールに必要です。他のすべてのDDLオブジェクトは、手順で作成したスキーマにインストールされます。
  14. marker_setup.sqlスクリプトを実行します。プロンプトが表示されたらOracle GoldenGateスキーマの名前を入力し、[Enter]を押してスクリプトを実行します。このスクリプトによって、Oracle GoldenGate DDLマーカー・システムのサポートがインストールされます。
    @marker_setup.sql
    
  15. ddl_setup.sqlスクリプトを実行します。構成したDDLスキーマの名前を指定するよう求められます。(ノート: このスキーマの表領域が他のユーザーと共有されている場合、ddl_setup.sqlは失敗します。ただし、デフォルト表領域のAUTOEXTENDONに設定(推奨設定)されていない場合、失敗しません。)
    @ddl_setup.sql
    
  16. role_setup.sqlスクリプトを実行します。プロンプトが表示されたら、DDLスキーマ名を入力します。このスクリプトによって、DDL同期に必要なロールが削除および作成され、Oracle GoldenGate DDLオブジェクトに対するDML権限が付与されます。
    @role_setup.sql
    
  17. 作成されたロール(デフォルト名はGGS_GGSUSER_ROLE)をすべてのOracle GoldenGate Extractのユーザーに付与します。プロセスに異なるユーザー名がある場合、複数の付与が必要になることがあります。
    GRANT role TO user;
    
  18. ddl_enable.sqlスクリプトを実行してDDLトリガーを有効にします。
    @ddl_enable.sql

オプションのパフォーマンス・ツールをインストールして使用する手順

DDLトリガーのパフォーマンスを改善するには、ddl_pinスクリプトをデータベースの起動の一部にします。次のように、Oracle GoldenGateのDDLユーザー名を指定してそれを起動する必要があります。

@ddl_pin DDL_user

このスクリプトによって、トリガーで使用されるPL/SQLパッケージがメモリーにピン留めされます。SQL*Plusからこのスクリプトを実行する場合、Oracle GoldenGateインストール・ディレクトリからSYSDBAとして接続します。このスクリプトはOracleのdmbs_shared_poolシステム・パッケージに依存するため、ddl_pinを使用する前にそのパッケージをインストールしてください。