DDLSUBST
有効な対象
ExtractおよびReplicat
摘要
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に対して、コメントの文字列置換を実行する場合、REMOVECOMMENTS BEFOREパラメータとともにDDLOPTIONSオプションを使用しないでください。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フィルタリング・オプションを参照してください。
例
例1
次の例では、finスキーマ内の表の文字列custを文字列customersに置換します。
DDLSUBST 'cust' WITH 'customers'
INCLUDE ALL OBJTYPE 'table' OBJNAME fin.*
例2
次の例では、DDLコマンドに単語logfileが含まれている場合にのみ新しいディレクトリに置換します。検索文字列が複数回検出された場合、置換文字列は複数回挿入されます。
DDLSUBST '/file1/location1' WITH '/file2/location2' INCLUDE INSTR 'logfile'
例3
次の例では、複数のDDLSUBST文を使用します。文はリストされている順番に実行されます。
DDLSUBST 'a' WITH 'b' INCLUDE ALL
DDLSUBST 'b' WITH 'c' INCLUDE ALL
前述の最終結果では、すべてのaおよびb文字列がcに置換されます。