この付録では、トリガーベースのOracle GoldenGate DDLサポート方法をサポートするオブジェクトのインストール手順について説明します。
この付録の内容は次のとおりです。
DDLをキャプチャしてレプリケートするようにOracle GoldenGateを構成する場合、第13章「DDLサポートの構成」を参照してください。
注意: 順序のDDLサポート(CREATE 、ALTER 、DROP 、RENAME )は順序値自体のレプリケートと互換性がありますが、順序値をレプリケートするために必須ではありません。順序値のレプリケートのみを行う場合、Oracle GoldenGateのDDLサポート環境をインストールする必要はありません。Extract構成でSEQUENCE パラメータを使用するのみです。 |
Extractが次の構成で動作する場合は、トリガーベースのDDLキャプチャを使用する必要があります。
Oracle Databaseの任意のバージョンに対して、Extractがクラシック・キャプチャ・モードで動作する場合。
Oracle Databaseバージョン11.2.0.3以前に対して、Extractが統合モードで動作する場合。
Oracle Databaseバージョン11.2.0.4以降に対してExtractが統合モードで実行される場合、DDLトリガーは不要です。デフォルトでは、DDLキャプチャはデータベース・ログマイニング・サーバーを介して透過的に処理されます。
Extractがマルチテナント・コンテナ・データベースからキャプチャする場合は、ネイティブDDLキャプチャ・モードで統合キャプチャ・モードを使用する必要があります。
キャプチャ・モードの詳細は、第5章「キャプチャおよび適用モードの選択」を参照してください。
DDLサポートの詳細は、第13章「DDLサポートの構成」を参照してください。
Oracle GoldenGateのトリガーベースのDDL環境をインストールするには、表D-1に示すデータベース・オブジェクトをインストールします。
表D-1 DDL同期オブジェクト
オブジェクト | 目的 | デフォルト名 |
---|---|---|
DDLマーカー表 |
DDL情報を保存します。この表では挿入のみを受信します。 |
|
マーカー表での順序 |
マーカー表の列に使用します。 |
|
DDL履歴表 |
オブジェクト・メタデータ履歴を保存します。この表では挿入、更新、削除を受信します。 |
|
オブジェクトID履歴表 |
構成されたオブジェクトのオブジェクトIDが含まれます。 |
|
DDLトリガー |
DDL操作を実行します。操作に関する情報をマーカー表および履歴表に書き込みます。トリガーとともにいくつかのパッケージがインストールされます。 |
|
DDLスキーマ |
DDL同期オブジェクトが含まれます。 |
なし。インストール時および |
ユーザー・ロール |
DDL操作の実行に必要なロールを確立します。 |
|
内部設定表 |
内部でのみ使用できるデータベース表。 |
|
|
パフォーマンスを改善するためにDDLトレース、DDLパッケージおよびDDLトリガーをピン留めします。 |
|
|
DDLトレース・ファイルを削除します。 |
|
|
Oracle GoldenGateのDDLオブジェクトがインストールされていることを確認します。 |
|
|
マーカー表がインストールされていることを確認します。 |
|
|
DDLトレースのレベルを設定します。 |
|
次の手順に従って、Oracle GoldenGate DDLキャプチャをサポートするデータベース・オブジェクトをインストールします。
注意: Active Data Guard環境で、Extractをクラシック・モードで使用してキャプチャする場合、DDLオブジェクトがスタンバイではなくソース・データベースにインストールされている必要があります。 |
Oracle GoldenGate DDLオブジェクトを含めるスキーマを選択します。このスキーマは大文字と小文字を区別しません。
Oracle GoldenGateスキーマに次の権限を付与します。
GRANT EXECUTE ON utl_file TO schema
;
Oracle GoldenGate DDLスキーマに対するデフォルト表領域を作成します。この表領域は、DDLスキーマ専用である必要があります。他のスキーマと共有できません。
DDL表領域に対してAUTOEXTEND
をON
に設定し、そのサイズをGGS_DDL_HIST
表およびGGS_MARKER
表の拡張に対応できるサイズに設定する必要があります。特に、GGS_DDL_HIST
表はDDLアクティビティ全体に比例して増加します。
(オプション)DDL表領域が一杯になった場合にユーザーDDLアクティビティが失敗するようにするには、params.sql
スクリプトを編集してddl_fire_error_in_trigger
パラメータをTRUE
に設定します。DDL表領域が一杯になった場合、ExtractはDDLをキャプチャできないため、DDLを停止することで表領域のサイズを拡張する時間ができ、DDLキャプチャが失われることを防ぎます。ただし、表領域のサイズをこのように管理する場合、ビジネスの混乱を防ぐためにビジネス・アプリケーションとExtractを絶えず監視する必要があります。ベスト・プラクティスは、まず第一に表領域を適切なサイズに設定し、表領域が一杯にならないようにAUTOEXTEND
をON
に設定することです。
注意: 編集する前に |
GLOBALS
ファイルを作成します(あるいは、既存のものを編集します)。
EDIT PARAMS ./GLOBALS
注意: EDIT PARAMS で、単純なテキスト・ファイルが作成されます。EDIT PARAMS 後にファイルを保存すると、Oracle GoldenGateディレクトリのルートに拡張子なしのGLOBALS (大文字)という名前で保存されます。ファイルの名前や場所を変更しないでください。 |
GLOBALS
ファイルで、次のパラメータをGLOBALS
ファイルに追加することで、DDLスキーマ名を指定します。
GGSCHEMA schema_name
(オプション)表D-1に示すその他のオブジェクトの名前を変更するには、残りのインストールを進める前に変更する必要があります。そうしない場合、Oracle GoldenGateのDDL処理を停止してDDLオブジェクトを再インストールする必要があります。データベース・オブジェクトのデフォルト名を受け入れることをお薦めします。表D-1に示す名前(スキーマを除く)を変更するには、次のいずれか、または両方を実行します。
params.sql
スクリプトにすべての名前の変更を記録します。このスクリプトを編集して適切なパラメータを変更します。このスクリプトを実行しないでください。
表D-2に記載されている名前をGLOBALS
ファイルにリストします。使用する正しいパラメータは、表の「パラメータ」列に示されます。
表D-2 DDLオブジェクト名を変更するためのGLOBALSパラメータ
オブジェクト | パラメータ |
---|---|
マーカー表 |
|
履歴表 |
|
脚注 1 これらの表の名前は修飾しないでください。これらの表のスキーマ名は、GGSCHEMA
で指定されたスキーマ、またはGLOBALS
でGGSCHEMA
を指定していない場合は現在のユーザーのスキーマです。
トリガーベースのDDLレプリケーションでOracleの不可視索引を一意の識別子として認識できるようにするには、params.sql
スクリプトで次のパラメータをTRUE
に設定します。
define allow_invisible_index_keys = 'TRUE'
GLOBALS
ファイルとparams.sql
ファイルを保存して閉じます。
ディレクトリをOracle GoldenGateインストール・ディレクトリに変更します。
SQL*Plusのセッション、ビジネス・アプリケーションのセッション、Oracle GoldenGateのプロセスのセッションおよびOracleを使用するその他のソフトウェアのセッションなどのすべてのOracleセッションを終了します。新しいセッションの開始を回避します。
SQL*Plusを実行し、SYSDBA
権限を持つユーザーでログインします。この権限は、Oracleに必要なSYS
スキーマへのDDLトリガーのインストールに必要です。他のすべてのDDLオブジェクトは作成したスキーマにインストールされます。
marker_setup.sql
スクリプトを実行します。プロンプトが表示されたらOracle GoldenGateスキーマの名前を入力し、[Enter]を押してスクリプトを実行します。このスクリプトによって、Oracle GoldenGate DDLマーカー・システムのサポートがインストールされます。
@marker_setup.sql
ddl_setup.sql
スクリプトを実行します。構成したDDLスキーマの名前を指定するよう求められます。(注意: このスキーマの表領域が他のユーザーと共有されている場合、ddl_setup.sql
は失敗します。ただし、デフォルト表領域のAUTOEXTEND
がON
に設定(推奨設定)されていない場合、失敗しません。)
@ddl_setup.sql
role_setup.sql
スクリプトを実行します。プロンプトが表示されたら、DDLスキーマ名を入力します。このスクリプトによって、DDL同期に必要なロールが削除および作成され、Oracle GoldenGate DDLオブジェクトに対するDML権限が付与されます。
@role_setup.sql
作成されたロール(デフォルト名はGGS_GGSUSER_ROLE
)をすべてのOracle GoldenGate Extractのユーザーに付与します。プロセスに異なるユーザー名がある場合、複数の付与が必要になることがあります。
GRANTrole
TOuser
;
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
を使用する前にそのパッケージをインストールしてください。