明細選項
有效對象
擷取與 Replicat
說明
使用 DDLOPTIONS 參數來設定除了篩選和字串替代之外的 DDL 處理層面。您可以使用多個 DDLOPTIONS 敘述句,但建議使用其中一個敘述句。如果使用多個 DDLOPTIONS 陳述式,請將每個陳述式設為唯一,這樣就不會置換另一個陳述式。系統會依參數檔中所列的順序執行多個 DDLOPTIONS 敘述句。
預設
請參考參數描述
語法
DDLOPTIONS
[, DEFAULTUSERPASSWORD <password>] [<algorithm> [ENCRYPTKEY DEFAULT | ENCRYPTKEY] <key_name>]
[, CAPTUREGLOBALTEMPTABLE ]
[, DEFAULTUSERPASSWORDALIAS <alias> [DOMAIN <domain>] ]
[, EXCLUDETAG {<tag> | + | NULL}]
[, IGNOREMAPPING]
[, INCLUDETAG {<tag> | +}][, MAPDERIVED | NOMAPDERIVED]
[, MAPSCHEMAS]
[, MAPSESSIONSCHEMA <source_schema> TARGET <target_schema>]
[, NLSLENGTHSEMANTICS CHAR | BYTE | DEFAULT][, NOAPPLYGLOBALTEMPTABLE]
[, NOTAG]
[, PASSWORD <algorithm> ENCRYPTKEY {<key_name> | DEFAULT}]
[, REMOVECOMMENTS {BEFORE | AFTER}]
[, REPLICATEPASSWORD | NOREPLICATEPASSWORD]
[, REPORT | NOREPORT]
[, UPDATEMETADATA]
[, USEPASSWORDVERIFIERLEVEL {10|11}]
[, _USEOWNERFORSESSION]
[, WARNONLARGEDDL]
DEFAULTUSERPASSWORD *password* [*algorithm* ENCRYPTKEY {*key_name* | DEFAULT}]
適用於 Replicat。(僅限 Oracle)
如果未使用 Oracle GoldenGate 證明資料存放區,則可改用 DEFAULTUSERPASSWORDALIAS 選項。為複製的 {CREATE | ALTER} USER <name> IDENTIFIED BY <password> 陳述式,指定來源陳述式中使用的不同密碼。Replicat 會以指定的密碼取代 Extract 寫入歷程檔的預留位置。使用 DEFAULTUSERPASSWORD 時,請使用 DDLOPTIONS 的 NOREPLICATEPASSWORD 選項來進行 Extract。
沒有選項的 DEFAULTUSERPASSWORD <password> 會指定純文字密碼。如果密碼有區分大小寫,請依大小寫輸入密碼。
注意:複製 CREATE | ALTER PROFILE 將會失敗,因為 SYS 綱要中必須要有設定檔 / 密碼驗證函數。若要順利複製這些 DDL,必須手動在兩個來源 / 目標上建立密碼驗證函數,因為系統會排除 DDL 至 SYS 綱要。
如果密碼使用 ENCRYPT PASSWORD 命令加密,請使用下列選項:
algorithm
指定使用 ENCRYPT PASSWORD 命令加密密碼時所使用的加密演算法:AES128 或 AES192、AES256。
ENCRYPTKEY key_name
在 ENCKEYS 查詢檔案中指定使用者建立的加密金鑰邏輯名稱。在 ENCRYPT PASSWORD 與 KEYNAME <key_name> 選項搭配使用時使用,並指定相同的金鑰名稱。
ENCRYPTKEY DEFAULT
指示 Oracle GoldenGate 使用隨機金鑰。如果搭配 KEYNAME DEFAULT 選項使用 ENCRYPT PASSWORD,請使用此選項。
CAPTUREGLOBALTEMPTABLE
適用於 Oracle
允許 Extract 看見全域暫時表格 (GTT) DDL,以便複製它們。依照預設,「擷取」不會見到 GTT D DDL,因此使用 CAPTUREGLOBALTEMPTABLE,您可以將「擷取」設為包括可由 DDL 陳述式篩選的 GTT D DDL,如果通過,則會寫入歷程檔。
Replicat 若通過篩選條件,便會篩選並執行歷程檔中的 GTT DDL。
對於 Extract 的觸發版本,無論表格是否為 GTT,此選項都會設為 false。
DEFAULTUSERPASSWORDALIAS *alias* [DOMAIN *domain*]
適用於 Replicat。(僅限 Oracle)
如果使用 Oracle GoldenGate 證明資料存放區,可以使用它來取代 DEFAULTUSERPASSWORD 選項。指定其密碼取代複製 CREATE USER 或 ALTER USER 敘述句之 IDENTIFIED BY 子句中的證明資料別名。別名會解析成 Oracle GoldenGate 證明資料存放區中的加密密碼。Replicat 會在將 DDL 套用至目標之前,以解析的密碼取代 Extract 寫入歷程檔的預留位置。
使用 DEFAULTUSERPASSWORDALIAS 時,請使用 DDLOPTIONS 的 NOREPLICATEPASSWORD 選項來進行 Extract。
alias
指定其密碼將用於取代密碼之證明資料的別名。此證明資料必須存在於 Oracle GoldenGate 證明資料存放區中。如果不確定要使用什麼別名,您可以發出 INFO CREDENTIALSTORE 命令來檢查證明資料存放區的內容。
DOMAIN 網域
指定在證明資料存放區中指派給指定使用者的領域。
EXCLUDETAG {*tag* | + | NULL}]
適用於 Extract。(僅限 Oracle)
注意:從 Oracle GoldenGate 26ai 開始,已增強使用 EXCLUDETAG 和 INCLUDETAG 選項的語法,且應改用已移除的 GETREPLICATES、IGNOREREPLICATES、GETAPPLOPS 和 IGNOREAPPLOPS 選項。
EXCLUDETAG 可用來排除先前由 Replicat 使用 DBOPTIONS SET TAG 選項標記的變更,或使用 dbms_xstream.set_tag 程序在 Oracle AI Database 階段作業內所標記的變更。
使用 EXCLUDETAG <tag> 指示 Extract 處理作業忽略以指定重做標記標記標記的個別記錄。
使用 EXCLUDETAG NULL 可排除所有未標記的 DDL 作業。這是 EXCLUDETAG + 的相對值。
使用 EXCLUDETAG + 指示 Extract 處理作業忽略標記為任何重做標記的個別記錄。
注意:使用 DDLOPTIONS 命令同時指定 EXCLUDETAG 和 INCLUDETAG 參數時,應先提供 EXCLUDETAG。
依照預設,DDLOPTIONS EXCLUDETAG + 選項會指示 Extract 篩選標記的 DDL 作業,讓標記為 00 的 Oracle Data Pump DDL 不被擷取。若要擷取這些 DDL,請設定 DDLOPTIONS INCLUDETAG 00。
注意:在雙向組態中,啟用標記內含項目可能允許擷取其他標記的 DDL,可能會引入複製迴圈或重複的 DDL 執行。
範例
以下範例說明如何在 EXCLUDETAG 使用標記指定元。
排除所有標記的變更:
DDLOPTIONS EXCLUDETAG +
若要排除特定標記的變更,請執行下列動作:
DDLOPTIONS EXCLUDETAG 00
DDLOPTIONS EXCLUDETAG 0952
若要在單一 DDLOPTIONS 敘述句中有多個排除標記,請執行下列動作:
DDLOPTIONS EXCLUDETAG 00 EXCLUDETAG 97ab
INCLUDETAG {tag | +}
適用於 Extract。(僅限 Oracle)
使用 INCLUDETAG <tag> 可在歷程檔中包含特定標記的 DDL 作業。標記值最多可以有 2000 個十六進位數字 (0-9 A-F)。
注意:使用 DDLOPTIONS 命令同時指定 EXCLUDETAG 和 INCLUDETAG 參數時,應先提供 EXCLUDETAG。
範例:
若要包括所有標記的變更,請執行下列動作:
DDLOPTIONS INCLUDETAG +
若要包括特定標記的變更,請執行下列動作:
DDLOPTIONS INCLUDETAG 00
使用 EXCLUDETAG 和 INCLUDETAG 參數時的準則
將 EXCLUDETAG 和 INCLUDETAG 參數與 TRANLOGOPTIONS 和 DDLOPTIONS 命令搭配使用時,請考慮下列事項:
-
如果已指定
TRANLOGOPTIONS EXCLUDETAG/INCLUDETAG且未指定DDLOPTIONS EXCLUDETAG/INCLUDETAG,則TRANLOGOPIIONS EXCLUDETAG/INCLUDETAG參數會同時套用至DML和DDL作業。 -
如果已指定
TRANLOGOPTIONS EXCLUDETAG/INCLUDETAG選項且同時指定DDLOPTIONS EXCLUDETAG/INCLUDETAG,則TRANLOGOPIIONS EXCLUDETAG/INCLUDETAG會套用至DML作業,而DDLOPTIONS EXCLUDETAG/INCLUDETAG會套用至DDL作業。 -
如果未指定
TRANLOGOPTIONS EXCLUDETAG/INCLUDETAG且指定DDLOPTIONS EXCLUDETAG/INCLUDETAG,則DDLOPTIONS EXCLUDETAG/INCLUDETAG會套用至DDL作業,且DML作業沒有標記篩選。 -
如果未指定
TRANLOGOPTIONS EXCLUDETAG/INCLUDETAG且未指定DDLOPTIONS EXCLUDETAG/INCLUDETAG,則適用預設選項DDLOPTIONS EXCLUDETAG +,其中會排除所有標記的DDL作業。 -
對於同時指定
EXCLUDETAG和INCLUDETAG的DDLOPTIONS,則應先提供EXCLUDETAG。
IGNOREMAPPING
適用於 Replicat。停用判斷 DDL 為 MAPPED 或 UNMAPPED 範圍的名稱對應評估。此選項可改善類似於 DDL 複製組態的效能,其中來源和目標綱要名稱和物件名稱相符,以及對應函數不必要的位置。啟用 IGNOREMAPPING 時,無法判斷 MAPPED 或 UNMAPPED 範圍,因此所有 DDL 敘述句都會被視為 OTHER 範圍。當來源綱要和物件名稱對應至目標上的不同綱要和物件名稱時,請勿使用此參數。
MAPDERIVED | NOMAPDERIVED
適用於 Replicat (Oracle)。控制衍生之物件名稱的對應方式。
MAPDERIVED
如果衍生物件有 MAP 陳述式,則名稱會對應至該 TARGET 子句中指定的名稱。否則,名稱會對應至 MAP 敘述句中包含基礎物件之 TARGET 子句中指定的名稱。MAPDERIVED 為預設值。
NOMAPDERIVED
避免名稱對應。NOMAPDERIVED 會覆寫任何包含衍生物件名稱的明確 MAP 敘述句。
如需有關在 DDL 複製期間如何處理衍生物件的詳細資訊,請參閱Oracle GoldenGate 如何處理衍生物件名稱。
MAPSCHEMAS
適用於 Replicat (Oracle 和 Teradata)。只有在使用 MAPSESSIONSCHEMA 時才使用。
-
MAPSESSIONSCHEMA會建立階段作業綱要的來源 - 目標對應,並用於綱要不符合DDL資格的物件。 -
MAPSCHEMAS會將來源DDL中具有合格綱要,但不符合與MAP對應之資格的物件,對應至與MAPSESSIONSCHEMA中相同的階段作業綱要對應。這類物件的範例包括 OracleCREATE TABLE AS SELECT敘述句,其中包含AS SELECT子句中的衍生物件,或 TeradataCREATE REPLICATION RULESET敘述句。
此對應會在 MAP 敘述句中指定的對應之後進行。
例如,假設來源 Oracle AI Database 發出下列 DDL 陳述式:
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) 會根據MAPSESSIONSCHEMA(對應至綱要b1),因為MAPSCHEMAS存在。
如果沒有 MAPSCHEMAS,衍生的物件會對應至綱要 c (如 TARGET 子句中所指定),因為 MAPSESSIONSCHEMA 只會對應不合格的物件。
MAPSESSIONSCHEMA *source_schema* TARGET *target_schema*
適用於 Replicat (僅限 Oracle)。讓來源階段作業綱要能夠對應至 (轉換至) 目標上的其他階段作業綱要。
-
<source_schema>是在來源上以ALTER SESSION set CURRENT_SCHEMA設定的階段作業綱要。 -
<target_schema>是在目標上以ALTER SESSION set CURRENT_SCHEMA設定的階段作業綱要。
不支援萬用字元。您可以使用多個 MAPSESSIONSCHEMA 參數來對應不同的綱要。
MAPSESSIONSCHEMA 會覆寫以主要或衍生物件名稱為基礎之綱要名稱的任何對應
請參閱本主題結尾的範例,瞭解用法。
另請參閱 MAPSCHEMAS。
NLSLENGTHSEMANTICS CHAR | BYTE | DEFAULT]
適用於 Replicat (僅限 Oracle)。
允許 Replicat 覆寫 DDL 複製歷程檔記錄中的 NLS_LENGTH_SEMANTICS Oracle AI Database 階段作業參數設定。例如,如果 DDL 在 NLS_LENGTH_SEMANTICS 參數值為 BYTE 的資料庫階段作業中執行,則 Replicat 預設會先套用 DDL,然後將資料庫階段作業參數 NLS_LENGTH_SEMANTICS 設為 BYTE。若要覆寫此設定,您可以將 NLSLENGTHSEMANTICS 參數設為 CHAR,並在套用 DDL 之前,將 NLS_LENGTH_SEMANTICS 階段作業參數設為 CHAR。
NOAPPLYGLOBALTEMPTABLE
防止 Replicat 套用「全域暫時表格」(GTT)。如果未指定此選項,Replicat 將一律從歷程檔將 DDL 套用至全域暫時表格 (GTT)。
NOTAG
適用於 Replicat
避免使用重做標記 Replicat 套用的 DDL 標記 (預設標記 '00' 或使用 DBOPTIONS 參數搭配 SETTAG 選項設定)。
Replicat 使用的預設標記值為 00,可以使用 DBOPTIONS SETTAG 參數手動變更。請參閱 DBOPTIONS 。
PASSWORD *algorithm* ENCRYPTKEY {*key_name* | DEFAULT}
適用於 Extract (僅限 Oracle)
直接 Extract 以加密來源 DDL 中的所有密碼,再將 DDL 寫入歷程檔。
<algorithm>
指定用於加密密碼的加密演算法。有效值為 AES128、AES192 或 AES256。
ENCRYPTKEY *key_name*
在 ENCKEYS 查詢檔案中指定使用者建立的加密金鑰邏輯名稱。
ENCRYPTKEY DEFAULT
指示 Oracle GoldenGate 使用隨機金鑰。
REMOVECOMMENTS {BEFORE | AFTER}
(選擇性) 適用於 Extract 和 Replicat (僅限 Oracle)。控制是否要從 DDL 作業移除註解。依照預設,註解不會被移除,因此可以使用它們來替代 DDLSUBST 參數的字串。請參閱 DDLSUBST 以取得詳細資訊。
REMOVECOMMENTS BEFORE
移除 Extract 或 Replicat 處理 DDL 作業之前的註解。它們將無法用於字串替代。
REMOVECOMMENTS AFTER
在註解用於字串替代之後移除註解。如果未指定 REMOVECOMMENTS,則此為預設行為。
REPLICATEPASSWORD | NOREPLICATEPASSWORD
適用於 Extract (僅限 Oracle)。套用至 {CREATE | ALTER} USER <user> IDENTIFIED BY <password> 命令中的密碼。
-
依照預設 (
REPLICATEPASSWORD),Oracle GoldenGate 會使用目標CREATE或ALTER敘述句中的來源密碼。 -
若要防止來源密碼傳送至目標,請使用
NOREPLICATEPASSWORD。
使用 NOREPLICATEPASSWORD 時,請使用含有 Replicat 參數檔中 DEFAULTUSERPASSWORD 或 DEFAULTUSERPASSWORDALIAS 選項的 DDLOPTIONS 敘述句,指定目標 DDL 敘述句的密碼。
REPORT | NOREPORT
適用於 Extract 和 Replicat (Oracle 和 Teradata)。控制是否將展開的 DDL 處理資訊寫入報表檔案。NOREPORT 的預設值會報告基本 DDL 統計資料。REPORT 會新增目前使用的參數,以及已處理之作業的逐步歷史記錄。
UPDATEMETADATA
適用於 Replicat (僅限 Oracle)。用於主動 - 主動雙向組態。此參數會在 DDL 源自此 DDL 傳輸至其他系統的系統上通知 Replicat,且 Replicat 現在應更新其物件描述資料快取以符合新的描述資料。這會讓 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 驗證程式是以 user$.spare4 格式擷取,格式為:'S:<SHA-1-verifier>;H:<http-verifier>;T:<SHA-2-verifier>'。整合式 Extract 會傳回 12c 中的下列 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 執行,則會在 RDBMS 層次處理這些形式的 CREATE USER,但如果 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 USERDDL驗證字串中篩選。 -
如果
USEPASSWORDVERIFIERLEVEL設為 11,除了 S:SHA-1 和弱式驗證程式以外的所有項目都會從CREATE USERDDL驗證字串中篩選。
WARNONLARGEDDL
此選項適用於 Extract。
當 DDL 超過 BUFFER 大小時,它可讓您產生「擷取」的警告訊息,而不會出現異常。
範例
範例 1
以下顯示 MAPSESSIONSCHEMA 如何允許將來源階段作業綱要對應至目標上的其他綱要。
假設 Extract 和 Replicat 中的下列 DDL 擷取和對應組態:
擷取:
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 SESSION 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.
範例 2
以下顯示如何使用 DEFAULTUSERPASSWORDALIAS,為來源敘述句中使用的複製 {CREATE | ALTER} USER <name> IDENTIFIED BY <password> 敘述句指定不同的密碼。在此範例中,別名 ddlalias 位於證明資料存放區的 target 網域中。
DDLOPTIONS DEFAULTUSERPASSWORDALIAS ddlalias DOMAIN target