準備 Oracle GoldenGate 的 Db2 z/OS 交易日誌
瞭解如何設定 Db2 交易記錄日誌,以支援 Oracle GoldenGate Extract 的資料擷取。
Oracle GoldenGate 可以從作用中和存檔的日誌擷取 Db2 交易資料。請遵循這些準則來設定日誌,讓 Extract 能夠擷取資料。
若要啟用 Oracle GoldenGate for Db2 z/OS 的變更擷取,請參閱啟用非 Oracle 資料庫的 TRANDATA
啟用日誌記錄的存取權
啟用 Db2 監督器追蹤類別 1 ("TRACE(MONITOR) CLASS(1)") 讓 Db2 允許 Extract 讀取作用中的日誌。OPX 的預設目的地已足夠,因為 Oracle GoldenGate 未使用目的地。
手動啟動追蹤
-
以具備
TRACE權限或至少SYSOPR權限的 Db2 使用者身分登入 Db2。 -
發出下列命令:
start trace(monitor) class(1) scope(group)
在 Db2 啟動時自動啟動追蹤
執行下列任一項操作:
-
在
DSNTIPN安裝追蹤面板上將MONITOR TRACE設為 "YES"。 -
如 Db2 UDB Installation Guide 所述,在
DSNTIJUZ安裝工作中設定 'DSN6SYSP MON=YES'。
注意: ODBC 計劃執行程式的主要授權 ID 或其中一個次要授權 ID 也必須具有 MONITOR2 權限。
大小與保留日誌
使用 DATA CAPTURE CHANGES 定義表格時,會記錄更多資料,而不是使用 DATA CAPTURE NONE 定義表格時。如果符合下列任一條件,您可能需要增加作用中和已存檔日誌的數目和大小。
-
您的應用程式會產生大量的 Db2 資料。
-
您的應用程式有不常的確認。
-
您預期會停止擷取很長的時間。
-
您的網路不可靠或緩慢。
使用 DSNTIJUZ 安裝工作中的 DSN6LOGP MAXARCH 系統參數來控制日誌保留。
保留足夠的日誌資料,讓 Extract 在您停止或發生非計畫性停機之後,可以從其檢查點重新開始。Extract 必須能夠存取包含最早未確認工作單位開始的日誌,以及之後的所有日誌。
如果處理期間擷取所需的資料未保留在線上或封存日誌中,則可能需要下列其中一個更正動作:
-
更改 Extract 可從日後可用的日誌資料點擷取 (並接受目標可能的資料遺失)。
-
重新同步來源和目標表格,然後再次啟動 Oracle GoldenGate 環境。注意: IBM 文件提供改善日誌讀取效能的建議。特別是,您可以使用大型日誌輸出緩衝區、大型作用中日誌,以及將存檔至磁碟。
在磁帶上使用存檔日誌
Oracle GoldenGate 可以讀取磁帶上的 Db2 存檔日誌,進而降低效能。例如,Db2 會將磁帶存檔保留為單一復原工作,讓 Extract 無法讀取用來復原表格的存檔磁帶,直到復原完成為止。您可以使用 DFHSM 或等效工具,在線上 DASD 儲存裝置與磁帶之間順暢地移動歸檔記錄檔,但是 Extract 必須等到傳輸完成。Extract 處理延遲會增加來源與目標資料之間的延遲。
如果 Oracle GoldenGate Extract 可以或將從磁帶讀取,無論是實體磁帶或虛擬磁帶,強烈建議您確保考量下列 ZPARMs:
死者
DEALLCT 子系統參數決定在解除配置之前,允許歸檔讀取磁帶單元保持未使用的時間長度。
更新:面板 DSNTIPB 上的選項 43
DSNZPxxx: DSN6LOGP DEALLCT
Oracle 建議將 DEALLCT 設為 0、1 (延遲 1 秒)。預設值為立即取消配置。這樣可以防止 Db2 在 Extract 的讀取之間立即重新配置磁帶。
MAXRTU
MAXRTU 子系統參數指定可配置給並行讀取歸檔日誌磁帶磁碟區的專用磁帶單元數目上限。
更新:面板 DSNTIPB 上的選項 43
DSNZPxxx: DSN6LOGP MAXRTU
預設值為 2 個磁帶單位,但應設為可從 tape+1 並行讀取的預期處理作業數目。例如,如果有 4 個 Extract 和 2 個其他應用程式可以從磁帶讀取,則 MAXRTU 至少應為 7 (4 + 2 + 1)。
若要在從磁帶讀取時獲得最佳效能和最少延遲,Oracle GoldenGate Extract 應使用:
TRANLOGOPTIONS BUFSIZE 33554432
這是 Extract 一次從交易日誌讀取最多達 32MB 的指示,而不是每一讀取的預設值 1MB。此設定不會增加 Oracle GoldenGate 在 z/OS (ECSA (64 個位元組) 或 64 位元共用記憶體 (1MB) 上使用的記憶體配置。Db2 當 Extract 讀取大型緩衝區時,暫時記憶體配置可能會增加。
此外,在 Extract 參數檔中,在 DBLOGIN 參數之前,也可以使用下列功能進一步調整 Db2 驅動程式 TCP 通訊緩衝處理。舉例而言:
SETENV(DB2SOSNDBUF='524288')
SETENV(DB2SORCVBUF='524288')
這會通知 Db2 驅動程式使用 512KB 作為傳送緩衝區和接收端緩衝區。可以使用其他值,並且每個安裝都可以調整。
控制日誌清除
讀取交易日誌時,Extract 在擷取確認記錄前不會處理交易。如果確認記錄位於未滿的資料區塊上,則必須產生更多日誌活動以完成區塊,才能擷取該記錄。Extract 用於讀取日誌的 API 只會擷取完整的實體資料區塊。
接收包含確認項目之區塊的延遲可能會導致來源與目標資料之間的延遲。如果應用程式未產生足夠的日誌記錄來填滿區塊,則 Extract 會發出 SAVEPOINT 和 COMMIT 敘述句來產生日誌記錄,直到區塊以一種方式填滿並釋出為止。
在資料共用群組中,每個 API 呼叫會使 Db2 清除所有作用中成員的資料區塊,而不需要 Extract 執行排清。
若要防止 Extract 執行排清,請將 Extract 參數 TRANLOGOPTIONS 與 NOFLUSH 選項搭配使用。