交易記錄設定與需求
Oracle GoldenGate 會依賴重做日誌來擷取複製來源交易所需的資料。必須先正確設定來源系統上的 Oracle 重做日誌,才能啟動 Oracle GoldenGate 處理作業。
本節說明適用於 Oracle GoldenGate 的下列記錄日誌層次。您使用的記錄日誌層次取決於您使用的 Oracle GoldenGate 功能。
注意:重做磁碟區會隨著此必要的記錄日誌而增加。您可以等待啟動 Oracle GoldenGate 處理作業以啟用記錄日誌。
此表格顯示不同記錄日誌特性的 Oracle GoldenGate 使用案例。
| Logging option - 記錄日誌選項 | 命令名稱 | 用途 | 使用案例 |
|---|---|---|---|
| 強制日誌記錄模式 | ALTER DATABASE FORCE LOGGING; |
強制記錄所有異動與載入。 | 強烈建議所有 Oracle GoldenGate 使用案例使用。FORCE LOGGING 會覆寫任何表格層次 NOLOGGING 設定值。 |
最小資料庫層級補充日誌記錄 請參閱啟用子集資料庫複製記錄日誌。 |
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; |
啟用最少的補充日誌記錄,以將資料列鏈結資訊新增至重做日誌。 | 所有 Oracle GoldenGate 使用案例都需要 |
| 綱要層次補充日誌記錄 | [ADD SCHEMATRANDATA](/pls/topic/lookup?ctx=en/database/goldengate/core/26/coredoc&id=GCLIR-GUID-5DA7C3DC-5D87-4A8B-AD23-6EF587A5CF41) |
啟用綱要中所有表格之唯一索引鍵與外來索引鍵之主索引鍵與條件式補充日誌記錄的無條件補充日誌記錄。這些關鍵碼全部都稱為排程欄。 此設定也會確保在此綱要中建立的所有新物件都會有適當的補充日誌記錄。 |
啟用綱要中所有目前和未來表格的記錄日誌。如果來源和目標的主索引鍵、唯一索引鍵和外來索引鍵資料欄都不相同,請使用 ALLCOLS。 |
| 所有支援之資料欄的綱要層次補充日誌記錄與無條件日誌記錄。(請參閱啟用綱要層次補充日誌記錄,瞭解不支援的資料欄類型。) | ADD SCHEMATRANDATA 與 ALLCOLS 選項 |
針對綱要中的所有表格,啟用表格中所有資料欄的無條件補充日誌記錄。 此設定也會確保在此綱要中建立的所有新物件都會有適當的補充日誌記錄。 |
在嘗試執行更新或刪除時,用於檢查所有資料欄值 (而非只有變更的資料欄) 的雙向和主動 - 主動組態。這需要更多資源,但可以進行最高層級的即時資料驗證,進而偵測衝突。 如果要在初始載入時使用 |
| 綱要層級補充日誌記錄,最小設定 | ADD SCHEMATRANDATA 與 NOSCHEDULINGCOLS 選項 |
啟用主索引鍵的無條件補充日誌記錄,以及綱要中所有表格的所有有效唯一索引。 此設定也會確保在此綱要中建立的所有新物件都會有適當的補充日誌記錄。 |
僅適用於非整合式 Replicat。這是最低的必要綱要層次記錄日誌。 |
支援整合式 Replicat 的表格層級補充日誌記錄 請參閱啟用表格層級補充日誌記錄 |
ADD TRANDATA |
啟用表格唯一索引鍵與外來索引鍵之主索引鍵與條件式補充日誌記錄的無條件補充日誌記錄。這些關鍵碼全部都稱為排程欄。 | 除非使用綱要層次補充日誌記錄,否則所有 Oracle GoldenGate 使用案例都必須有此項目。如果來源和目標的主索引鍵、唯一索引鍵和外來索引鍵資料欄都不相同,請使用 ALLCOLS。 |
| 表格層次補充日誌記錄,以及所有支援之資料欄的無條件日誌記錄。(如需不支援的資料欄類型,請參閱啟用表格層級補充日誌記錄。) | ADD TRANDATA 與 ALLCOLS 選項 |
啟用表格所有資料欄的無條件補充日誌記錄。 | 在嘗試執行更新或刪除時,用於檢查所有資料欄值 (而非只有變更的資料欄) 的雙向和主動 - 主動組態。這需要更多資源,但可以進行最高層級的即時資料驗證,進而偵測衝突。 當來源和目標主要、唯一和外來索引鍵不相同或在來源和目標之間不斷變更時,也可以使用它。 |
| 表格層次補充日誌記錄,最小設定 | ADD TRANDATA 與 NOSCHEDULINGCOLS 選項 |
啟用主索引鍵的無條件補充日誌記錄,以及表格的所有有效唯一索引。 | 用於非整合式 Replicat 和非平行 Replicat。這是最低必要的表格層次記錄日誌。 |
| JSON 關聯式雙重性視觀表和 JSON 集合表格的表格層級補充日誌記錄。 | ADD TRANDATA 與 Duality View name 及 Collection Table name |
啟用指定「雙重性視觀表」和「收集表格」的補充日誌記錄。 | 請參閱啟用 JSON 關聯式雙重性視觀表和 JSON 集合表格的補充日誌記錄瞭解相關準則。另請參閱JSON 關聯式雙重性視觀表和 JSON 集合表格的支援詳細資訊以瞭解詳細資訊。 |
啟用子集資料庫複製日誌記錄
Oracle 強烈建議將 Oracle 來源資料庫設為強制記錄日誌模式。強制日誌記錄模式會強制記錄所有異動和載入, 覆寫任何相反的使用者或儲存設定值. 這可確保擷取組態中不會遺漏任何來源資料。
LogMiner 中提供稱為「子集資料庫複製」的精細資料庫補充日誌記錄模式,這是所有 Oracle GoldenGate 和 XStream 從屬端的基本建議模式。它會取代先前使用的「最低補充記錄」模式。
目前在 CDB$ROOT 啟用子集資料庫複製記錄日誌 (所有使用者 PDB 都會繼承它)。
注意:只有在複製表格子集時,才不建議使用資料庫層次主索引鍵 (PK) 和唯一索引 (UI) 記錄日誌。您可以將它與「即時待命資料庫」搭配使用,或如果 Oracle GoldenGate 將複製所有表格,例如減少移轉或升級的停止工作時間。
請執行下列步驟來驗證和啟用子集資料庫複製記錄和強制記錄。
-
以具備
ALTER SYSTEM權限的使用者身分登入 SQL*Plus。 -
發出下列命令以判斷資料庫是否處於補充日誌記錄模式和強制日誌記錄模式。如果兩個查詢的結果都是
YES,則資料庫符合 Oracle GoldenGate 需求。SELECT SUPPLEMENTAL_LOG_DATA_MIN, FORCE_LOGGING FROM V$DATABASE; -
如果其中一個或兩個特性的結果為
NO,請視需要繼續下列步驟來啟用它們:ALTER PLUGGABLE DATABASE *pdbname* ADD SUPPLEMENTAL LOG DATA SUBSET DATABASE REPLICATION; ALTER DATABASE FORCE LOGGING; -
發出下列命令以驗證這些特性現在已啟用。
SELECT SUPPLEMENTAL_LOG_DATA_MIN, FORCE_LOGGING FROM V$DATABASE;兩個特性的查詢輸出必須是
YES。 -
切換記錄檔。
ALTER SYSTEM SWITCH LOGFILE;
啟用結構層次補充記錄日誌
Oracle GoldenGate 支援綱要層次補充日誌記錄。使用 Oracle GoldenGate DDL 複製功能時,Oracle 來源和目標資料庫需要綱要層次的記錄日誌;如果可以在複製的表格上執行 (或執行 DDL,則在來源資料庫上執行 DDL,則需要進行綱要層次記錄日誌。在所有其他使用案例中,它是選擇性的,但您必須改用表格層次記錄日誌 (請參閱啟用表格層次補充記錄日誌 )。
依照預設,綱要層次記錄日誌會自動啟用綱要中所有表格之主索引鍵與條件式補充記錄日誌的無條件補充記錄日誌。選項可讓您視需要更改記錄日誌。
注意:Oracle 強烈建議您使用綱要層次的記錄日誌而非表格層次的記錄日誌,因為它會確保在滿足萬用字元規格時,擷取新增至綱要的任何新表格。此外,也建議使用此方法,因為索引鍵資料欄的任何變更也會自動反映在補充日誌資料中。例如,如果金鑰變更,就不需要發出 ADD TRANDATA。
在來源系統上執行下列步驟,以啟用綱要層級補充記錄日誌。
-
在來源系統上啟動命令行。
-
發出含有證明資料存放區中使用者別名的
DBLOGIN命令,該使用者具有啟用綱要層次補充記錄日誌的權限。DBLOGIN USERIDALIAS *alias*請參閱 Oracle GoldenGate 的參數和函數參照中的
USERIDALIAS,瞭解有關USERIDALIAS和其他選項的詳細資訊。 -
在多用戶資料庫上使用
ADD SCHEMATRANDATA或ADD TRANDATA時,您可以直接登入 PDB 並執行該命令。或者,如果您以 root 層次 (使用C##使用者) 登入,則必須包含 PDB。針對您要使用 Oracle GoldenGate 擷取資料變更的每個綱要發出ADD SCHEMATRANDATA命令。ADD SCHEMATRANDATA pdb.schema [ALLCOLS | NOSCHEDULINGCOLS]其中:
-
如果沒有選項,
ADD SCHEMATRANDATA綱要就可以在主索引鍵的來源系統上啟用無條件補充日誌記錄,以及指定綱要中所有目前和未來表格之所有唯一索引鍵和外來索引鍵的條件補充日誌記錄。無論是否在目前作業中變更主索引鍵,無條件性日誌記錄都會強制使用日誌的主索引鍵值。如果在目前作業中至少變更外來或唯一索引鍵其中之一,則條件性日誌記錄會記錄外來或唯一索引鍵的所有資料欄值。預設是選擇性的,以支援非整合式 Replicat,但必須支援整合式 Replicat,因為內送伺服器必須能夠使用主索引鍵、唯一索引鍵及外來索引鍵來計算相依性。 -
ALLCOLS可用來啟用表格所有資料欄的無條件補充日誌記錄,並套用至指定綱要中的所有目前和未來表格。當來源和目標表格的排程資料欄不同時,用來支援整合式 Replicat。( 排程欄是主索引鍵、唯一索引鍵和外來索引鍵。) -
NOSCHEDULINGCOLS只會記錄主索引鍵的值,以及綱要中現有表格的所有有效唯一索引,以及稍後新增的新表格。這是綱要層次記錄日誌的最低必要層次,只對非整合模式的 Replicat 有效。
在下列範例中,此命令會啟用
hr綱要的預設補充記錄日誌。ADD SCHEMATRANDATA pdbeast.hr ALLCOLS在下列範例中,此命令只針對
HR綱要的主索引鍵和有效的唯一索引啟用補充日誌記錄。ADD SCHEMATRANDATA pdbeast.hr NOSCHEDULINGCOLS -
啟用資料表層級補充記錄
在下列情況下,對來源系統啟用表格層級補充記錄:
-
若要在不使用綱要層次記錄日誌時啟用必要的記錄日誌層次 (請參閱啟用綱要層次補充記錄日誌 )。必須使用綱要層次或表格層次記錄日誌。依照預設,表格層次記錄日誌會自動啟用表格唯一索引鍵與外來索引鍵之主索引鍵與條件式補充記錄日誌的無條件補充記錄日誌。選項可讓您視需要更改記錄日誌。
-
防止記錄任何指定表格的主索引鍵。
-
記錄表格層次的非索引鍵資料欄值,以支援特定 Oracle GoldenGate 功能,例如篩選與衝突偵測以及解決邏輯。
-
如果只有表格層次補充記錄日誌的表格上的索引鍵資料欄變更,您必須先在表格上執行
ADD TRANDATA,才能夠在表格上進行任何 DML 活動。 -
若要啟用 JSON 關聯式雙重性視觀表 (JSON DV) 和 JSON 集合表格的補充記錄日誌,您必須遵循啟用 JSON 關聯式雙重性視觀表和 JSON 集合表格的補充記錄日誌中的準則。
在來源系統上執行下列步驟,以啟用表格層級補充記錄,或使用命令的選擇性功能。
-
在來源系統上執行命令行。
-
使用證明資料存放區中具有啟用表格層次補充記錄日誌權限的使用者別名發出
DBLOGIN命令。DBLOGIN USERIDALIAS *alias*請參閱 Oracle GoldenGate 的參數和函數參照中的
USERIDALIAS,瞭解有關DBLOGIN和其他選項的詳細資訊。 -
發出
ADD TRANDATA命令。ADD TRANDATA [*PDB*.]*schema.**table* [, COLS (*columns)*] [, NOKEY] [, ALLCOLS | NOSCHEDULINGCOLS]其中:
-
PDB 是 root 容器或可插式資料庫的名稱,如果表格位於多雲端用戶容器資料庫中。
-
schema 是包含表格的來源綱要。
-
table 是表格的名稱。請參閱在 Oracle GoldenGate 輸入中指定物件名稱,瞭解指定物件名稱的指示。
-
沒有其他選項的
ADD TRANDATA會自動啟用表格唯一索引鍵與外來索引鍵之主索引鍵與條件式補充日誌記錄的無條件補充日誌記錄。無論是否在目前作業中變更主索引鍵,無條件性日誌記錄都會強制使用日誌的主索引鍵值。如果在目前作業中至少變更外來或唯一索引鍵其中之一,則條件性日誌記錄會記錄外來或唯一索引鍵的所有資料欄值。預設是選擇性的,以支援非整合式 Replicat (另請參閱NOSCHEDULINGCOLS),但必須支援整合式 Replicat,因為內送伺服器必須具備主索引鍵、唯一索引鍵及外來索引鍵,才能計算相依性。 -
ALLCOLS會啟用表格所有資料欄的無條件補充日誌記錄。當來源和目標表格的排程資料欄不同時,用來支援整合式 Replicat。( 排程資料欄是主索引鍵、唯一索引鍵和外來索引鍵。) -
NOSCHEDULINGCOLS僅適用於非整合模式的 Replicat。它會發出含有ADD SUPPLEMENTAL LOG DATA ALWAYS子句的ALTER TABLE命令,此子句適用於為表格定義的唯一限制條件類型,或沒有唯一限制條件的所有資料欄。若不使用綱要層次記錄日誌,此命令可滿足 Oracle GoldenGate 的基本表格層次記錄日誌需求。請參閱確保來源和目標表格中的資料列唯一性,瞭解 Oracle GoldenGate 如何選取索引鍵或索引。 -
COLScolumns 會記錄KEYCOLS子句或篩選和操控所需的非索引鍵資料欄。括弧是必要的。除非同時有NOKEY選項,否則除了主索引鍵之外,還會記錄這些資料欄。 -
NOKEY可防止記錄主索引鍵或唯一索引鍵。需要TABLE和MAP參數中的KEYCOLS子句,以及ADD TRANDATA命令中的COLS子句,才能記錄替代的KEYCOLS資料欄。
-
-
如果將
ADD TRANDATA與COLS選項搭配使用,請為目標上的那些資料欄建立唯一的索引,以最佳化資料列擷取。如果您將這些資料欄記錄為KEYCOLS子句的替代索引鍵,請在設定 Oracle GoldenGate 處理作業時,記下將KEYCOLS子句新增至TABLE和MAP敘述句。
啟用 JSON 關聯式雙重性視觀表和 JSON 集合表格的補充日誌記錄
在複製 JSON Relational Duality View 和 JSON Collection 表格之前,您需要在 Oracle GoldenGate 中設定補充記錄。JSON Relational Duality Views 和 JSON Collection Table 預設不會啟用補充日誌記錄。啟用「雙重性檢視表」與「收集表格」的補充記錄時,可以使用下列準則:
-
啟用邏輯複製:必須啟用邏輯複製 (使用
ADD TRANDATA),才能擷取對「雙重性視觀表」和「收集表格」所做的變更。此處理會啟用追蹤 JSON 文件層級變更所需的補充日誌記錄。請參閱
ADD TRANDATA瞭解詳細資訊。在 Oracle AI Database 端,已在
CREATE/ALTER DDL中新增 JSON Relational Duality Views 和 JSON Collection Tables 的子句。此子句會在檢視層次啟用補充日誌記錄。此記錄日誌除了基礎表格上任何現有的記錄日誌之外。如需詳細資訊,請參閱
CREATE TABLE/CREATE JSON RELATIONAL DUALITY VIEW中的 logical_replication_clause 小節,以及 Oracle AI Database SQL Language Reference 中的ALTER TABLE/ALTER JSON RELATIONAL DUALITY VIEWS命令。 -
JSON 雙重性視觀表和 JSON 集合表格的 DML 變更:對於
INSERT和UPDATE作業,會補充記錄完整的 JSON 文件和_id索引鍵屬性。針對 DELETE 作業,只會記錄索引鍵_id屬性。 -
JSON 關聯式雙重性視觀表的交易確認日誌記錄:確認時會進行雙重性視觀表的補充日誌記錄。只會記錄淨值變更。
例如,如果您在包含 JSON 雙重性檢視的交易中將記錄
INSERT和UPDATE這筆記錄設為兩次,則只有一個邏輯變更會存在,其中包含含有更新記錄的INSERT。 -
使用基礎表格複製 JSON 雙重性視觀表至 JSON 雙重性視觀表:複製基礎關聯式表格層次「雙重性視觀表」的變更最有效率。在基礎關聯式表格上方的「雙重性視觀表」會自動反映這些變更,因為它是一個視觀表。在此情況下,不需要在「雙重性視觀表」上進行額外的補充日誌記錄。
如需設定表格層次補充記錄日誌的步驟,請參閱啟用表格層次補充記錄日誌。
移除表格層級補充記錄日誌
如果 Oracle GoldenGate 不再需要擷取表格,且表格的 TABLE 參數已自 Extract 參數檔中移除,或 TABLEEXCLUDE 用於從萬用字元敘述句中排除表格,則可以從表格中移除補充日誌記錄。
注意:如果 Extract 解析未啟用補充記錄日誌的表格,則會根據 DML 作業的類型而中止。
使用 DELETE TRANDATA 移除補充記錄日誌,將表格的 Replicat 識別層次設為 NOTHING。您可以使用「管理服務,組態」頁面的 Microservices Architecture Web 介面,在為來源資料庫建立的證明資料底下停用補充日誌記錄,也可以使用 DELETE TRANDATA 命令發出補充日誌記錄。
以下為發出 DELETE TRANDATA 的語法。
DBLOGIN USERIDALIAS alias_name
DELETE TRANDATA schema.tablename
檢查補充日誌記錄的層次:
INFO TRANDATA schema.tablename