ADD SCHEMATRANDATA
適用於 Oracle。
使用 ADD SCHEMATRANDATA 來啟用表格適用的綱要層次補充日誌記錄。ADD SCHEMATRANDATA 會對指定綱要中的所有目前和未來表格採取動作,以自動記錄 Oracle GoldenGate 需要以進行資料列識別的可用索引鍵超集。
注意:Oracle GoldenGate 23.6 不支援在 JSON Relational Duality Views (JSON DV) 和 JSON Collection Tables (JCT) 的綱要層次啟用邏輯複製。
若要對多用戶資料庫 PDB 中的綱要執行 ADD SCHEMATRANDATA,您需要登入 PDB 以發出命令。
ADD SCHEMATRANDATA 可與 Extract 搭配使用,並執行下列作業:
-
為使用
CREATE TABLE建立的新表格啟用 Oracle 補充日誌記錄功能。 -
更新受
ALTER TABLE影響之表格的補充日誌記錄,以新增或刪除資料欄。 -
更新已重新命名之表格的補充日誌記錄。
-
更新已新增或刪除唯一或主索引鍵之表格的補充日誌記錄。
-
啟用表格以供自動擷取。該命令會新增綱要層級的 PK、UI、FK、ALLKEYS 補充日誌記錄。
依照預設,ADD SCHEMATRANDATA 會以下列優先順序來記錄表格的索引鍵資料欄:
-
主索引鍵
-
若沒有主索引鍵,則記錄表格所有的唯一索引鍵,包括已停用、無法使用或隱藏的索引鍵。也會記錄包含 ADT 成員資料欄的唯一索引鍵。只有虛擬資料欄 (以函數為基礎的索引) 的唯一索引鍵不會被記錄。
-
如果上述索引鍵都不存在,則會記錄表格的所有純量資料欄。(一律記錄系統產生的資料列 OID)。
ADD SCHEMATRANDATA 也支援使用整合式 Replicat 的條件性或非條件性日誌記錄需求。
在下列情況下使用 ADD SCHEMATRANDATA:
-
所有要針對整合式擷取設定之 Extract 群組的表格。
ADD SCHEMATRANDATA可透過記錄所有索引鍵來確保記錄正確的索引鍵。 -
所有將在整合式 Replicat 群組中處理的來源表格。提供的選項可啟用主索引鍵、唯一索引鍵及外來索引鍵的日誌記錄,以支援經由不同套用伺服器處理之關聯式表格間的相依性運算。
-
當 DDL 複製在作用中且 DML 與建立新表格或更改索引鍵資料欄的 DDL 並行時。此選項最適合處理對物件發出 DDL 之後立即套用 DML 的情況。
ADD SCHEMATRANDATA會讓每個 DDL 作業以異常方式將適當的索引鍵值記錄到重做日誌中,因此可確保從日誌擷取 DML 時的描述資料連續性 (儘管 Extract 處理作業發生任何延遲)。
UsingADD SCHEMATRANDATA 的資料庫層次記錄日誌需求
Oracle 強烈建議在使用 Oracle GoldenGate 時,將來源資料庫設為強制日誌記錄模式,並在資料庫層級啟用最低層級補充日誌記錄。這會將資料列鏈結資訊 (若有的話) 新增至重做日誌以進行更新作業。
UsingADD SCHEMATRANDATA 的其他考量
-
在使用
ADD SCHEMATRANDATA之前,請先發出DBLOGIN命令。發出命令的使用者必須被授予 Oracle Streams 管理員權限。EXEC DBMS_STREAMS_AUTH.GRANT_ADMIN_PRIVILEGE('*GGADMIN*') -
未啟用 DDL 複製時,可使用
ADD SCHEMATRANDATA取代ADD TRANDATA命令。然而,請注意,如果表格沒有主索引鍵,但有多個唯一索引鍵,ADD SCHEMATRANDATA會讓資料庫記錄所有唯一索引鍵。在這種情況下,ADD SCHEMATRANDATA會讓資料庫記錄的重做資料比ADD TRANDATA還多。若要避免額外的日誌記錄,請將其中一個唯一索引鍵指定為主索引鍵 (如果可能的話)。 -
對於具有主索引鍵、具有單一唯一金鑰或沒有金鑰的表格,
ADD SCHEMATRANDATA與ADD TRANDATA相比,不會增加額外的記錄負荷。 -
如果在 PDB 的綱要中新增
SCHEMATRANDATA,您必須登入DBLOGIN中的該 PDB。例如,對於PDBEAST和綱要HR,請使用下列命令:ADD SCHEMATRANDATA pdbeast.hr -
如果您必須記錄特定表格 (或表格) 的其他非金鑰資料欄,以供 Oracle GoldenGate 使用,例如
FILTER敘述句所需的資料欄,以及TABLE和MAP參數中的KEYCOLS子句,請針對這些資料欄發出ADD TRANDATA命令。該指令有COLS選項,可發出欄的表格層級補充記錄,可搭配ADD SCHEMATRANDATA一起使用。
語法
ADD SCHEMATRANDATA schema
{
[ALLOWNONVALIDATEDKEYS]
[NOSCHEDULINGCOLS | ALLCOLS]}
[NOVALIDATE]
[PARTIALJSON]
[PREPARECSN {WAIT | LOCK | NOWAIT | NONE}]
schema
您要記錄補充索引鍵資訊的綱要。請勿使用萬用字元。若要為多用戶容器資料的多個可插拔資料庫發行 ADD SCHEMATRANDATA,請分別以 DBLOGIN 登入每個可插拔資料庫,然後發行 ADD SCHEMATRANDATA。您可以從根容器中,使用容器前置碼 ADD SCHEMATRANDATA [pdb_name].schema 來新增 Schematrandata
如果您從 cdb$root 執行命令,請確定同時在資料庫端設定下列使用者權限:
ALTER USER userID SET CONTAINER_DATA = ALL CONTAINER = CURRENT;
ALLOWNONVALIDATEDKEYS
它包含補充日誌記錄中的 NON VALIDATED 和 NOT VALID 主索引鍵。這些索引鍵會覆寫 Oracle GoldenGate 所使用的一般索引鍵選擇條件。如果正在使用 GLOBALS 參數 ALLOWNONVALIDATEDKEYS,ADD SCHEMATRANDATA 會以 ALLOWNONVALIDATEDKEYS 執行,無論是否已指定該參數。依預設,不會記錄 NON VALIDATED 和 NOT VALID 主索引鍵,請參閱 GLOBALS ALLOWNONVALIDATEDKEYS 參數。
NOSCHEDULINGCOLS | ALLCOLS
這兩個選項控制 Oracle 目標資料庫的補充日誌記錄。您可以同時使用這兩個選項,但是會使用後面這個選項。例如,使用 ADD SCHEMATRANDATA oggadm_ext ALLCOL NOSCHEDULINGCOLS 指令時,會使用 NOSCHEDULINGCOLS 選項。
NOSCHEDULINGCOLS
停用排程資料欄的日誌記錄。依照預設,ADD SCHEMATRANDATA 會啟用主索引鍵的無條件記錄,以及指定綱要中目前和未來所有表格之所有唯一索引鍵和外來索引鍵的條件補充記錄日誌。無論是否在目前作業中變更主索引鍵,無條件性日誌記錄都會強制使用日誌的主索引鍵值。如果在目前作業中至少變更外來或唯一索引鍵其中之一,則條件性日誌記錄會記錄外來或唯一索引鍵的所有資料欄值。內送伺服器必須能夠使用整合式 Replicat 的主索引鍵、唯一索引鍵及外來索引鍵才能運算相依性。
如果您要啟用 auto_capture,請勿使用此選項。這將允許自動擷取此綱要中的表格,除非該表格明確排除 / 停用複製 (例如透過 TABLEEXCLUDE、DELETE TRANDATA 或 ALTER TABLE DISABLE LOGICAL REPLICATION DDL)。
ALLCOLS
針對指定綱要中所有目前與未來的表格,啟用所有支援索引鍵與非索引鍵資料欄的非條件性補充日誌記錄。此選項會啟用運算相依性所需之索引鍵的日誌記錄,還會啟用篩選、衝突解決或其他用途所需的資料欄。LOB、LONG 及 ADT 等資料欄則不包括在內。
NOVALIDATE
適用於所有 ADD SCHEMATRANDATA 支援的資料庫。
隱藏 ADD SCHEMATRANDATA 正在處理之表格的其他資訊。此選項預設為啟用。處理其他資訊會導致命令回應延遲,因此這個選項可用來增加回應時間。
PARTIALJSON
適用於 Oracle。
在綱要層級擷取局部 JSON 更新。若啟用,重做將會包含局部 JSON 記錄。
另請參閱 TRANLOGOPTIONS FETCHPARTIALJSON 參數。
PREPARECSN {WAIT | LOCK | NOWAIT | NONE}
適用於 Oracle DML 與 DDL。
自動準備來源表格,讓 Oracle 資料汲取匯出傾印檔能夠包括實例 CSN。Replicat 會使用 Oracle 資料汲取 (在匯入時)所設定的每個表格實例 CSN,來篩除歷程檔記錄。在目標上,資料汲取匯入會使用 DBOPTIONS ENABLE_INSTANTIATION_FILTERING 參數填入具有建立 SCN 的系統表格與檢視,以啟用表格層次的建立篩選。
WAIT
等待所有進行中異動並準備表格實例。
LOCK
鎖定表格 (以準備表格實例)。
NOWAIT
預設行為,實例會立即準備完成。
NONE
不會準備實例。
範例
下列功能會啟用綱要 hr 的補充記錄日誌。
ADD SCHEMATRANDATA hr
下列範例會記錄綱要中所有目前與未來表格 (名為 hr) 的所有支援金鑰與非金鑰資料欄。
ADD SCHEMATRANDATA hr ALLCOLS
下列範例會隱藏處理中的其他表格資訊。
ADD SCHEMATRANDATA hr NOVALIDATE