適用対象
ExtractおよびReplicat
説明
DDLOPTIONSパラメータでは、フィルタリングおよび文字列置換以外のDDL処理を構成します。DDLOPTIONS文は複数使用可能ですが、1つの文のみを使用することをお薦めします。複数のDDLOPTIONS文を使用する場合は、相互に上書きしないように、それぞれを一意の文にする必要があります。複数のDDLOPTIONS文は、パラメータ・ファイルに指定された順に実行されます。
デフォルト
引数の説明を参照してください。
構文
DDLOPTIONS
[, ADDTRANDATA {ABEND | RETRYOP RETRYDELAY seconds MAXRETRIES retries}
[, DEFAULTUSERPASSWORD password [algorithm [ENCRYPTKEY DEFAULT | ENCRYPTKEY key_name]
[, CAPTUREGLOBALTEMPTABLE ]
[, DEFAULTUSERPASSWORDALIAS alias [DOMAIN domain] ]
[, GETAPPLOPS | IGNOREAPPLOPS]
[, GETREPLICATES | IGNOREREPLICATES]
[, IGNOREMAPPING]
[, MAPDERIVED | NOMAPDERIVED]
[, MAPSCHEMAS]
[, MAPSESSIONSCHEMA source_schema TARGET target_schema]
[, NOTAG]
[, PASSWORD algorithm ENCRYPTKEY {key_name | DEFAULT}]
[, REMOVECOMMENTS {BEFORE | AFTER}]
[, REPLICATEPASSWORD | NOREPLICATEPASSWORD]
[, REPORT | NOREPORT]
[, UPDATEMETADATA]
[, USEPASSWORDVERIFIERLEVEL {10|11}]
[, _USEOWNERFORSESSION]
ADDTRANDATA {ABEND | RETRYOP RETRYDELAY seconds MAXRETRIES retries}Extract (Teradata)に有効です。
プライマリ・データベース(読取り/書込み)でサプリメンタル・ロギングを有効にする必要があるため、クラシックExtractがActive Data Guardスタンバイ・データベースから読取り中の場合はサポートされません。マルチテナント・コンテナ・データベースではサポートされません。サプリメンタル・ロギングは、ADD SCHEMATRANDATAを使用する場合に有効にする必要があります。このオプションは、スキーマレベルのサプリメンタル・ロギングが環境のオプションでない場合のみ使用するようにしてください。
Oracleで無効になりました(使用すると警告が発行されます)。
ADDTRANDATAは次の目的で使用します。
CREATE TABLE文で作成された新しい表にOracleサプリメンタル・ロギングを自動的に有効化する。
列を追加または削除するALTER TABLE文の影響を受けた表のサプリメンタル・ロギングを更新する。
名前が変更された表のサプリメンタル・ロギングを更新する。
一意キーまたは主キーが追加または削除された表のサプリメンタル・ロギングを更新する。
デフォルトでは、ADDTRANDATAは無効です。追加のオプションなしでADDTRANDATAを使用した場合、デフォルトは次のとおりです。
DDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10
ADDTRANDATA機能を使用するには、DDL取得のために、Oracle GoldenGate、データベースおよび適切な表を構成する必要があります。Oracleの場合、Oracle GoldenGate DDLオブジェクトをインストールおよび構成する必要があります。詳細は、『Oracle DatabaseのためのOracle GoldenGateの使用』のOracle GoldenGateのためのデータベースの準備に関する項を参照してください。
CREATE TABLEで作成された新しい表の場合、ADDTRANDATAは、Oracle ALTER TABLEコマンドをADD SUPPLEMENTAL LOG GROUPオプションと一緒に発行することで、GGSCIでのデフォルトのADD TRANDATAコマンドと同じ結果を生成します。Oracle GoldenGateがこのコマンドを実行するのは、CREATE TABLEまたはALTER TABLEがソースで取得されるときです。サプリメンタル・ロギングに関して特別の要件がある場合は、DDLOPTIONS ADDTRANDATAではなく、ADD TRANDATAコマンドを使用してください。デフォルトでは、サプリメンタル・ロギングを追加するALTER TABLE文は、GETREPLICATESオプションが使用されていないかぎり、ターゲットにレプリケートされません。
名前が変更された表には、ADDTRANDATAは古い名前の表のサプリメンタル・ログ・グループを削除し、新しい表のサプリメンタル・ログ・グループを作成します。ADDTRANDATAを使用していない場合に表の名前を変更するときは、次の手順を実行して、ログ・グループを作成してから名前を変更してください。
データベース・インタフェースまたはGGSCIのDELETE TRANDATAコマンドを使用して、サプリメンタル・ログ・グループを削除します。
DELETE TRANDATA table_name
表の名前を変更します。
データベース・インタフェースまたはGGSCIのADD TRANDATAコマンドを使用して、新しいサプリメンタル・ログ・グループを作成します。
ADD TRANDATA table_name
新しいDDL操作の実行からADD TRANDATAの発効までの間に、ラグがあることがあります。影響を受ける表のデータをレプリケートする場合は、この間にこの表でのDML操作(INSERT、UPDATE、DELETE)を許可しないでください。許可すると、データはキャプチャされません。ADDTRANDATAの発効後にいつDMLを再開できるかを特定するには、次の操作を実行します。
GGSCIでExtractパラメータ・ファイルを編集します。
警告:
ローカル・オペレーティング・システムのキャラクタ・セット以外のキャラクタ・セットで作成されたパラメータ・ファイルを表示または編集するために、VIEW PARAMSまたはEDIT PARAMSコマンドを使用しないでください。GGSCI外部からファイルを表示してください。そうしない場合、内容が破損することがあります。
DDLOPTIONSにREPORTオプションを追加し、ファイルを保存して閉じます。
DDLOPTIONS [, DDLOPTIONS_option] [,...] , REPORT
Extractを停止および起動してパラメータへの変更を有効化します。
STOP EXTRACT group_name START EXTRACT group_name
Extractプロセス・レポートを表示します。
VIEW REPORT group_name
表にログ・グループを追加したALTER TABLE文を探し、このコマンドが発効になった時刻をメモします。次のようなエントリです。
Successfully added TRAN DATA for table with the key, table [MYSCHEMA1.MYTABLE], operation [ALTER TABLE "MYSCHEMA1"."MYTABLE" ADD SUPPLEMENTAL LOG GROUP "GGS_MYTABLE_53475" (MYID) ALWAYS /* GOLDENGATE_DDL_REPLICATION */ ].
新しい表でのDML操作を許可します。
ADDTRANDATAのオプションは次のとおりです。
DEFAULTUSERPASSWORD password [algorithm ENCRYPTKEY {key_name | DEFAULT}]Replicatに有効です。(Oracleのみ)
Oracle GoldenGate資格証明ストアが使用されていない場合に、DEFAULTUSERPASSWORDALIASオプションのかわりに使用できます。レプリケートされる{CREATE | ALTER} USER name IDENTIFIED BY password文に、ソース文で使用されているパスワードとは異なるパスワードを指定します。Replicatは、Extractがトレイルに書き込むプレースホルダを、指定されたパスワードに置き換えます。DEFAULTUSERPASSWORDを使用する場合、ExtractにはDDLOPTIONSのNOREPLICATEPASSWORDオプションを使用します。
オプションなしのDEFAULTUSERPASSWORD passwordでは、クリアテキストのパスワードを指定します。パスワードに大/小文字の区別がある場合は、そのように入力してください。
注意:
プロファイル/パスワードの検証ファンクションはSYSスキーマに存在する必要があるため、CREATE | ALTER PROFILEのレプリケーションは失敗します。これらのDDLを正常にレプリケートするには、SYSスキーマへのDDLは除外されるため、ソース/ターゲットの両方でパスワード検証ファンクションを手動で作成する必要があります。GGSCIのENCRYPT PASSWORDコマンドでパスワードが暗号化されている場合、次のオプションを使用します。
algorithmENCRYPT PASSWORDコマンドでパスワードの暗号化に使用した暗号化アルゴリズムを、AES128、AES192、AES256またはBLOWFISHの中から指定します。下位互換性のためにBlowfishが必要でないかぎり、AESを使用してください。AESはBlowfishよりもセキュアです。
ENCRYPTKEY key_nameENCKEYS参照ファイル内のユーザー作成の暗号化鍵の論理名を指定します。ENCRYPT PASSWORDがKEYNAME key_nameオプションとともに使用された場合に使用し、同じ鍵名を指定します。
ENCRYPTKEY DEFAULT指定すると、Oracle GoldenGateでランダムな鍵が使用されます。ENCRYPT PASSWORDがKEYNAME DEFAULTオプションとともに使用された場合に使用します。
Oracle GoldenGateのセキュリティ・オプションの詳細は、『Oracle GoldenGateの管理』を参照してください。
CAPTUREGLOBALTEMPTABLEOracleに有効
グローバル一時表(GTT) DDLをExtractに表示できるようになり、レプリケートできます。デフォルトでは、GTT DDLはExtractに表示できないため、CAPTUREGLOBALTEMPTABLEを使用することで、GTT DDLを含むようにExtractを設定できます(GTT DDLはDDL文によってフィルタ可能で、渡されるとトレイルに書き込まれます)。GTT DDLは、トレイルに存在する場合はReplicatに含まれ、DDL文によってフィルタされ、渡されると実行されます。
トリガーバージョンのExtractの場合、表がGTTかどうかに関係なく、このオプションはfalseに設定されます。
DEFAULTUSERPASSWORDALIAS alias [DOMAIN domain]Replicatに有効です。(Oracleのみ)
Oracle GoldenGate資格証明ストアが使用されていない場合に、DEFAULTUSERPASSWORDオプションのかわりに使用できます。レプリケートされたCREATE USERまたはALTER USER文のIDENTIFIED BY句のパスワードを置き換える、資格証明の別名を指定します。別名は、Oracle GoldenGate資格証明ストアの暗号化パスワードに解決されます。Replicatは、Extractがトレイルに書き込むプレースホルダを、解決されたパスワードに置き換えてからDDLをターゲットに適用します。
DEFAULTUSERPASSWORDALIASを使用する場合、ExtractにはDDLOPTIONSのNOREPLICATEPASSWORDオプションを使用します。
alias置換パスワードとして使用されるパスワードの資格証明の別名を指定します。この資格証明は、Oracle GoldenGate資格証明ストアに存在する必要があります。使用する別名が不明な場合は、INFO CREDENTIALSTOREコマンドを発行して資格証明ストアの内容を調べることができます。
DOMAIN domain資格証明ストアの指定されたユーザーに割り当てられるドメインを指定します。
Oracle GoldenGateセキュリティの詳細は、『Oracle GoldenGateの管理』を参照してください。
GETAPPLOPS | IGNOREAPPLOPSExtractに有効です。(Oracleのみ)
Replicat以外のビジネス・アプリケーションが生成したDDL操作を、Extractがトレイルまたはファイルに書き込むコンテンツに含めるかどうかを制御します。GETAPPLOPSおよびIGNOREAPPLOPSは、GETREPLICATESおよびIGNOREREPLICATESオプションとともに使用して、双方向またはカスケード構成で伝播するDDLを制御できます。
双方向構成では、GETAPPLOPSとIGNOREREPLICATESを使用します。UPDATEMETADATAオプションも使用する必要があります。
カスケード構成では、DDL操作をターゲットにカスケードするシステム上で、IGNOREAPPLOPSとGETREPLICATES使用します。
デフォルトはGETAPPLOPSです。
GETREPLICATES | IGNOREREPLICATESExtractに有効です(Oracleのみ)。Replicatが生成したDDL操作をExtractがトレイルまたはファイルに書き込むコンテンツに含めるかどうかを制御します。デフォルトはIGNOREREPLICATESです。詳細は、DDLOPTIONSのGETAPPLOPS | IGNOREAPPLOPSオプションを参照してください。
IGNOREMAPPINGReplicatに有効です。DDLがMAPPED範囲かUNMAPPED範囲かを決定する名前マッピングの評価を無効化します。このオプションにより、ソースとターゲットのスキーマ名およびオブジェクト名が一致するためマッピング機能が不要な場合に、like-to-like DDLレプリケーション構成のパフォーマンスが向上します。IGNOREMAPPINGを有効にすると、MAPPEDまたはUNMAPPED範囲を決定できず、すべてのDDL文はOTHER範囲として処理されます。ソースのスキーマおよびオブジェクト名がターゲット上で異なるスキーマおよびオブジェクト名にマッピングされている場合、このパラメータを使用しないでください。
MAPDERIVED | NOMAPDERIVEDReplicat(OracleおよびTeradata)に有効です。導出オブジェクト名のマッピング方法を制御します。
MAPDERIVED導出オブジェクトのMAP文が存在する場合、名前はその文のTARGET句に指定されている名前にマッピングされます。それ以外の場合、名前はベース・オブジェクトを含むMAP文のTARGET句に指定されている名前にマッピングされます。MAPDERIVEDはデフォルトです。
NOMAPDERIVED名前のマッピングを行わないようにします。NOMAPDERIVEDは、導出オブジェクトの名前を含むすべての明示的なMAP文より優先されます。
導出されたオブジェクトのDDLレプリケーションでの処理方法の詳細は、『Oracle DatabaseのためのOracle GoldenGateの使用』のDDLレプリケーション環境の管理に関する項を参照してください。
MAPSCHEMASReplicat(OracleおよびTeradata)に有効です。MAPSESSIONSCHEMAを使用している場合のみ使用します。
MAPSESSIONSCHEMAは、セッション・スキーマのソース・ターゲット間のマッピングを確立し、スキーマがDDLで修飾されていないオブジェクトに使用されます。
MAPSCHEMASは、修飾されたスキーマがソースDDLに存在するが、MAPを使用したマッピングは修飾しないオブジェクトを、MAPSESSIONSCHEMAと同じセッション・スキーマ間のマッピングにマップします。そのようなオブジェクトの例には、AS SELECT句内の導出オブジェクトが含まれているOracleのCREATE TABLE AS SELECT文や、TeradataのCREATE REPLICATION RULESET文があります。
このマッピングは、MAP文で指定されたマッピング後に行われます。
例として、次のDDL文がソースOracleデータベースで発行されるとします。
create table a.t as select from b.t;
ターゲット上でのMAP文は次のようになるとします。
MAP a.*, TARGET c.*; DDLOPTIONS MAPSESSIONSCHEMA b, TARGET b1, MAPSCHEMAS
このマッピングの結果、Replicatはターゲット上に次のDDL文を発行します。
create table c.t as select from b1.t;
ベース表は、TARGET句(スキーマc)に従ってマップされます。
修飾された導出オブジェクト(SELECT FROM内の表t)は、MAPSCHEMASが存在するため、MAPSESSIONSCHEMA (スキーマb1)に従ってマップされます。
MAPSCHEMASを指定しない場合、MAPSESSIONSCHEMAのみが未修飾のオブジェクトをマップするため、導出オブジェクトは、(TARGET句で指定した)スキーマcにマップされます。
MAPSESSIONSCHEMA source_schema TARGET target_schemaReplicatに有効です(Oracleのみ)。ソースのセッション・スキーマを、ターゲット上の異なるセッション・スキーマにマッピング(変換)します。
source_schemaは、ソース上でALTER SESSION set CURRENT_SCHEMAで設定されているセッション・スキーマです。
target_schemaは、ターゲット上でALTER SESSION set CURRENT_SCHEMAで設定されているセッション・スキーマです。
ワイルドカードはサポートされていません。複数のMAPSESSIONSCHEMAパラメータを使用して、異なるスキーマをマップできます。
MAPSESSIONSCHEMAは、マスターまたは導出オブジェクト名に基づくすべてのスキーマ名マッピングより優先されます。
このセクション最後の使用例を参照してください。
MAPSCHEMASも参照してください。
NOTAGReplicatに有効
ReplicatがREDOタグ(デフォルト・タグ'00'またはDBOPTIONSパラメータのSETTAGオプションによって設定されるタグ)を使用して適用するDDLのタグ付けを禁止します。このオプションは双方向構成で使用します。双方向構成では、GETREPLICATESが使用され、Replicatが適用したDDLをメタデータのリフレッシュのためExtractがキャプチャする必要があります。
PASSWORD algorithm ENCRYPTKEY {key_name | DEFAULT}Extractに有効です(Oracleのみ)。
DDLをトレイルに書き込む前に、ExtractにソースDDLのすべてのパスワードを暗号化させます。
REMOVECOMMENTS {BEFORE | AFTER}(オプション) ExtractおよびReplicatに有効です(Oracleのみ)。DDL操作からコメントを削除するかどうかを制御します。デフォルトでは、DDLSUBSTパラメータを使用して文字列の置換で使用できるように、コメントは削除されません。詳細は、DDLSUBSTを参照してください。
REPLICATEPASSWORD | NOREPLICATEPASSWORDExtractに有効です(Oracleのみ)。{CREATE | ALTER} USER user IDENTIFIED BY passwordコマンドのパスワードに適用します。
デフォルト(REPLICATEPASSWORD)では、Oracle GoldenGateはターゲットのCREATEまたはALTER文でソース・パスワードを使用します。
ソース・パスワードのターゲットへの送信を防ぐには、NOREPLICATEPASSWORDを使用します。
NOREPLICATEPASSWORDを使用する場合は、DDLOPTIONS文とDEFAULTUSERPASSWORDまたはReplicatパラメータ・ファイルのDEFAULTUSERPASSWORDALIASオプションを使用して、ターゲットDDL文用のパスワードを指定します。
REPORT | NOREPORTExtractおよびReplicat(OracleおよびTeradata)に有効です。レポート・ファイルに詳しいDDL処理情報を書き込むかどうかを制御します。デフォルトのNOREPORTでは、基本的なDDL統計をレポートします。REPORTでは、使用しているパラメータ、および処理された操作のステップバイステップの履歴をレポートに追加します。
UPDATEMETADATAReplicatに有効です(Oracleのみ)。アクティブアクティブの双方向構成で使用します。このパラメータは、DDLが開始されたシステム上のReplicatに、もう一方のシステムにこのDDLが伝播されたため、新しいメタデータにあわせてすぐにオブジェクト・メタデータ・キャッシュを更新するように通知します。これにより、Replicatのメタデータ・キャッシュと、ローカル・データベースの現在のメタデータの同期性を維持します。
USEPASSWORDVERIFIERLEVEL {10|11}OracleからOracleの構成でのみ有効です。DDL CREATE USER文で送信されるパスワード・ベリファイアに変更が必要かどうかを確認します。この確認を行う理由は、Oracleにはデータベース・バージョンに応じて異なるパスワード・ベリファイアがあるためです。
10g: user$.passwordに保持されている弱いベリファイア。
11g: SHA-1ベリファイア。
12c: SHA-2およびHTTPダイジェスト・ベリファイア。
SHA-1、SHA-2およびHTTPベリファイアは、'S:<SHA-1-verifier>;H:<http-verifier>;T:<SHA-2-verifier>'という形式でuser$.spare4に取得されます。Integrated Extractは、12cではcreate user DDL文に対して次のDDLを返します。
12.0.1.0では、CREATE USER username IDENTIFIED BY VALUES 'S:SHA-1;H:http;weak'を返します。
12.0.2.0以降では、CREATE USER username IDENTIFIED BY VALUES 'S:SHA-1;H:http;T:SHA-2;weak'を返します。
ReplicatをOracle 12cに対して実行する場合、これらのCREATE USERフォームはRDBMSレベルで処理されますが、ReplicatをOracle 10gまたは11に対して実行する場合、これらのフォームはRDBMSによって処理されません。Oracle 10gは弱いベリファイアのみを受け入れ、Oracle 11gはS:SHA-1および弱いベリファイアのみを受け入れます。
Oracle 12cに接続されたExtractに対して生成されたCREATE USER DDLを、Oracle 10gまたは11gに接続されたReplicatで使用できるようにするには、次のように、このパラメータを使用して不要なベリファイアをフィルタリングで除外できます。
USEPASSWORDVERIFIERLEVELを10に設定した場合、弱いベリファイア以外はすべてCREATE USER DDL検証文字列からフィルタリングで除外されます。
USEPASSWORDVERIFIERLEVELを11に設定した場合、S:SHA-1および弱いベリファイア以外はすべてCREATE USER DDL検証文字列からフィルタリングで除外されます。
例
次に、MAPSESSIONSCHEMAを使用して、ソース・セッション・スキーマをターゲット上の別のスキーマにマッピングする方法を示します。
ExtractおよびReplicatで、次のようにDDL取得およびマッピングが構成されているとします。
Extract:
DDL INCLUDE OBJNAME SRC.* INCLUDE OBJNAME SRC1.* TABLE SRC.*; TABLE SRC1.*; DDL INCLUDE OBJNAME SRC.* INCLUDE OBJNAME SRC1.* TABLE SRC.*; TABLE SRC1.*;
Replicat:
DDLOPTIONS MAPSESSIONSCHEMA SRC TARGET DST DDLOPTIONS MAPSESSIONSCHEMA SRC1 TARGET DST1 MAP SRC.*, TARGET DST.*; MAP SRC1.*, TARGET DST1.*; DDL INCLUDE OBJNAME DST.* INCLUDE OBJNAME DST1.*
ソースのログイン・ユーザーによって、次のDDL文が発行されるとします。
ALTER SESION SET CURRENT_SCHEMA=SRC; CREATE TABLE tab (X NUMBER); CREATE TABLE SRC1.tab (X NUMBER) AS SELECT * FROM tab;
Replicatは、次のようなDDLを実行します(各コード・セグメントの前に説明を記載しています)。
-- Set session to DST, because SRC.* is mapped to DST.* in MAP statement. ALTER SESION SET CURRENT_SCHEMA=DST; -- Create the first TAB table in the DST schema, using the DST session schema. CREATE TABLE DST.tab (X NUMBER); -- Restore Replicat schema. ALTER SESSION SET CURRENT_SCHEMA=REPUSER -- Set session schema to DST, per MAPSESSIONSCHEMA, so that AS SELECT succeeds. ALTER SESION SET CURRENT_SCHEMA=DST; -- Create the DST1.TAB table AS SELECT * FROM the first table (DST.TAB). CREATE TABLE DST1.tab (X NUMBER) AS SELECT * FROM tab; -- Restore Replicat schema. ALTER SESSION SET CURRENT_SCHEMA=REPUSER
MAPSESSIONSCHEMAを指定しない場合、SELECT * FROM TABは存在しないSRC.TAB表からの選択を試み、失敗します。デフォルトでは、ソース・スキーマを、ターゲットDDL文の未修飾のオブジェクトに適用します。その場合、DDL文は次のようになり、失敗します。
-- Set session to DST, because SRC.* is mapped to DST.* in MAP statement. ALTER SESION SET CURRENT_SCHEMA=DST; -- Create the first TAB table in the DST schema, using the DST session schema. CREATE TABLE DST.tab (X NUMBER); -- Restore Replicat schema. ALTER SESSION SET CURRENT_SCHEMA=REPUSER -- Set session schema to SRC, because TAB in the AS SELECT is unqualified-- and SRC is the source session schema. ALTER SESION SET CURRENT_SCHEMA=SRC; -- Create DST1.TAB AS SELECT * from SRC.TAB (SRC=current session schema). CREATE TABLE DST1.tab (X NUMBER) AS SELECT * FROM tab; -- SRC.TAB does not exist. -- Abend with an error unless the error is handled by a DDLERROR statement.
次に、DEFAULTUSERPASSWORDALIASを使用して、レプリケートされる{CREATE | ALTER} USER name IDENTIFIED BY password文にソース文で使用されたものとは異なるパスワードを指定する方法を示します。この例では、別名ddlaliasが資格証明ストアのtargetドメインにあります。
DDLOPTIONS DEFAULTUSERPASSWORDALIAS ddlalias DOMAIN target