監視器延遲

延遲統計資料顯示 Oracle GoldenGate 處理作業如何跟上商業應用程式所產生的資料量。您可以使用此資訊來診斷可疑的問題,以及調整 Oracle GoldenGate 處理作業的效能,將來源與目標資料庫之間的延遲降到最低。

關於延遲

對於 Extract,延遲指的是 Extract 處理一筆記錄的時間 (依據系統時鐘) 與資料來源中該記錄之時戳之間的差異 (秒)。

對於 Replicat,延遲指的是 Replicat 處理最後一筆記錄的時間 (依據系統時鐘) 與歷程檔中該記錄之時戳之間的差異 (秒)。

若要檢視延遲統計資料,請使用 [LAG](/pls/topic/lookup?ctx=en/database/goldengate/core/26/coredoc&id=GCLIR-GUID-52D1B2C3-6ACF-4461-9ED2-FD3AE9121022) 或 [SEND ER](/pls/topic/lookup?ctx=en/database/goldengate/core/26/coredoc&id=GCLIR-GUID-DD62102E-A84D-4866-9A3A-9C2281CFEED7)、[SEND EXTRACT](/pls/topic/lookup?ctx=en/database/goldengate/core/26/coredoc&id=GCLIR-GUID-2A83CA04-DAB8-494B-BF36-F8D15E645749)、[SEND REPLICAT](/pls/topic/lookup?ctx=en/database/goldengate/core/26/coredoc&id=GCLIR-GUID-DBA8F45C-6016-4AB4-BF9A-00C117029E7F) 指令。

注意:INFO 命令也會傳回延遲統計資料,但此統計資料是取自最後一個已檢查點的記錄,而不是目前正在處理的記錄。它的準確度低於 LAG 或 INFO。

使用自動活動訊號表格監督延遲

您可以使用預設的自動活動訊號表功能,監督端對端複製延遲。自動活動訊號會從每個來源資料庫傳送至複製串流,方法是更新活動訊號原始內建值表格和活動訊號表格中的記錄,以及建構 heartbeat history table。複製路徑中的每個複製處理作業都會處理這些活動訊號記錄,並更新它們中的資訊。這些活動訊號記錄會插入或更新到目標資料庫的活動訊號表中。

活動訊號表包含下列資訊:

使用活動訊號表格和活動訊號歷史記錄表格中的資訊,可以計算每個複製的目前和歷史延遲。

Replicat 可以使用自動活動訊號表 (LOGBSN) 追蹤 Extract 目前的重新啟動位置。這樣可以視需要從來源資料庫重新產生歷程檔,並將來源資料庫的重做日誌保留期間縮到最短。此外,藉由追蹤最近的 Extract 重新啟動位置,可以更頻繁地清除自動「衝突偵測與解決 (ACDR)」表格的墓碑表格。

在雙向組態中,活動訊號表的項目數目與資料庫所擁有之鄰近項目的複製路徑數目相同,且在單向設定中,來源的表格是空的。外送資料欄包含時戳和外送路徑、本機 Extract 以及順流處理作業。內送資料欄包含上游處理作業和本機 Replicat 的時戳和路徑。

在單向組態中,目標資料庫將只填入活動訊號表中的內送資料欄。

注意:MySQL 版本 5.5 不支援「自動活動訊號」功能。

活動訊號表格端對端複寫流程

活動訊號表的端對端複製處理作業必須使用 Oracle GoldenGate 歷程檔格式。程序如下:


使用 ADD HEARTBEATTABLE 命令,將活動訊號表新增至您的每個資料庫。將活動訊號表新增至所有來源和目標執行處理,然後重新啟動現有的 Oracle GoldenGate 處理作業,以啟用活動訊號功能。視資料庫而定,您不一定需要建立或啟用工作來植入活動訊號表資料。

請參閱下列範例:

DBLOGIN USERIDALIAS *alias*  [DOMAIN domain]|[SYSDBA | SQLID sqlid][SESSIONCHARSET character_set]}
ADD HEARTBEATTABLE

(選擇性) 對於 Oracle 資料庫,您必須確定 Oracle DBMS_SCHEDULER 的運作正常,因為活動訊號更新依賴它。您可以發出下列資訊來查詢 DBMS_SCHEDULER:

SELECT START_DATE, LAST_START_DATE, NEXT_RUN_DATE
FROM DBA_SCHEDULER_JOBS

其中 job_name ='GG_UPDATE_HEARTBEATS';

然後尋找 NEXT_RUN_DATE 的有效項目,這是排程器下次執行的時間。如果這是過去的時間戳記,則不會執行任何工作,您必須加以更正。

排程器無法運作的常見原因是參數 job_queue_processes 設定太低 (通常為零) 時。使用 ALTER SYSTEM SET JOB_QUEUE_PROCESSES = ##; 命令增加資料庫中設定的 job_queue_processes 數目,其中 ## 是工作佇列處理作業的數目。


執行擷取,接收邏輯變更記錄 (LCR) 時會檢查 OUTGOING_EXTRACT 資料欄中的值。



讀取記錄的分配服務會檢查 OUTGOING_ROUTING_PATH 資料欄中的值。此資料欄有分送路徑清單。

如果值為 NULL,則資料欄會以目前的群組名稱 (如果這是分送服務,則為路徑)、"*"、更新 OUTGOING_ROUTING_TS 資料欄,並將記錄寫入其目標歷程檔中。

如果值在清單中有 "*",請將它取代為 group name[:pathname],"*"',更新 OUTGOING_ROUTING_TS 資料欄,並將記錄寫入其目標歷程檔中。當值在清單中沒有星號 (*) 且分送路徑名稱在清單中時,記錄會傳送至清單中相關 group name[:pathname],"*"' 組中指定的路徑。如果分送路徑名稱不在清單中,則會捨棄該記錄。

執行 Replicat,接收記錄時會檢查 OUTGOING_REPLICAT 資料欄中的值。

額外考量:

當活動訊號流經系統時,計算延遲會依賴來源和目標系統的時鐘來進行正確設定。如果目標系統超出來源系統,則延遲可能為負數。延遲會顯示為負數,以便您瞭解其時鐘差異,並可採取動作來修正。

通過系統的時戳為 UTC。沒有與時戳關聯的時區,因此在檢視活動訊號表格時,即使不同的元件位於不同的時區,也可以快速檢視延遲。您可以在基礎表格上方撰寫任何您要的檢視;建議使用 UTC。

所有活動訊號項目都會寫入 UTF-8 的歷程檔。

外傳與內傳路徑可唯一決定列。意思是,如果您有兩個具有相同外傳路徑與不同內傳路徑的列,則會被視為兩個唯一項目。

活動訊號表格詳細資訊

GG_HEARTBEAT 表格顯示端對端複製時間的時戳資訊,以及不同主要和次要 Extract 和 Replicat 元件的時戳資訊。

在單向環境中,只有目標資料庫包含複製延遲的相關資訊。這是在來源資料庫產生記錄,並讓目標資料庫的用戶端看到該記錄的時間。注意:當來源和遠端資料庫都有相同的名稱時,自動活動訊號表不會在 OUTGOING_% 資料欄中填入資料。若要變更資料庫名稱,請使用公用程式 DBNEWID。如需詳細資訊,請參閱 DBNEWID 公用程式。

資料欄 資料類型 說明
LOCAL_DATABASE VARCHAR2 測量遠端資料庫複製時間的本機資料庫。
HEARTBEAT_TIMESTAMP TIMESTAMP(6) 在遠端資料庫產生時戳的時間點。
REMOTE_DATABASE VARCHAR2 產生時戳的遠端資料庫
INCOMING_EXTRACT VARCHAR2 遠端資料庫的主要 Extract (擷取) 名稱
INCOMING_ROUTING_PATH VARCHAR2 遠端資料庫的次要 Extract (pump) 名稱
INCOMING_REPLICAT VARCHAR2 本機資料庫上的 Replicat 名稱。
INCOMING_HEARTBEAT_TS TIMESTAMP(6) 將資訊插入本機資料庫的 GG_HEARTBEAT 表格時,最後的時戳。
INCOMING_EXTRACT_TS TIMESTAMP(6) 產生的時間戳記是由遠端資料庫的主要 Extract 處理的。
INCOMING_ROUTING_TS TIMESTAMP(6) 產生的時間戳記是由遠端資料庫的次要 Extract 處理。
INCOMING_REPLICAT_TS TIMESTAMP(6) 產生的時戳由本機資料庫的 Replicat 處理。
OUTGOING_EXTRACT VARCHAR2 雙向 /N 向複製:本機資料庫上主要 Extract 的名稱。
OUTGOING_ROUTING_PATH VARCHAR2 雙向 /N 向複製:本機資料庫上次要 Extract 的名稱。
OUTGOING_REPLICAT VARCHAR2 雙向 /N 向複製:遠端資料庫上的 Replicat 名稱。
OUTGOING_HEARTBEAT_TS TIMESTAMP(6) 雙向 /N 向複製:將資訊插入遠端資料庫的表格中時的最終時戳。
OUTGOING_EXTRACT_TS TIMESTAMP(6) 雙向 /N 向複製:產生之時戳的時間戳由本機資料庫上的主要 Extract 處理。
OUTGOING_ROUTING_TS TIMESTAMP(6) 雙向 /N 向複製:產生之時戳的時戳由本機資料庫上的次要 Extract 處理。
OUTGOING_REPLICAT_TS TIMESTAMP(6) 雙向 /N 向複製:Replicat 會處理遠端資料庫上所產生之時戳的時間戳記。
INCOMING_REPLICAT_LW_CSN VARCHAR2 -
INCOMING_EXTRACT_HEARTBEAT_CSN VARCHAR2 -
INCOMING_EXTRACT_RESTART_CSN VARCHAR2 -
INCOMING_EXTRACT_RESTART_TS TIMESTAMP(6) -

GG_HEARTBEAT_HISTORY 表格顯示端對端複製時間的歷史時戳資訊,以及不同元件的主要和次要 Extract 和 Replicat 的時機資訊。

在單向環境中,只有目的地資料庫包含複製延遲的相關資訊。

時戳以 UTC 時區管理。這是在來源資料庫產生記錄,並讓目標資料庫的用戶端看到該記錄的時間。

資料欄 資料類型 說明
LOCAL_DATABASE VARCHAR2 測量端對端延遲的本機資料庫。
HEARTBEAT_RECEIVED_TS TIMESTAMP(6) 從遠端資料庫收到之時戳在本機資料庫的時間點。
REMOTE_DATABASE VARCHAR2 產生時戳的遠端資料庫。
INCOMING_EXTRACT VARCHAR2 遠端資料庫上主要 Extract 的名稱。
INCOMING_ROUTING_PATH VARCHAR2 遠端資料庫的次要 Extract 名稱。
INCOMING_REPLICAT VARCHAR2 本機資料庫上的 Replicat 名稱。
INCOMING_HEARTBEAT_TS TIMESTAMP(6) 將資訊插入本機資料庫的 GG_HEARTBEAT_HISTORY 表格時,最後的時戳。
INCOMING_EXTRACT_TS TIMESTAMP(6) 遠端資料庫上主要 Extract 處理產生之時戳的時戳。
INCOMING_ROUTING_TS TIMESTAMP(6) 遠端資料庫上次要 Extract 處理產生時戳時的時戳。
INCOMING_REPLICAT_TS TIMESTAMP(6) 本機資料庫上的 Replicat 處理產生的時間戳記時戳。
OUTGOING_EXTRACT VARCHAR2 雙向 /N 向複製:本機資料庫的主要 Extract 名稱。
OUTGOING_ROUTING_PATH VARCHAR2 雙向 /N 向複製:本機資料庫中次要 Extract 的名稱。
OUTGOING_REPLICAT VARCHAR2 雙向 /N 向複製:遠端資料庫上的 Replicat 名稱。
OUTGOING_HEARTBEAT_TS TIMESTAMP(6) 雙向 /N 向複製:資訊持續插入遠端資料庫表格時的最終時戳。
OUTGOING_EXTRACT_TS TIMESTAMP(6) 雙向 /N 向複製:本機資料庫的主要 Extract 處理產生的時間戳記時戳。
OUTGOING_ROUTING_TS TIMESTAMP(6) 雙向 /N 向複製:由本機資料庫上的次要 Extract 處理產生的時戳時戳。
OUTGOING_REPLICAT_TS TIMESTAMP(6) 雙向 /N 向複製:Replicat 處理遠端資料庫上產生之時戳時的時戳。
REPLICAT_LOW_WATERMARK_CSN String Replicat 會在處理此活動訊號記錄時填入此資料欄。處理此記錄時,它會以目前的低浮水印 (LWM) 植入此資料欄。這可讓我們從 Replicat LWM 的活動訊號記錄中選擇 LOGBSN。
SOURCE_EXTRACT_HEARTBEAT_CSN String 此資料欄是由 Extract 填入,其中包含來源資料庫中活動訊號交易的來源確認 SCN。來源資料庫上的活動訊號工作無法填入此值,因為它不知道確認 SCN apriori。
SOURCE_EXTRACT_RESTART_CSN String 此資料欄將由 Extract 填入,且 Extract 處理此特定活動訊號記錄時將包含目前的 LOGBSN。來源資料庫上的活動訊號工作將不會填入此值。
SOURCE_EXTRACT_RESTART_CSN_TS TIMESTAMP 「擷取」會填入此資料欄,並在「擷取」處理此特定活動訊號記錄時,包含與目前 LOGBSN 對應的 UTC 重做時戳。來源資料庫上的活動訊號工作將不會填入此值。

GG_LAG 視觀表會顯示本機和遠端資料庫之間複製延遲的相關資訊。

在單向環境中,只有目的地資料庫包含複製延遲的相關資訊。延遲以秒為單位。

資料欄 資料類型 說明
LOCAL_DATABASE VARCHAR2 測量遠端資料庫之端對端複製延遲的本機資料庫。
CURRENT_LOCAL_TS TIMESTAMP(6) 本機資料庫的目前時戳。
REMOTE_DATABASE VARCHAR2 產生時戳的遠端資料庫。
INCOMING_HEARTBEAT_AGE NUMBER 從遠端資料庫收到的最新活動訊號時效。
INCOMING_PATH VARCHAR2 使用 Extract 和 Replicat 元件從遠端資料庫至本機資料庫的複製路徑。
INCOMING_LAG NUMBER 從遠端資料庫將延遲複寫至本機資料庫。這是遠端資料庫產生的活動訊號減去資訊永久插入本機資料庫表格的時間。
OUTGOING_HEARTBEAT_AGE NUMBER 從本機資料庫到遠端資料庫的最近活動訊號時效。
OUTGOING_PATH VARCHAR2 使用 Extract 和 Replicat 元件從本機資料庫至遠端資料庫的複製路徑
OUTGOING_LAG NUMBER 從本機資料庫到遠端資料庫的「複製延遲」。這是在本機資料庫產生的活動訊號減去資訊永久插入遠端資料庫表格的時間。
REMOTE_EXTRACT_RESTART_CSN String 來源擷取重新啟動位置。
REMOTE_DATABASE DB_UNIQUE_NAME String 會顯示遠端資料庫唯一名稱。如果沒有唯一的名稱,則會顯示 DB_NAME 值。
REMOTE_EXTRACT_RESTART_CSN_TIME Timestamp 與來源 Extract 重做位置關聯的時戳。
REMOTE_DB_OLDEST_OPEN_TXN_AGE Timestamp Extract 目前處理之來源資料庫中最舊未結交易的存在時間。此資料欄可以計算為 SYSTIMESTAMP - REMOTE_EXTRACT_RESTART_TIME。
LOCAL_REPLICAT_LWM_CSN String 處理活動訊號時,本機 Replicat 的浮水印 CSN 低。

GG_LAG_HISTORY 視觀表會顯示本機和遠端資料庫之間複製延遲歷史記錄的歷史記錄資訊。

在單向環境中,只有目的地資料庫包含複製延遲的相關資訊。

延遲單位的單位為秒。

資料欄 資料類型 說明
LOCAL_DATABASE VARCHAR2 測量遠端資料庫之端對端複製延遲的本機資料庫。
HEARTBEAT_RECEIVED_TS TIMESTAMP(6) 從遠端資料庫收到本機資料庫時戳的時間點。
REMOTE_DATABASE VARCHAR2 產生時戳的遠端資料庫。
DB_NAME 字串 遠端資料庫名稱。
DB_UNIQUE_NAME 字串 遠端資料庫唯一名稱。如果資料庫唯一名稱不存在,則 DB_NAME 和 DB_UNIQUE_NAME 將會相同。在切換至待命案例中,db_unique_name 將會變更,但 db_name 和複製路徑會維持不變
INCOMING_HEARTBEAT_AGE NUMBER 活動訊號表的時代。
INCOMING_PATH VARCHAR2 使用 Extract 和 Replicat 元件從遠端資料庫至本機資料庫的複製路徑。
INCOMING_LAG NUMBER 從遠端資料庫將延遲複寫至本機資料庫。這是遠端資料庫產生活動訊號的時間,減去資訊永久插入本機資料庫表格的時間。
OUTGOING_HEARTBEAT_AGE NUMBER  
OUTGOING_PATH VARCHAR2 使用 Extract 和 Replicat 元件從本機資料庫至遠端資料庫的複製路徑。
OUTGOING_LAG NUMBER 從本機資料庫到遠端資料庫的複製延遲。這是本機資料庫產生活動訊號的時間,減去資訊永久插入遠端資料庫表格的時間。
REMOTE_EXTRACT_RESTART_CSN String 來源擷取重新啟動位置。
REMOTE_EXTRACT_RESTART_CSN_TIME TIMESTAMP 與來源 Extract 重做位置關聯的時戳。
REMOTE_DB_OLDEST_OPEN_TXN_AGE TIMESTAMP Extract 目前處理之來源資料庫中最舊未結交易的存在時間。此資料欄的計算方式如下:SYSTIMESTAMP - REMOTE_EXTRACT_RESTART_TIME
LOCAL_REPLICAT_LWM_CSN String 處理活動訊號時,本機 Replicat 的浮水印 CSN 低。
INCOMING_EXTRACT_LAG - -
INCOMING_ROUTINE_LAG - -
INCOMING_REPLICAT_READ_LAG - -
INCOMING_REPICAT_LAG - -
OUTGOING_EXTRACT_LAG - -
OUTGOING_ROUTINE_LAG - -
OUTGOING_REPLICAT_READ_LAG - -
OUTGOING_REPLICAT_LAG - -

更新活動訊號表

活動訊號內建值表格中的 HEARTBEAT_TIMESTAMP 資料欄必須由資料庫工作定期更新。預設的活動訊號間隔為 1 分鐘,且您可以使用命令行或「管理服務」Web 介面來指定或覆寫此間隔。

對於 Oracle AI Database,會自動建立資料庫工作。

對於 PostgreSQL,您可以設定自動任務來更新活動訊號表。請參閱設定自動化任務以更新 PostgreSQL 的活動訊號表。

對於所有其他支援的資料庫,您必須建立背景工作,以使用資料庫特定排程器功能來更新活動訊號時戳。

如需有關更新活動訊號表的詳細資訊,請參閱 [ADD HEARTBEATTABLE](/pls/topic/lookup?ctx=en/database/goldengate/core/26/coredoc&id=GCLIR-GUID-126E30A2-DC7A-4C93-93EC-0EB8BA7C13CB)、[ALTER HEARTBEATTABLE](/pls/topic/lookup?ctx=en/database/goldengate/core/26/coredoc&id=GCLIR-GUID-08BC29F9-8A5D-4AD9-B355-528A270EECC8)。

設定自動化任務以更新 PostgreSQL 的活動訊號表

Oracle GoldenGate for PostgreSQL Web 介面提供建立 cron 工作的功能,可定期更新活動訊號表。

下列是從 Web 介面建立此任務的步驟:

  1. 從左側導覽窗格中,展開工作,然後選取更新活動訊號工作選項。

    \

    用於更新 PostgreSQL 活動訊號的「自動化任務」選項

    \

  2. 按一下「更新活動訊號任務」頁面上的加號。隨即顯示建立新活動訊號任務對話方塊。

    建立新的「更新活動訊號任務」對話方塊,其中包含選擇資料庫憑證別名、網域的選項,以及指定執行活動訊號表自動更新的頻率間隔。

  3. 在對話方塊中指定下列值,然後按一下提交:

    • 名稱:指定工作的名稱。

    • 證明資料網域:從下拉式清單中選取網域名稱。

    • 證明資料別名:選取您要為其建立更新活動訊號作業之 PostgreSQL 資料庫執行處理的證明資料別名。

    • 頻率間隔:指定執行更新工作的頻率間隔。最小值為 60 (預設值),最大值可設為 7999。

若要修改或刪除「更新活動訊號」任務,您可以使用下列步驟:1。從「管理服務」介面的左側導覽窗格中,選取工作。

  1. 按一下更新活動訊號任務。隨即顯示現有的「更新活動訊號工作」清單。

  2. 從動作欄中,按一下鉛筆圖示。隨即顯示編輯更新活動訊號任務對話方塊。

  3. 您可以變更或修改證明資料網域、別名或頻率間隔,然後按一下送出。修改的「更新活動訊號任務」會列在「更新活動訊號任務」頁面上。

  4. 若要刪除工作,請從工作的「動作」資料欄按一下刪除圖示。按一下「確定」以確認刪除。

清除活動訊號歷史記錄表格

活動訊號歷史記錄表格會使用工作定期永久清除。預設間隔為 30 天,您可以使用命令行介面 (例如「管理從屬端」或「管理服務」Web 介面) 來指定或覆寫此間隔。

對於 Oracle AI Database,會自動建立資料庫工作。

對於所有其他支援的資料庫,您必須建立背景工作,以使用資料庫特定排程器功能來清除活動訊號歷史記錄表格。

最佳應用

Oracle 建議您:

使用自動活動訊號命令

您可以利用活動訊號表命令來控制 Oracle GoldenGate 自動活動訊號功能,如下所示。

指令 說明
ADD HEARTBEATTABLE 建立自動活動訊號功能所需的活動訊號表格,包括 LOGBSN 資料欄。
ALTER HEARTBEATTABLE 更改現有的活動訊號物件。
ALTER HEARTBEATTABLE UPGRADE 變更活動訊號表格,將 LOGBSN 資料欄新增至活動訊號表格。這是選擇性選項。
DELETE HEARTBEATTABLE 刪除現有的活動訊號物件。
DELETE HEARTBEATENTRY 刪除活動訊號表中的項目。
INFO HEARTBEATTABLE 顯示活動訊號表資訊。

報告延遲

您可以從「管理服務」存取延遲報表。您可以設定「延遲報表」任務來自動產生特定任期的延遲報表,並在延遲值超過指定的臨界值時發出警告。若要設定自動產生延遲報表的任務,請執行下列動作:1。從「管理服務」左側導覽窗格中,按一下工作,然後選取延遲報表。

  1. 「動作」資料欄包含可刪除、更改、重新整理及檢視延遲報表工作詳細資訊的所有選項。

  2. 選取所需的選項。

  3. 如果您選取「更改工作」選項,則會顯示編輯延遲報表的選項。這些選項包括:

    • 已啟用:持續處理延遲報表任務。

    • 檢查間隔 (分鐘):設定檢查延遲報表的時間間隔。

    • 報表:如果超過指定的臨界值,則自動產生延遲報表。您可以在「如果超過」方塊中指定臨界值。

    • 如果超過:指定一個臨界值,之後就會起始警告。值可以是秒、分鐘或小時。

    • 警告:如果延遲臨界值超過指定的臨界值,則允許產生警告。

    • 超過時:觸發警告之後的延遲臨界值。

  4. 按一下提交。

識別 Replicat 中的延遲

若要識別 Replicat 處理作業中的延遲及修改表格資料欄,請執行下列動作:

  1. 來源資料庫上連結至 Oracle GoldenGate 之所有表格的暫停活動。

  2. 啟動管理從屬端。

  3. 對 Replicat 群組執行此命令:

INFO REPLICAT *group*
  1. 在 Checkpoint Lag 行上,確認是否有任何 Replicat 延遲。如有需要,請繼續發出 INFO REPLICAT,直到延遲為零為止,這表示已經處理歷程檔中的所有資料。

  2. 停止 Replicat 群組。

STOP REPLICAT *group*
  1. 在目標資料庫上執行表格修改。

  2. 啟動 Replicat 處理作業。

START REPLICAT *group*
  1. 允許使用者活動繼續所有連結至 Oracle GoldenGate 的來源表格。