説明
DDLSUBST
パラメータでは、DDL操作内の文字列を置換します。たとえば、ある表の名前を別の名前に置換したり、コメント内の文字列を置換したりできます。検索では、大/小文字は区別されません。文字列の中で引用符を表すには、二重引用符を使用します。
DDLSUBST使用のガイドライン
DDLSUBST
は、列名およびデータ型をターゲット上の別の列名やデータ型に変換する目的では使用しないでください。この方法でターゲット・オブジェクトの構造を変更すると、データがターゲットにレプリケートされたときにエラーが発生します。同様に、DDLSUBST
は、ターゲットDDL文の所有者および表名を変更する目的では使用しないでください。レプリケートされるDDL操作を異なるターゲット・オブジェクトにマップするときは、常にMAP
文を使用してください。
DDLSUBST
は、パラメータ・ファイル内における相対順位にかかわらず、常にDDL
パラメータよりも後に実行されます。フィルタリングが先に実行されるため、文字列置換で使用する基準に対応するフィルタリング基準を使用してください。次のパラメータ文を例に取り上げます。
DDL INCLUDE OBJNAME fin.* DDLSUBST 'cust' WITH 'customers' INCLUDE OBJNAME sales.*
この例では、INCLUDE
文とDDLSUBST
文のオブジェクトが異なるため、文字列置換は発生しません。fin
に所有されているオブジェクトはOracle GoldenGate DDL構成に含まれていますが、sales
に所有されているオブジェクトは含まれていません。
DDLSUBST
パラメータは、複数使用できます。これらは、パラメータ・ファイルにリストされた順に実行されます。
コメントを含むOracle DDLに対して、コメントの文字列置換を実行する場合、DDLOPTIONS
パラメータとともにREMOVECOMMENTS BEFORE
オプションを使用しないでください。REMOVECOMMENTS BEFORE
を使用すると、文字列置換が発生する前にコメントを削除します。コメントを削除し、かつ文字列置換を行う場合は、REMOVECOMMENTS AFTER
オプションを使用してください。
データベースによって課される制限を除き、置換する文字列に最大サイズの制限はありません。文字列のサイズがデータベースの制限を越えると、この操作を実行しているExtractまたはReplicatプロセスは異常終了します。
構文
DDLSUBST 'search_string' WITH 'replace_string' [INCLUDE inclusion_clause | EXCLUDE exclusion_clause]
'search_string'
ソースDDL文に含まれる置換対象の文字列。文字列は一重引用符で囲みます。文字列で引用符を表すには、二重引用符を使用します。
WITH
必須のキーワード。
'replace_string'
ターゲットDDLで置換文字列として使用する文字列。文字列は一重引用符で囲みます。文字列で引用符を表すには、二重引用符を使用します。
INCLUDE
inclusion_clause
| EXCLUDE
exclusion_clause
1つまたは複数のINCLUDE
およびEXCLUDE
文を指定して、文字列置換ルールを適用するDDL操作をフィルタリングします。構文および使用方法は、「DDLのフィルタリング・オプション」を参照してください。
例
次の例では、fin
スキーマ内の表の文字列cust
を文字列customers
に置換します。
DDLSUBST 'cust' WITH 'customers' INCLUDE ALL OBJTYPE 'table' OBJNAME fin.*
次の例では、DDL
コマンドに単語logfile
が含まれている場合にのみ新しいディレクトリに置換します。検索文字列が複数回検出された場合、置換文字列は複数回挿入されます。
DDLSUBST '/file1/location1' WITH '/file2/location2' INCLUDE INSTR 'logfile'
次の例では、複数のDDLSUBST
文を使用します。文はリストされている順番に実行されます。
DDLSUBST 'a' WITH 'b' INCLUDE ALL DDLSUBST 'b' WITH 'c' INCLUDE ALL
前述の最終結果では、すべてのa
およびb
文字列がc
に置換されます。