15 DDLレプリケーション環境の管理
Oracle GoldenGateのDDLサポートを構成する手順については、「DDLサポートの構成」を参照してください。
注意:
この章は、トリガーベースのDDLキャプチャが使用されているクラシック・キャプチャ・モードまたは統合キャプチャ・モードにのみ関係があります。
内容は次のとおりです。
- DDL処理の一時的な無効化
指定されている場合、インスタンス化タスクまたはその他のタスクを実行する前に、DDLアクティビティを無効化する必要があります。 - DDLトリガーの有効化と無効化
Oracle GoldenGate内で構成を変更せずにDDL操作をキャプチャするトリガーを有効および無効にできます。 - DDLマーカー表の保持
マーカー表から行をいつでもパージできます。DDL履歴は保持されません。 - DDLマーカー表の削除
DDLの同期を中止する場合を除き、DDLマーカー表を削除しないでください。 - DDL履歴表の保持
DDL履歴表をパージしてそのサイズを制御できますが、これは慎重に実行してください。 - DDL履歴表の削除
履歴表とDDLトリガーは互いに依存します。DDLトリガーが有効である場合に履歴表をドロップすると失敗します。これは、トリガーが無効になり、DDL操作が見つからないことを回避するための安全対策です。 - DDLトレース・ファイルのパージ
DDLトレース・ファイルでディスクの空き容量を必要以上に消費しないようにするには、定期的にddl_cleartrace
スクリプトを実行します。 - DDLサポートが有効である場合のデータベースのパッチおよびアップグレードの適用
通常、データベースのパッチおよびアップグレードによってOracle GoldenGateのDDLトリガーとOracle GoldenGateのその他のDDLオブジェクトが無効化されます。 - DDLサポートが有効である場合のOracle GoldenGateのパッチおよびアップグレードの適用
パッチまたはアップグレードをDDLオブジェクトに適用するには、次の手順を実行します。 - 既存のDDL環境のクリーン状態への復元
Oracle GoldenGateのDDLオブジェクトを完全に削除してから再インストールするには、次の手順を実行します。 - システムからのDDLオブジェクトの削除
この手順によって、DDL環境が削除され、ソースとターゲットのDDL操作間で連続性を維持する履歴が削除されます。
DDL処理の一時的な無効化
指定されている場合、インスタンス化タスクまたはその他のタスクを実行する前に、DDLアクティビティを無効化する必要があります。
タスクの終了後、DDL処理を再開できます。
- ソース・データベースでユーザーのDDL操作を無効化します。
- 以前のDDLレプリケーション・プロセスがまだアクティブな場合は、これらのプロセスを停止する前に、最後に実行したDDL操作がターゲットに適用されたことを確認して、ロード・データが正しいメタデータを持つオブジェクトに適用されるようにします。
- 新しいOracle GoldenGate環境用に構成したExtractおよびReplicatパラメータ・ファイルで、
DDL
パラメータをコメント・アウトします。DDLをサポートするその他のパラメータをすべて、コメント・アウトします。 - Oracle GoldenGate DDLトリガーが使用されている場合、無効化します。「DDLトリガーの有効化と無効化」を参照してください。
親トピック: DDLレプリケーション環境の管理
DDLトリガーの有効化と無効化
Oracle GoldenGate内で構成を変更せずにDDL操作をキャプチャするトリガーを有効および無効にできます。
次のスクリプトによって、DDLトリガーが制御されます。
-
ddl_disable
: トリガーを無効にします。トリガーを無効にした後、DDL操作はこれ以上キャプチャまたはレプリケートされません。 -
ddl_enable
: トリガーを有効にします。トリガーを有効にすると、Oracle GoldenGateによって現在のDDL変更がキャプチャされますが、トリガーを無効にしている間に生成されたDDLはキャプチャされません。
これらのスクリプトを実行する前に、Oracle GoldenGateのプロセス、SQL*Plus、ビジネス・アプリケーションおよびOracleを使用するその他のソフトウェアのセッションなど、これまでDDLを発行したすべてのセッションを無効にします。それを行わない場合、データベースでORA-04021エラーが生成される可能性があります。ソース・システムおよびターゲット・システムでDDLの一貫性を維持する場合には、これらのスクリプトを使用しないでください。
親トピック: DDLレプリケーション環境の管理
DDLマーカー表の保持
マーカー表から行をいつでもパージできます。DDL履歴は保持されません。
マーカー表をパージするには、ManagerパラメータPURGEMARKERHISTORY
を使用します。Managerによって、次のいずれかからマーカー表の名前が取得されます。
-
GLOBALS
ファイルのMARKERTABLE
パラメータで指定した名前(指定した場合)。 -
デフォルト名である
GGS_MARKER
。
PURGEMARKERHISTORY
によって、最終変更日に基づいて行を保持する時間の最大時間と最小時間を指定するオプションが提供されます。詳細は、『Oracle GoldenGateリファレンス』を参照してください。
親トピック: DDLレプリケーション環境の管理
DDLマーカー表の削除
DDLの同期を中止する場合を除き、DDLマーカー表を削除しないでください。
マーカー表とDDLトリガーは互いに依存します。DDLトリガーが有効である場合にマーカー表をドロップすると失敗します。これは、トリガーが無効になり、DDL操作が見つからないことを回避するための安全対策です。マーカー表を削除すると、次のエラーが生成されます。
ORA-04098: trigger 'SYS.GGS_DDL_TRIGGER_BEFORE' is invalid and failed re-validation
Oracle GoldenGateのDDLオブジェクトを削除する正しい方法は、残りのDDL環境をどうするかによって異なります。正しい手順を選択するには、次のいずれかを参照してください。
親トピック: DDLレプリケーション環境の管理
DDL履歴表の保持
DDL履歴表をパージしてそのサイズを制御できますが、これは慎重に実行してください。
DDL履歴表によって、DDL同期環境の整合性が維持されます。この表へのパージは、Oracle GoldenGateのインタフェースを介してリカバリすることはできません。
-
DDLの履歴を損失するあらゆる可能性を回避するには、定期的に履歴表の完全バックアップを作成します。
-
パージされたDDLを確実にリカバリできるようにするには、履歴テーブルに対してOracle Flashbackを有効にします。フラッシュバック保存時間は、それが必要になる可能性がある時点を大幅にさかのぼって設定します。たとえば、完全バックアップが最大1週間分である場合は、2週間分のフラッシュバックを保持します。Oracle GoldenGateを過去にさかのぼってフラッシュバックに配置し、再処理することが可能です。
-
可能な場合、DDL履歴表を手動でパージして、必須の行が誤ってパージされることがないようにします。自動パージ・メカニズムが必要な場合、Managerパラメータ・ファイルで
PURGEDDLHISTORY
パラメータを使用します。行を保持する最大時間および最小時間を指定できます。詳細は、『Oracle GoldenGateリファレンス』を参照してください。
注意:
パフォーマンスを向上させるためにOracle GoldenGateによって作成される一時表は、同じルールに従ってDDL履歴表と同時にパージされる場合があります。これらの表の名前は履歴表の名前から取得され、それらのパージがManagerレポート・ファイルで報告されます。これは正常な動作です。
親トピック: DDLレプリケーション環境の管理
DDL履歴表の削除
履歴表とDDLトリガーは互いに依存します。DDLトリガーが有効である場合に履歴表をドロップすると失敗します。これは、トリガーが無効になり、DDL操作が見つからないことを回避するための安全対策です。
DDLの同期を中止する場合を除き、DDL履歴表を削除しないでください。履歴表には、発行されたDDL操作のレコードが含まれています。ソース・データベースのREDO互換性が11.2.0.4以上になる場合と同様に、ExtractがDDLトリガーを使用するから、トリガーを使用しないに切り替えると、ただちにではありませんが、これらのデータベースを削除できます。互換性変更の前に生成されたREDOのすべてのマイニングを完了し、このREDOの再マイニングが不要になるようにする必要があります。
履歴表を削除すると、次のエラーが生成されます。
ORA-04098: trigger 'SYS.GGS_DDL_TRIGGER_BEFORE' is invalid and failed re-validation
Oracle GoldenGateのDDLオブジェクトを削除する正しい方法は、残りのDDL環境をどうするかによって異なります。正しい手順を選択するには、次のいずれかを参照してください。
親トピック: DDLレプリケーション環境の管理
DDLトレース・ファイルのパージ
DDLトレース・ファイルでディスクの空き容量を必要以上に消費しないようにするには、定期的にddl_cleartrace
スクリプトを実行します。
このスクリプトによってトレース・ファイルが削除されますが、Oracle GoldenGateによってそれが再作成されます。
DDLトレース・ファイルのデフォルト名はggs_ddl_trace.log
です。それはOracleのUSER_DUMP_DEST
ディレクトリにあります。ddl_cleartrace
スクリプトは、Oracle GoldenGateディレクトリにあります。
親トピック: DDLレプリケーション環境の管理
DDLサポートが有効である場合のデータベースのパッチおよびアップグレードの適用
通常、データベースのパッチおよびアップグレードによってOracle GoldenGateのDDLトリガーとOracle GoldenGateのその他のDDLオブジェクトが無効化されます。
データベースのパッチを適用する前に、次の手順を実行します。
SYSDBA
権限を持つユーザーとしてSQL*Plusにログインします。- SQL*Plusで
ddl_disable
スクリプトを実行して、Oracle GoldenGateのDDLトリガーを無効にします。 - パッチを適用します。
- SQL*Plusで
ddl_enable
スクリプトを実行して、DDLトリガーを有効にします。
注意:
通常、データベースのアップグレードおよびパッチはOracleのオブジェクトに対して動作します。Oracle GoldenGateによってそれらのオブジェクトが自動的にフィルタ処理で除外されるため、それらの手順のDDLはレプリケーションの再開時にレプリケートされません。
パッチまたはアップグレード後の再コンパイル・エラー(処理の前にトリガーを無効にしていない場合に発生)を回避するには、スクリプト内の適切な場所に @ddl_disable
および@ddl_enable
のコールを追加することを検討してください。
親トピック: DDLレプリケーション環境の管理
DDLサポートが有効である場合のOracle GoldenGateのパッチおよびアップグレードの適用
パッチまたはアップグレードをDDLオブジェクトに適用するには、次の手順を実行します。
この項では、DDLサポートが有効である場合に、Oracle GoldenGateのパッチおよびアップグレードを適用する方法について説明します。
注意:
ご使用のOracle GoldenGateリリースのリリース・ノートまたはアップグレード・ドキュメントにこの項に示す手順と同様の手順が記載されている場合は、この項の手順ではなくそれらの手順に従ってください。30Kよりも大きいDDL文をサポートしていないOracle GoldenGateのバージョン(バージョン10.4以前)からのアップグレードにこの手順を使用しないでください。その場合にアップグレードするには、「既存のDDL環境のクリーン状態への復元」の手順を実行します。
この手順では、新しいビルドにクリーン・インストールが必要であるかどうかに応じて、現在のDDL同期構成が保持される、あるいは保持されない場合があります。
親トピック: DDLレプリケーション環境の管理
既存のDDL環境のクリーン状態への復元
Oracle GoldenGateのDDLオブジェクトを完全に削除してから再インストールするには、次の手順を実行します。
この手順によって新しいDDL環境が作成されますが、現在のDDL履歴は削除されます。
注意:
この手順では、オブジェクトの相互依存性のため、すべてのオブジェクトを削除して再インストールする必要があります。
親トピック: DDLレプリケーション環境の管理
システムからのDDLオブジェクトの削除
この手順によって、DDL環境が削除され、ソースとターゲットのDDL操作間で連続性を維持する履歴が削除されます。
注意:
オブジェクトの相互依存性のため、すべてのオブジェクトを削除する必要があります。
親トピック: DDLレプリケーション環境の管理