使用 LogDump 公用程式存取歷程檔記錄

疑難排解和技術支援需要 Oracle GoldenGate 歷程檔資訊。使用 Logdump 公用程式來檢視 Oracle GoldenGate 歷程檔記錄。


歷程檔復原模式

依照預設,「擷取」會以附加模式運作,如果發生處理作業失敗,復原標記會寫入歷程檔,而「擷取」會將復原資料附加至檔案,以便保留所有先前資料的歷史記錄以供復原之用。

在附加模式中,「擷取」初始化會決定上次在啟動時寫入歷程檔之完整交易的識別。使用該資訊時,Extract 會在資料來源中遇到該交易的確認記錄時結束復原;然後會以符合擷取資格的下一個已確認交易開始新的資料擷取,並開始將新資料附加至歷程檔。Replicat 會從該復原點再次開始讀取。

覆寫模式是另一個版本的 Extract 復原,在 Oracle GoldenGate 版本 10.0 之前的版本中使用。在這些版本中,「擷取」會在最後一個寫入檢查點位置之後覆寫歷程檔中的現有交易資料,而不是附加新資料。寫入的第一個交易是資料來源中最後一個讀取檢查點位置之後,符合擷取資格的第一個交易。

如果目標上的 Oracle GoldenGate 版本比版本 10 舊,Extract 將會自動回復為覆寫模式以支援回溯相容性。此行為可以透過 RECOVERYOPTIONS 參數手動控制。

軌跡記錄格式

Oracle GoldenGate 寫入歷程檔或 Extract 檔案的每筆變更記錄都包括標頭區域、資料區域,以及可能是使用者記號區域。記錄表頭包含交易環境的相關資訊,且資料區域包含已擷取的實際資料值。

記號區域包含 Oracle GoldenGate 使用者指定用於資料欄對應與轉換的資訊。

Oracle GoldenGate 歷程檔是非結構化的。您可以使用 Oracle GoldenGate 軟體提供的 Logdump 公用程式來檢視 Oracle GoldenGate 記錄。如需詳細資訊,請參閱 Oracle GoldenGate 的日誌傾印參照中的檢視第一筆記錄。注意:隨著 Oracle GoldenGate 軟體的增強功能,歷程檔記錄格式會受到可能未反映在此文件中的變更影響。若要檢視目前的結構,請使用 Logdump 公用程式。

歷程檔標頭記錄

歷程檔的每個檔案都包含一筆儲存在檔案開頭的檔案標頭記錄。檔案標頭包含歷程檔本身的相關資訊。舊版的 Oracle GoldenGate 未包含此標頭。

檔案標頭會在資料記錄前面的歷程檔開頭儲存為記錄。儲存在歷程檔標頭中的資訊可提供足夠的記錄資訊,讓 Oracle GoldenGate 處理作業判斷記錄是否為目前 Oracle GoldenGate 支援的格式。

歷程檔標頭欄位會儲存為記號,記號格式在所有版本的 Oracle GoldenGate 中會維持不變。如果 Oracle GoldenGate 版本不支援任何指定的記號,就會忽略該記號。系統會指派去除的記號作為預設值,以保持與舊版 Oracle GoldenGate 的相容性。

為了確保不同 Oracle GoldenGate 處理作業版本間檔案的向前和向後相容性,檔案標頭欄位會以標準化的記號格式寫入。舊版可忽略由新版程序所建立的新記號,以維持回溯相容性。同樣地,較新的 Oracle GoldenGate 版本也支援較舊的記號。此外,如果新的處理版本不再使用記號,系統會將預設值指派給記號,讓舊版本仍可正常運作。指定檔案版本的記號為 COMPATIBILITY,可以在 Logdump 公用程式中檢視,也可以使用 @GETENV 函數的 GGFILEHEADER 選項來擷取。

歷程檔或 Extract 檔案的版本必須等於或低於讀取它的處理作業版本。否則,處理程序將會中止。此外,Oracle GoldenGate 會強制輸出歷程檔與其輸入歷程檔或檔案的版本相同。重新啟動時,Extract 會將歷程檔捲動至新檔案,以確保每個檔案只有一個版本 (除非檔案是空的)。

您可以從 Oracle GoldenGate 21c 向上,針對 Oracle 資料庫,使用 DB_UNIQUE_NAME 參數指定資料庫的全域唯一名稱。如果未設定此資料庫參數,則 DB_UNIQUE_NAME 與 DB_NAME 相同。此功能可讓您透過檢視歷程檔標頭,對歷程檔資料來源進行唯一識別。

請參閱 [GETENV](/pls/topic/lookup?ctx=en/middleware/goldengate/core/21.3/admin&id=GWURF-GUID-B84527F5-91BA-4E2E-BC37-92D1B6C35735) 參數,瞭解如何使用 DbUniqueName 記號。

DbUniqueName 記號將會寫入相容性層次為 19.1 的歷程檔,但是支援該相容性層次的先前 Oracle GoldenGate 版本將會忽略新的記號。此權杖屬於「資料庫資訊」群組。此欄位將限制為 65536 個位元組,以允許容納 DB_UNIQUE_NAME 的所有可能值,限制為 30 個字元。

由於 Oracle GoldenGate 處理作業會去耦合,而且可以是不同的 Oracle GoldenGate 版本,因此每個歷程檔的檔案標頭都包含一個版本指示器。依預設,歷程檔的版本是建立檔案的目前處理作業版本。如果您需要設定歷程檔的版本,請使用 EXTTRAIL、EXTFILE、RMTTRAIL 或 RMTFILE 參數的 FORMAT 選項。

您可以使用 Logdump 公用程式中的 FILEHEADER 指令來檢視歷程檔標頭。如需有關檔案標頭中記號的詳細資訊,請參閱 Logdump Reference for Oracle GoldenGate 。

歷程檔標頭中的分割區名稱記錄

歷程檔標頭中的每筆 DML 記錄都可以包含分割區名稱記錄 (PNR) 的索引。由於完整分割區名稱可能很長,所以第一次寫入分割區時,會在每個歷程檔中建立一個 PNR。每個 PNR 都包含分割區名稱和分割區物件 ID。

對於主要 Extract,只會針對分割區比對產生 PNR,並由 PARTITION 和 PARTITIONEXCLUDE 參數包含。這些分割區中的 DML 記錄會有一個表格定義記錄的索引,以及一個分割區名稱記錄的索引。所有其他表格 (例如非分割表格或分割表格) 的 DML 記錄與 PARTITION 或 PARTITIONEXCLUDE 參數不相符或排除,只有表格定義記錄的索引如今完成。對於分配服務,如果來源追蹤記錄包含 PNR 索引,則會寫入 PNR。

在傾印中檢視分割區名稱和 PNR 索引

使用 Logdump 公用程式可顯示分割區名稱記錄,以及包含 PNR 索引的 DML。

以下是顯示擷取檔案顯示畫面的範例:

$ logdump > output.txt <<EOF
ghdr on
detail data
open ./dirdat/tr000000000
n 200
EOF

輸出會以 PNR 索引值顯示 PNR 與 DML,如下列範例所示:

HDR-IND    :     E  (X45)     	PARTITION  :     .  (XFF80)
UNDOFLAG   :     .  (X00)     	BEFOREAFTER:     A  (X41)
RECLENGTH  :     0  (X0000)   	IO TIME    : 2019/01/17 16:48:01.129.045
IOTYPE     :   170  (XAA)     	ORIGNODE   :     4  (X04)
TRANSIND   :     .  (X03)     	FORMATTYPE :     R  (X52)
SYSKEYLEN  :     0  (X00)     	INCOMPLETE :     .  (X00)
TDR/PNR IDX:   (001, 002)   	AUDITPOS   : 13287580
CONTINUED  :     N  (X00)     	RECCOUNT   :     1  (X01)

2019/01/17 16:48:01.129.045 METADATA             LEN 0 RBA 3425
PARTITION NAME: P1  PARTITION ID: 75,234  FLAGS: X00000001
___________________________________________________________________
HDR-IND    :     E  (X45)     	PARTITION  :     .  (XFF8C)
UNDOFLAG   :     .  (X00)     	BEFOREAFTER:     A  (X41)
RECLENGTH  :    18  (X0012)  	IO TIME    : 2019/01/17 16:47:58.000.000
IOTYPE     :     5  (X05)    	ORIGNODE   :   255  (XFF)
TRANSIND   :     .  (X00)     	FORMATTYPE :     R  (X52)
SYSKEYLEN  :     0  (X00)     	INCOMPLETE :     .  (X00)
AUDITRBA   :         15       	AUDITPOS   : 13287580
CONTINUED  :     N  (X00)    	RECCOUNT   :     1  (X01)

2019/01/17 16:47:58.000.000 INSERT               LEN    18 RBA 3486
NAME: TKGGU1.T1  (PARTITION: P1, TDR/PNR INDEX: 1/2)
AFTER  IMAGE:                                             PARTITION X8C   G  B
 0000 0500 0000 0100 3101 0005 0000 0001 0031      | ........1........1
COLUMN     0 (X0000), LEN     5 (X0005)
 0000 0100 31                                      | ....1
COLUMN     1 (X0001), LEN     5 (X0005)
 0000 0100 31                                      | ....1

Oracle GoldenGate 記錄範例

以下說明使用 Logdump 檢視的 Oracle GoldenGate 記錄。第一個部分 (欄位清單) 是標頭,第二個部分則是資料區域。在 Oracle GoldenGate 支援的所有平台上,此記錄看起來類似。圖 1:Oracle GoldenGate 記錄的範例

影像的描述如下

記錄表頭區域

Oracle GoldenGate 記錄標頭提供記錄中包含之資料的描述資料,包括下列資訊。

表頭欄位的描述

以下說明 Oracle GoldenGate 記錄標頭的欄位。某些欄位僅適用於特定平台。

表格:Oracle GoldenGate 記錄標頭欄位

欄位 說明
Hdr-Ind
應一律為 E 值,表示記錄是由「摘錄」處理程序所建立。任何其他值表示無效的資料。
RecLength
記錄緩衝區的長度 (位元組)。
IOType
記錄所代表的作業類型。如需作業類型的清單,請參閱表格 12-* 。
TransInD

目前交易中的記錄地點。值為:

0 - 交易中的第一筆記錄

1 - 交易中既不是第一筆也不是最後一筆記錄

2 - 交易中的最後一個記錄

3 - 僅記錄交易

AuditRBA
可識別交易日誌 ID,像是 Oracle 重做日誌序號。
Continued

(Windows 與 UNIX) 識別記錄是否為太大而無法放入一筆記錄中的較大資料區段。LOB、CLOBS 以及部分 VARCHAR 會儲存在區段中。在單一記錄 (因為 UPDATERECORDFORMAT 參數) 中同時包含影像前後兩者的統一記錄,可能超過記錄的長度上限,也可能產生區隔。

Y - 記錄是區段;向 Oracle GoldenGate 表示此資料會繼續另一筆記錄。

N - 不會延續資料至其他區段;可以是序列中的最後一個,也可以是非較大資料區段的記錄。

Partition
對於 Windows 和 UNIX 記錄,此欄位一律為 4 值 (FieldComp 壓縮記錄為內部格式)。對於這些平台,「分割區」一詞並不表示資料代表資料庫結構內任何特定的邏輯或實體分割區。
BeforeAfter
識別記錄是更新作業之前 (B) 或之後 (A) 影像。將影像之前和之後結合為 UPDATERECORDFORMAT 參數結果的記錄標示為影像之後。插入一律在影像之後,刪除一律在影像之前。
IO Time
作業發生時間 (以來源系統的當地時間表示),以 GMT 格式表示。視作業發生時間而定,異動中每個作業的這個時間可能相同或不同。
FormatType
識別資料是從交易日誌讀取或從資料庫擷取。</p>F - 從資料庫擷取 <p>R - 可在交易日誌中讀取
Incomplete
此欄位已作廢。
AuditPos
識別資料異動日誌中的位置。
RecCount
(Windows 和 UNIX) 在必須分割成要寫入 Oracle GoldenGate 檔案的區塊時,用於 LOB 資料。RecCount 是用來重新組合區塊。

使用標頭資料

Oracle GoldenGate 記錄標頭中的部分可用資料可以使用 @GETENV 函數的 GGHEADER 選項,或是使用下列任一交易元素作為 TABLE 或 MAP 參數中 COLMAP 敘述句的來源表示式來進行對應。

-

GGS_TRANS_TIMESTAMP

-

GGS_TRANS_RBA

-

GGS_OP_TYPE

-

GGS_BEFORE_AFTER_IND

記錄資料區域

Oracle GoldenGate 歷程檔記錄的資料區域包含下列項目:

以下說明 Oracle GoldenGate 在 Windows、UNIX、Linux 和 NonStop 系統上使用的記錄影像格式差異。

完整記錄影像格式 (NonStop 來源)

完整記錄影像包含已處理資料列的所有資料欄值。來源系統為 HP NonStop 時,會在歷程檔中產生完整的記錄影像格式,而且只有在記錄標頭中指定的 IOType 為下列其中一種時,才會產生完整記錄影像格式:

3 - ­Delete 5 - Insert 10 - Update

每個完整記錄影像的格式都與從讀取原始檔案或表格的程式擷取的格式相同。對於 SQL 表格,日期時間欄位、空值以及其他資料都會完全寫入,因為程式會選取該表格進入應用程式緩衝區。雖然日期時間欄位會以 8 位元組的時間戳記在內部呈現,但其外部表單最多可有 26 個位元組以字串表示。確認擷取記錄,因為記錄存在於原始檔案中。

當作業類型為 Insert 或 Update 時,影像會包含作業之後的記錄內容 (後面影像)。當作業類型為 Delete 時,影像會包含作業前的記錄內容 (前一個影像)。

對於從 Enscribe 資料庫產生的記錄,除非原始檔案的 AUDITCOMPRESS 屬性設為 ON,否則會輸出完整的記錄影像。當 AUDITCOMPRESS 為 ON 時,只要原始檔案收到更新作業,就會產生壓縮的更新記錄。(擷取處理作業可以使用 FETCHCOMPS 參數擷取完整影像。)

壓縮的記錄影像格式 (Windows、UNIX、Linux 來源)

壓縮的記錄影像僅包含索引鍵 (主要、唯一、KEYCOLS) 和已處理資料列中變更的資料欄。依照預設,Windows 和 UNIX 系統上處理作業所寫入的歷程檔記錄一律會壓縮。

壓縮記錄的格式如下:

column_index
          column_length
          column_data[...]

其中:

-

column_index

是來源表格內資料欄的序數索引 (2 個位元組)。

-

colum_length

是資料的長度 (2 個位元組)。

-

column_data

是資料,包括

NULL

或

VARCHAR

長度指標。

您可以壓縮從 NonStop 平台寫入的記錄。壓縮的 Enscribe 記錄的格式如下:

field_offset
        field_length field_value[...]

其中:

-

field_offset

是變更值的原始記錄內的位移 (2 個位元組)。

-

field_length

是資料的長度 (2 個位元組)。

-

field_value

是資料,包括

NULL

或

VARCHAR

長度指標。

壓縮的 Enscribe 記錄中的第一個欄位是主要或系統索引鍵。

權杖區域

歷程檔記錄也可以包含兩個記號區域。其中一個是供內部使用,未在此記錄,另一個則是使用者記號區域。使用者記號是擷取並儲存於歷程檔記錄中的環境值,以複寫至目標資料欄或其他用途。如果使用,這些記號會跟隨記錄的資料部分,使用 Logdump 檢視時會顯示如下所示:

參數 值
TKN-HOST TKN-GROUP TKN-BA_IND TKN-COMMIT_TS TKN-POS TKN-RBA TKN-TABLE TKN-OPTYPE TKN-LENGTH TKN-TRAN_IND : syshq : EXTORA : AFTER : 2011-01-24 17:08:59.000000 : 3604496 : 4058 : SOURCE.CUSTOMER : INSERT : 57 : BEGIN

Oracle GoldenGate 作業類型

以下是部分 Oracle GoldenGate 作業類型。類型可在新增功能至 Oracle GoldenGate 時新增。如需更新的清單,請使用 Logdump 公用程式中的 SHOW RECTYPE 指令:

類型 說明 平台
1-Abort 交易被中止 。 詢問表格
2-Commit 已確認交易。 詢問表格
3-Delete 已刪除記錄 / 資料列。Delete 記錄通常包含完整的記錄影像。不過,如果使用 COMPRESSDELETES 參數,則只會顯示索引鍵資料欄。 全部
4-EndRollback 資料庫倒回已結束 詢問表格
5-Insert 已插入記錄 / 資料列。Insert 記錄包含完整的記錄影像。 全部
6-Prepared 網路交易已準備好進行確認。 詢問表格
7-TMF- 關機 發生 TMF 關閉。 詢問表格
8-TransBegin 已不再使用。 詢問表格
9-TransRelease 已不再使用。 詢問表格
10-Update 已更新記錄 / 資料列。Update 記錄包含完整的記錄影像。注意:如果記錄標頭中的分割區指示器為 4,則記錄為 FieldComp 格式 (請參閱下方),且會壓縮更新。 全部
11-UpdateComp 已更新 TMF AuditComp 格式的記錄 / 資料列。在此格式中,只存在已變更的位元組。每個資料片段之前,格式為 2-byte_offset2-byte_length 的 4 位元組描述元。位元組位移是來源表格內資料欄的序數索引。長度為資料的長度。 詢問表格
12-FileAlter 已更改資料庫檔案的屬性。 NSK
13-FileCreate 已建立資料庫檔案。 NSK
14-FilePurge 已刪除資料庫檔案。 NSK
15-FieldComp 已更新 SQL 表格中的資料列。在此格式中,只存在已變更的位元組。資料庫不會記錄未變更資料欄的影像之前。每個資料片段之前,格式為 2-byte_offset2-byte_length 的 4 位元組描述元。位元組位移是來源表格內資料欄的序數索引。長度為資料的長度。記錄標頭中的分割區指示符號 4 表示 FieldComp 格式。 全部
16-FileRename 檔案已重新命名。 NSK
17-AuxPointer 包含關於哪些 AUX 軌跡有新資料以及要讀取的位置資訊。 詢問表格
18-NetworkCommit 已確認網路交易。 詢問表格
19-NetworkAbort 網路交易被中止 。 詢問表格
90- (GGS) SQLCol 已新增 SQL 表格中的資料欄或資料欄,或屬性已變更。 NSK
100- (GGS) Purgedata 已從檔案移除所有資料 (PURGEDATA)。 NSK
101- (GGS) 清除 (檔案) 已清除檔案。 NSK 非 TMF
102- (GGS) 建立 (檔案) 已建立檔案。Oracle GoldenGate 記錄包含檔案屬性。 NSK 非 TMF
103- (GGS) 更改 (文件) 檔案已被更改。Oracle GoldenGate 記錄包含更改的檔案屬性。 NSK 非 TMF
104- (GGS) 重新命名 (文件) 檔案已重新命名。Oracle GoldenGate 記錄包含原始名稱和新名稱。 NSK 非 TMF
105- (GGS) 設定模式 已執行 SETMODE 作業。Oracle GoldenGate 記錄包含 SETMODE 資訊。 NSK 非 TMF
106-GGSChangeLabel 已執行 CHANGELABEL 作業。Oracle GoldenGate 記錄包含 CHANGELABEL 資訊。 NSK 非 TMF
107- (GGS) 控制 已執行 CONTROL 作業。Oracle GoldenGate 記錄包含 CONTROL 資訊。 NSK 非 TMF

115 和 117

(GG) KeyFieldComp (32)

已更新主鍵。Oracle GoldenGate 記錄包含索引鍵的先前影像,以及索引鍵和資料列的後續影像。資料為 FieldComp 格式 (壓縮),表示資料庫不會記錄未變更資料欄的影像之前。 視窗與 UNIX

116-LargeObject

116-LOB

識別 RAW、BLOB、CLOB 或 LOB 資料欄。此類型的資料會儲存在多筆記錄中。 視窗與 UNIX
132- (GGS) SequenceOp 識別序列上的作業。 視窗與 UNIX

134- 未生效更新

135- 未啟用 PKUPDATE

識別在相同記錄中同時包含前後值的統一軌跡記錄。UNIFIED UPDATE 中的前一個影像包含之前和之後影像交易記錄中所有可用的資料欄。UNIFIED UPDATE 中的前一個影像包含交易記錄中可用的所有資料欄,但後面的影像僅限於主索引鍵資料欄,以及在 UPDATE 中修改的資料欄。 視窗與 UNIX
160 - DDL_Op 識別 DDL 作業 視窗與 UNIX

161-

RecordFragment

識別必須跨多筆記錄儲存的大型資料列部分 (不只是基礎記錄)。 視窗與 UNIX

200-GGS 非結構性區塊

200-BulkIO

已執行 BULKIO 作業。Oracle GoldenGate 記錄包含 RAW DP2 區塊。 NSK 非 TMF
201 年至 204 年

這些是不同類型的 NonStop 追蹤記錄。Oracle GoldenGate 支援分析人員會使用追蹤記錄。以下為說明。

  • ARTYPE_FILECLOSE_GGS 201
    - 來源應用程式已關閉針對非結構化 I/O 開啟的檔案。由 Replicat 使用

  • ARTYPE_LOGGERTS_GGS 202
    - Logger 活動訊號記錄

  • ARTYPE_EXTRACTERTS_GGS 203
    - 未使用

  • ARTYPE_COLLECTORTS_GGS 204
    - 未使用

NSK 非 TMF
205-GGSComment 指示 Logdump 公用程式建立的註解記錄。Logdump 會在以 Logdump 的 SAVE 指令儲存至檔案的資料開頭和結尾,建立註釋記錄。 全部
249 到 254

這些是不同類型的 NonStop 追蹤記錄。Oracle GoldenGate 支援分析人員會使用追蹤記錄。以下為說明。

  • ARTYPE_LOGGER_ADDED_STATS 249
    - 日誌記錄器在來源應用程式關閉日誌記錄器開啟時所建立的統計資料記錄 (如果)
    SENDERSTATS
    已啟用,統計資料會寫入日誌歷程檔)

  • ARTYPE_LIBRARY_OPEN 250
    - 寫入者
    BASELIB
    以顯示應用程式已開啟檔案

  • ARTYPE_LIBRARY_CLOSE 251 
    - 寫入者
    BASELIB
    以顯示應用程式已關閉檔案。

  • ARTYPE_LOGGER_ADDED_OPEN 252 
    - 未使用

  • ARTYPE_LOGGER_ADDED_CLOSE
    253 - 未使用

  • ARTYPE_LOGGER_ADDED_INFO 254
    - 由日誌記錄器撰寫,並包含後續記錄中執行 I/O 之來源應用程式的相關資訊 (如果有的話)
    SENDERSTATS
    已啟用,且統計資料會寫入 logtrail。追蹤記錄中的檔案名稱是應用程式的物件檔案。追蹤資料具有應用程式處理作業名稱,以及執行時所使用的程式庫名稱 (如果有的話)。

NSK 非 TM