新增擷取和 Replicat 處理作業之前

在建立 Oracle GoldenGate 部署的 Extract 和 Replicat 處理作業之前,瞭解必要的先決條件組態。

新增 TRANDATA

適用於 i、Db2 LUW、Db2 z/OS、Oracle、PostgreSQL、SQL Server 及 Sybase 的 Db2。

視來源資料庫而定,必須啟用補充記錄日誌以擷取 DML 作業,並可透過 Web 介面中資料庫連線的 Trandata 功能表,或透過發出 ADD TRANDATA 或 ADD SCHEMATRANDATA (僅適用於 Oracle) 在「管理從屬端」中啟用。

初始載入 Extract 的來源資料庫不需要新增 TRANDATA。不過,如果將同時使用初始載入 Extract 和變更資料擷取 (CDC) Extract 進行線上建立,則應先新增 TRANDATA,再開始初始載入 Extract。

啟用 Oracle AI Database 的 TRANDATA 或 SCHEMATRANDATA

這可以在表格、綱要或全域 (資料庫) 層次完成。

若要啟用補充記錄日誌,請從 DB 連線頁面連線至資料庫,選取 Trandata 功能表,然後執行下列步驟:

  1. 視需要選取「表格」或「綱要」選項,然後按一下加號來新增。

  2. 輸入您要設定補充記錄日誌的表格名稱。請確定輸入綱要名稱的完整表格名稱,例如 HR.EMP。您也可以使用萬用字元,而非特定的表格名稱。

  3. 按一下提交。

初始載入時若沒有 CDC,您可以略過 ADD TRANDATA。

您也可以使用 ADD TRANDATA 和 ADD SCHEMATRANDATA 命令來設定 trandata 和綱要層次 trandata。

注意:在您執行 ADD TRANDATA 命令之前,您必須先使用 DBLOGIN 命令連線至要新增 Extract 的資料庫。此外,請先執行 ADD TRANDATA 或 ADD SCHEMATRANDATA 命令,再新增 Extract。

對非 Oracle 資料庫啟用 TRANDATA

適用於 Db2 i、Db2 LUW、Db2 z/OS、PostgreSQL、SQL Server 和 Sybase。

這可以在表格或全域 (資料庫) 層次完成。若要啟用補充記錄日誌,請從 DB 連線頁面連線至資料庫,選取 Trandata 功能表,然後執行下列步驟:

  1. 選取表格選項,然後按一下加號以新增。

  2. 輸入您要設定補充記錄日誌的表格名稱。請務必輸入完整的表格名稱,例如 EMPLOYEE。您也可以使用萬用字元,而非特定的表格名稱。

  3. 按一下提交。

為 i 啟用 Db2 的變更擷取

若要擷取日誌中表格的變更,您可以在 IBM i 命令行執行 STRJRNPF 命令,或從「管理從屬端」執行 ADD TRANDATA 命令。ADD TRANDATA 命令會呼叫 STRJRNPF,這是開始記錄表格的建議方法,因為它可確保在 STRJRNPF 命令上設定「記錄影像」 (IMAGES): *BOTH 的必要日記帳影像屬性。

ADD TRANDATA 指令為:

ADD TRANDATA table_specification

其中:table_specification 為下列其中一項:

-

*schema.table* [JOURNAL *library/journal*]

-

*library/file* [JOURNAL *library/journal]*)

指定預設日記帳

若要在 ADD TRANDATA 指令中為多個表格或檔案指定預設日記帳,而不是指定 JOURNAL 關鍵字,請在發出 ADD TRANDATA 之前使用下列指令。

DEFAULTJOURNAL *library/journal*

任何不使用分錄的 ADD TRANDATA 指令都會假設來自 DEFAULTJOURNAL 的日記帳。

若要顯示 DEFAULTJOURNAL 的目前設定,您可以發出不含引數的指令。

移除預設日記帳規格 **

若要移除預設日誌的使用,請使用以下命令:

DEFAULTJOURNAL CLEAR

啟用 Db2 LUW 的變更擷取

設定 Db2,以 CREATE TABLE 和 ALTER TABLE 命令的 DATA CAPTURE CHANGES 功能提供的展開格式記錄資料變更。此格式為 Oracle GoldenGate 提供更新敘述句所變更之資料列之前和之後的整個影像。以下列方式執行 ALTER TABLE 命令:

發出以下命令。

ADD TRANDATA owner.table

其中 owner.table 是表格的完整名稱。您可以使用萬用字元來指定多個表格名稱。

ADD TRANDATA 會發出下列命令,包括記錄 LONGVAR 資料欄之前的影像:

ALTER TABLE name DATA CAPTURE CHANGES INCLUDE LONGVAR COLUMNS;

範例 7-1 排除 LONGVAR 記錄日誌:

若要省略 ALTER TABLE 指令中的 INCLUDE LONGVAR COLUMNS 子句,請使用 ADD TRANDATA 加上 EXCLUDELONG 選項。

ADD TRANDATA *owner.table*, EXCLUDELONG

注意:如果不記錄 LONGVAR 資料欄,則需要在影像之前 (例如 GETUPDATEBEFORES、NOCOMPRESSUPDATES 和 NOCOMPRESSDELETES 參數) 的 Oracle GoldenGate 功能可能會在表格包含這些資料欄時傳回錯誤。如需解決方法,請參閱 TRANLOGOPTIONS 參數的 REQUIRELONGDATACAPTURECHANGES | NOREQUIRELONGDATACAPTURECHANGES 選項。

新增檢查點表格

所有非平行 Replicat 都必須要有檢查點表格,而且必須先在資料庫中建立後再新增 Replicat。檢查點會成功或失敗交易,因此 Replicat 可確保只套用一次交易,即使處理作業失敗或資料庫也一樣。

您可以檢視檢查點區段內的檢查點表格。若要新增檢查點表格,請從資料庫連線頁面連線至目標資料庫,選取檢查點,然後執行下列步驟:

  1. 按一下加號即可新增檢查點表格。

  2. 以格式新增檢查點表格名稱

    *table*.*checkpoint_table_name*
  3. 按一下提交。檢查點建立之後,您就可以在檢查點表格清單中看到。

若要從命令行執行此工作,請參閱 Oracle GoldenGate 命令行介面參照中的 ADD CHECKPOINTTABLE 。

在 Db2 中為 i 新增含有日誌的檢查點表格

在 i 目標資料庫的 Db2 中,每個寫入檢查點表格的檢查點都必須在 Replicat 交易中進行日誌記錄。

使用日誌記錄建立檢查點表格的常見方法如下:

  1. 在目標系統上建立 Replicat 檢查點檔案。

    設定要用於檢查點檔案之日記帳的名稱。預設值為 GGSCHEMA/OGGJRN。

    您可以使用 DEFAULTJOURNAL 命令,設定目前「管理從屬端」階段作業的預設值來變更它。DEFAULTJOURNAL 指令的語法為:

    DEFAULTJOURNAL *library_name*/*journal_name*

    其中:library_name 是程式庫的名稱,而 journal_name 是後續作業 (可選擇性指定日記帳) 所要使用的日記帳名稱。

  2. 新增檢查點表。

    ADD CHECKPOINTTABLE *library_name*.chkptab
  3. 新增日誌記錄至檢查點表格。

    ADD TRANDATA *library_name*.CHKPTAB

如需有關建立檢查點表格的詳細資訊,請參閱新增檢查點表格。

新增活動訊號表

活動訊號表格是用來監督整個資料複製週期的延遲。自動活動訊號會從每個來源資料庫傳送至複製串流,方法是更新活動訊號原始內建值表格和活動訊號表中的記錄,並建構活動訊號歷史記錄。

複製串流中的每個處理作業都會使用追蹤資訊更新活動訊號記錄,然後在目標資料庫的活動訊號表中更新這些資訊。這些活動訊號記錄會插入或更新到目標資料庫的活動訊號表中。

注意:建立活動訊號表是選擇性的,但建議您使用。

若要新增活動訊號表,請從「資料庫連線」頁面連線至每個來源和目標資料庫,選取「活動訊號」功能表,然後執行下列步驟:

  1. 按一下旁邊的加號 (+) 即可新增活動訊號表。

  2. 接受預設設定,或視需要修改可用值。

    注意:對於可選擇僅限目標的資料庫,如果該資料庫只用來作為複製串流中的目標資料庫,請選取此選項,以避免建立與來源資料庫關聯的不必要工作。

  3. 按一下提交。

若要從命令行執行此工作並複查重要的資料庫特定限制,請參閱 Oracle GoldenGate 命令行介面參照中的 ADD HEARTBEATTABLE 。

下列步驟描述設定活動訊號表的指令。

  1. 從命令行啟動「管理從屬端」。

  2. 從「管理從屬端」連線至部署。

    CONNECT https://remotehost:*srvmgrport* DEPLOYMENT *deployment_name* AS *deployment_user* PASSWORD *deployment_password*

    以下為範例:

    CONNECT https://remotehost:16000 DEPLOYMENT *ggdep_postgres* AS ggadmin PASSWORD P@ssWord
  3. 使用 DBLOGIN USERIDALIAS 命令連線至來源和目標資料庫。下列範例顯示證明資料別名為 ggeast 的來源資料庫連線:

    (https://remotehost:16000 ggdep_postgres)> DBLOGIN USERIDALIAS ggeast
  4. 新增活動訊號表:

    (https://remotehost:16000 ggdep_postgres)> ADD HEARTBEATTABLE

或者,對於僅用於單向複製的目標資料庫,您可以包含不會建立活動訊號記錄更新功能的 TARGETONLY 選項。

如需有關指令選項的詳細資訊,請參閱 ADD HEARTBEATTABLE 。

執行 PostgreSQL 的活動訊號更新和永久清除功能

Oracle GoldenGate for PostgreSQL 支援活動訊號表組態,有一些關於更新和永久清除作業的限制。

活動訊號表和相關函數是從 ADD HEARTBEATTABLE 命令建立的,但對於 PostgreSQL,並無自動排程器可呼叫函數。

一個主要功能可控制活動訊號記錄更新與活動訊號歷史記錄表格清除功能。這兩個功能的預設設定是更新頻率的 60 秒,歷史記錄清除的 1 天,預設會刪除超過 30 天的所有記錄。

若要呼叫主要活動訊號記錄功能,使用者應建立會執行的作業系統層次工作

"select ggschema.gg_hb_job_run();"

呼叫此函數時,它將考慮更新頻率設定值與歷史記錄清除設定值,並使用這些值,無論函數呼叫的排程器設定值為何。

例如,使用者可以使用下列語法建立 Cron 工作,然後讓它每分鐘執行一次。

PGPASSWORD="gguserpasswd" psql -U gguser -d dbname -h remotehost -p 5432 -c "select ggschema.gg_hb_job_run();" >/dev/null
 2>&1

Windows 工作排程器、pgAdmin 或 pg_cron 是其他可用來排定函數呼叫的程式。

建立 Oracle GoldenGate CDC 清除作業

對於 SQL Server 使用者,在新增 Extract 之前,必須先建立 Oracle GoldenGate CDC 清除作業。您可以執行Oracle GoldenGate CDC 清除處理作業的詳細資訊中的步驟來進行。

PostgreSQL:擷取遠端部署的考量

對於遠端部署,來源資料庫和 Oracle GoldenGate 會安裝在個別的伺服器上。遠端部署是支援雲端資料庫的唯一選項,例如 Azure for PostgreSQL 或 Amazon Aurora PostgreSQL。

對於遠端部署,資料庫伺服器與 Oracle GoldenGate 伺服器之間的作業系統位元組順序必須相同。

Oracle GoldenGate 伺服器的伺服器時區和時區應與資料庫伺服器的伺服器時區同步。如果無法這麼做,則建立或更改 Extract 時必須由 LSN 完成定位。

在遠端擷取使用案例中,使用 SQLEXEC 可能會造成額外的延遲,因為 SQLEXEC 作業必須針對 Extract 處理的每個記錄以序列方式完成。如果需要 SQLEXEC 的特殊篩選是由遠端集線器 Extract 完成,且效能影響太嚴重,則可能需要將 Extract 處理作業更接近來源資料庫。

透過遠端部署,低網路延遲很重要,建議 Oracle GoldenGate 伺服器與來源資料庫伺服器之間的網路延遲低於 1 毫秒。