Oracle GoldenGate 部署的下游擷取

順流 Oracle GoldenGate 部署可讓您將重做日誌的處理卸載至稱為探勘資料庫的替代資料庫。探勘資料庫不需要包含來源資料庫的任何資料,但必須是相同或更高的資料庫版本。這表示作為來源資料庫的 Oracle 版本 12c 可以使用探勘資料庫版本 19c 或更新版本,讓 Oracle GoldenGate 能夠擷取來自 Oracle 12c 資料庫的變更,而不需要實際在 Oracle 12 資料庫上執行。

當 GoldenGate 無法連線來源資料庫時,也可以使用下游 Extract。

注意:來源和下游資料庫伺服器必須具有相同的位元組順序和處理器類型。例如,下游 Extract 將與來源 Linux (x86) 搭配運作至下游 Windows (x86) 伺服器,但如果來源伺服器為 HP-UX,但下游伺服器為 AIX,或來源伺服器為 HP PA-RISC,但下游伺服器為 HP-Itanium,則無法運作。

下游探勘資料庫接受來自來源資料庫的存檔日誌和線上重做日誌。這表示下游 Extract 可以有兩種模式:

在典型的下游部署中,對資料進行變更的來源資料庫會將其重做日誌或封存日誌傳送至探勘資料庫,供 Extract 處理作業探勘重做日誌及寫出歷程檔。當 Oracle GoldenGate 無法建立與來源資料庫的連線時,也可以使用順流 Extract。在下圖中, CDBNORTH 是來源資料庫, CDBSOUTH 則是目標資料庫。來源與目標之間有一個探勘資料庫,資料庫日誌探勘伺服器會將重做日誌從順流 Extract 傳輸至目標。

來源多雲端用戶容器資料庫與含有日誌探勘伺服器之順流資料庫之間的工作流程。

替代選項是使用階層式方法。如果有 Active Data Guard 待命資料庫,您可以讓待命資料庫將重做日誌運送到探勘資料庫,而不是從主要資料庫運送日誌。如果網路頻寬有限,且待命資料庫與探勘資料庫位於相同的區域或資料中心,則應使用此選項。

此方法使用以連鎖模式設定的 ADG,將重做日誌傳輸至順流探勘資料庫,然後由順流 Extract 參照,以減少來源資料庫的負荷,如下圖所示。

注意:Oracle 的 Extract 處理作業無法連線至「資料保全」待命資料庫或 Active Data Guard 待命資料庫來擷取資料。

連線至 Active Data Guard (ADG) 的下游資料庫

如需有關設定串聯下游環境的組態詳細資訊,請參閱啟用下游擷取以使用 ADG 。

設定來源和下游探勘資料庫

在本節中,您將瞭解資料庫端所需的參數和使用者管理組態。

來源和下游探勘資料庫中的 Oracle GoldenGate 使用者

Oracle GoldenGate 管理員使用者必須存在於每個資料庫中。在容器資料庫中,需有一般使用者,因為 Extract 將在 Root 容器中使用。

若要設定 Oracle AI Database 26ai 和更新版本的使用者,必須將 OGG_CAPTURE 和 OGG_APPLY 使用者角色指派給新使用者。如需詳細資訊,請參考授予 Oracle AI Database 26ai 和更高版本的使用者權限。

若要設定 Oracle Database 21c 和更低版本的使用者,則會使用 PL/SQL 套裝程式。下列範例顯示將 Oracle GoldenGate 與 Oracle Database 21c 和更低版本搭配使用時,建立使用者以及授予此使用者的相關權限:

CREATE USER c##ggadmin IDENTIFIED BY *password* CONTAINER = all;
ALTER USER c##ggadmin SET CONTAINER_DATA = all CONTAINER = current;
GRANT ALTER SESSION TO c##ggadmin CONTAINER = all;
GRANT connect, resource TO c##ggadmin CONTAINER = all;

BEGIN
  DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE
    ( grantee                 => 'C##GGADMIN'
    , privilege_type          => 'CAPTURE'
    , grant_select_privileges =>  TRUE
    , container               => 'ALL'
    );
END;
/

注意:只有順流資料庫才需要一般使用者 (c##ggadmin)。

設定資料庫連接

資料庫網路服務需求

來源和下游資料庫可以使用 Database Net Services 來同時存取。

在 Oracle GoldenGate 中,可以設定來源資料庫 (CDBNORTH_root) 和順流資料庫 (cdbDSC_root) 的連線。只有在進行 Extract 註冊時,才需要來源資料庫連線來儲存字典資料。您可以在程式實際執行時,使用 FETCHUSERIDALIAS 參數連線至順流探勘資料庫 (cdbDSC_root),以進行擷取。使用 ADG 重新導向時,您可以將 Extract 註冊重新導向至 ADG 的來源。若要設定連線,請確定您具有這些使用者的資料庫證明資料,以便從 Oracle GoldenGate 部署建立證明資料。

您可以使用 SQL*Plus (Oracle GoldenGate 產品來源本位目錄的一部分) 來測試「網路服務」。

來源資料庫先決條件

若要設定資料庫連線,請確定來源資料庫執行處理已完成下列設定值:

下游探勘資料庫先決條件

若要設定資料庫連線,請確定已在來源和順流資料庫執行處理執行下列設定值:

設定下游資料庫的參數

您可以在此段落視需要設定即時探勘模式和存檔探勘模式的參數。

即時採擷模式下游擷取的參數設定值

若為「即時探勘」模式的順流 Extract,主要先決條件為順流資料庫必須正確設定待命重做日誌檔。

「下游即時探勘」在「擷取參數」檔案中啟用了明確的設定。LAD 的配置與此模式無關。如果尚未設定 TRANLOGOPTIONS INTEGRATEDPARAMS (REAL_TIME_MINE Y) 參數,您必須將它設為啟用順流 Extract 以進行即時探勘模式:

TRANLOGOPTIONS INTEGRATEDPARAMS (DOWNSTREAM_REAL_TIME_MINE Y)

注意:指定來源資料庫的順流資料庫上只能有一個即時 Extract。其他擷取必須為非即時。這是重做傳輸的限制。

在下游探勘資料庫執行的下列命令會顯示使用 FRA 設定的本機備份:

ALTER SYSTEM
    SET log_archive_config='DG_CONFIG=(CDBNORTH, cdbDSC)';
ALTER SYSTEM set FAL_SERVER = 'CDBNORTH_root';

待命重做日誌檔必須存在於順流資料庫中。如果來源有 n 個線上重做日誌檔,則相同大小的目標應該要有 n+1 個待命重做日誌檔。

在順流探勘資料庫上建立待命重做日誌檔

下列步驟簡要說明新增待命重做日誌檔至順流探勘資料庫的程序。下列摘要說明建立待命重做日誌的規則:

新增待命重做日誌檔所需的特定步驟和 SQL 敘述句,視您的環境而定。如需有關新增待命重做日誌檔至資料庫的詳細指示,請參閱建立實體待命資料庫。

注意:如果將有多個來源資料庫傳送重做至單一順流探勘資料庫,則只有其中一個來源可以將重做傳送至探勘資料庫的待命重做日誌。從此來源資料庫探勘重做的 Extract 處理作業可以即時模式執行。所有其他來源資料庫必須僅傳送其封存日誌至下游探勘資料庫,且讀取此資料的擷取必須設定為以「封存 - 日誌」模式執行。

建立待命重做日誌檔

  1. 在 SQL*Plus 中,以管理使用者身分連線至來源資料庫。

  2. 判斷來源日誌檔的大小。記下結果。

    SELECT BYTES FROM V$LOG;
  3. 判斷來源資料庫上設定的線上日誌檔群組數目。記下結果。

    SELECT COUNT(GROUP#) FROM V$LOG;
  4. 以管理使用者身分連線到下游探勘資料庫。

  5. 將待命日誌檔群組新增至探勘資料庫。待命日誌檔大小至少必須是來源日誌檔大小的大小。待命日誌檔群組數目至少必須要有一個以上的來源線上日誌檔群組數目。這適用於 RAC 安裝中的每個執行處理 (繫線)。因此,如果您在來源資料庫有 n 個繫線,每個繫線都有 m 重做日誌群組,您應該在順流探勘資料庫設定 n* (m+1) 個重做日誌群組。

    下列範例顯示三個待命日誌群組。

    ALTER DATABASE ADD STANDBY LOGFILE GROUP 3
    ('/oracle/dbs/slog3a.rdo', '/oracle/dbs/slog3b.rdo') SIZE 500M;
    ALTER DATABASE ADD STANDBY LOGFILE GROUP 4
    ('/oracle/dbs/slog4.rdo', '/oracle/dbs/slog4b.rdo') SIZE 500M;
    ALTER DATABASE ADD STANDBY LOGFILE GROUP 5
    ('/oracle/dbs/slog5.rdo', '/oracle/dbs/slog5b.rdo') SIZE 500M;
  6. 確認已順利新增待命日誌檔群組。

    SELECT GROUP#, THREAD#, SEQUENCE#, ARCHIVED, STATUS
    FROM V$STANDBY_LOG;

    輸出應該與下列類似:

    GROUP#     THREAD#    SEQUENCE#  ARC STATUS
    
    ---------- ---------- ---------- --- ----------
             3          0          0 YES UNASSIGNED
             4          0          0 YES UNASSIGNED
             5          0          0 YES UNASSIGNED
  7. 確定來源資料庫的日誌檔出現在您設定之本機 LOG_ARCHIVE_DEST_n 的 LOCATION 屬性中指定的位置。您可能需要切換來源資料庫的日誌檔,才能查看目錄中的檔案。

設定順流探勘資料庫將待命重做日誌檔存檔至本機

此程序會設定下游探勘資料庫,以存檔從來源資料庫的線上重做日誌接收重做資料的待命重做日誌。請記住,外部存檔日誌不應存檔在下游探勘資料庫的復原區域中。

將待命重做日誌存檔至本機:

  1. 在順流探勘資料庫中,設定 LOG_ARCHIVE_DEST_n 初始化參數中的第二個存檔日誌目的地,如下列範例所示。

    ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='LOCATION=/home/arc_dest/srl_dbms1
    VALID_FOR=(STANDBY_LOGFILE,PRIMARY_ROLE)'

    Oracle 建議將外部存檔日誌 (來自遠端來源資料庫的日誌) 與本機探勘資料庫日誌檔分開保存。您不能使用順流探勘資料庫的復原區域來暫存外部存檔日誌。

  2. 啟用您在上一個步驟中設定的 LOG_ARCHIVE_DEST_2 參數,如下列範例所示。

    ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE

存檔探勘模式下游擷取的參數設定值

若要在「存檔探勘」模式或「即時探勘」模式設定順流 Extract,您必須設定重做傳輸。在「封存 - 登入」模式中設定下游 Extract 時包含下列參數:

注意:LOG_ARCHIVE_DEST_2 與「即時探勘」的使用無關。

來源資料庫的本機備份目的地和重做傳輸服務都需要「存檔日誌目的地 (LAD)」參數設定值。

使用下列命令,設定本機備份目的地的 LAD 參數:

ALTER SYSTEM SET db_recovery_file_dest = '/u01/app/oracle/fast_recovery_area';
ALTER SYSTEM SET db_recovery_file_dest_size = 100G;
ALTER SYSTEM SET log_archive_dest_1 = 'LOCATION=USE_DB_RECOVERY_FILE_DEST';

使用下列命令,在來源資料庫上設定重做傳輸服務的 LAD 參數選項:

ALTER SYSTEM SET log_archive_config = 'DG_CONFIG = (CDBNORTH, cdbDSC)';
ALTER SYSTEM
      SET log_archive_dest_2='SERVICE=cdbDSC_root
                              ASYNC
                              NOREGISTER
                              VALID_FOR=(ONLINE_LOGFILES, PRIMARY_ROLE)
                              DB_UNIQUE_NAME=cdbDSC';

若要進一步瞭解 LOG_ARCHIVE_DEST 參數及其屬性,請參閱資料庫參照指南中的 LOG_ARCHIVE_DEST_n 。

設定 Oracle GoldenGate Extract 以進行下游部署

在本節中,您將瞭解 Oracle GoldenGate 設定來源和下游資料庫連線所需的參數,以及設定下游資料庫的 Extract。

設定 Oracle GoldenGate for Downstream Database

下游 Extract 參數檔必須包括下列參數,以設定下游部署:

以下是 Extract 參數檔的範例,包括下列參數:

EXTRACT EXTDSC
USERIDALIAS cgg_CDBNORTH
TRANLOGOPTIONS MININGUSERALIAS cgg_cdbDSC
TRANLOGOPTIONS INTEGRATEDPARAMS (DOWNSTREAM_REAL_TIME_MINE Y)
FETCHUSERIDALIAS cgg_CDBNORTH DOMAIN OracleGoldenGate

EXTTRAIL Downstream/ea
SOURCECATALOG CDBNORTH_PDB1
DDL INCLUDE MAPPED
TABLE HR.*;

請依照指定的步驟設定順流 Extract 的 Oracle GoldenGate 部署:

  1. 為來源資料庫新增認證:

    ALTER CREDENTIALSTORE ADD USER c##ggadmin@CDBNORTH_root ALIAS cgg_CDBNORTH DOMAIN OracleGoldenGate PASSWORD password

  2. 新增順流資料庫的證明資料:

    ALTER CREDENTIALSTORE ADD USER c##ggadmin@cdbDSC_root ALIAS cgg_cdbDSC DOMAIN OracleGoldenGate PASSWORD *password*
  3. 使用 DBLOGIN 從 Oracle GoldenGate 連線至來源資料庫和順流資料庫:

    DBLOGIN USERIDALIAS cgg_CDBNORTH
    MININGDBLOGIN USERIDALIAS cgg_cdbDSC

    在此範例中,cgg_CDBNORTH 是來源資料庫 CDBNORTH 的證明資料別名,而 cgg_cdbDSC 是探勘資料庫的證明資料別名。

  4. 新增並註冊 Extract、編輯參數檔以包括先前提供的 Extract 參數、新增 Extract 歷程檔名稱和位置、啟動 Extract:

    ADD EXTRACT extdsc, INTEGRATED TRANLOG, BEGIN NOW
    REGISTER EXTRACT extdsc, DATABASE CONTAINER (CDBNORTH_PDB01)
    
    ADD EXTTRAIL Downstream/ea, EXTRACT extdsc
    START extdsc

使用作用中資料保全設定串聯下游擷取

如果無法連線至來源資料庫,可以將 GoldenGate 設定為使用 Active Data Guard (ADG) 待命資料庫。待命資料庫可用於唯讀連線,以執行描述資料查詢和擷取。在本節中,您將瞭解如何使用 ADG 設定順流 Extract,而不建立與來源資料庫的連線。

啟用下游擷取以使用 ADG

在串聯的下游擷取環境中,下游資料庫不會直接連線至來源資料庫。它使用 Active Data Guard (ADG) 來擷取和描述資料查詢。

Extract 必須使用 sourceless 選項啟動,使其不會連線至來源資料庫,而是在需要擷取任何非原生資料類型時,使用 FETCHUSERID 或 FETCHUSERIDALIAS 連線至 ADG。例如,ADG 資料庫會處理 FETCH 作業,因為此執行處理是以唯讀模式開啟。其他無法在 ADG 執行處理上處理的作業 (例如建立說明組建),會從 ADG 重新導向至來源資料庫。

註冊順流 Extract 時,Oracle GoldenGate 會連線至 ADG 作為來源資料庫,而非重做產生的資料庫。下列命令和參數支援 ADG 重新導向:

Oracle Database 21c 和更新版本提供「ADG 重新導向」。它也支援萬用字元註冊。下列範例顯示下游 Extract 的 Extract 參數檔 (使用 ADG 時):

EXTRACT EXTDSC
NOUSERID
TRANLOGOPTIONS MININGUSERALIAS cgg_cdbDSC_src DOMAIN OracleGoldenGate
TRANLOGOPTIONS INTEGRATEDPARAMS (DOWNSTREAM_REAL_TIME_MINE Y) FETCHUSERIDALIAS cgg_cdbADG_src DOMAIN OracleGoldenGate

EXTTRAIL cascade/ea
SOURCECATALOG CDBNORTH_PDB01
DDL INCLUDE MAPPED
TABLE HR.*;

以下是讓下游 Extract 使用 ADG 待命資料庫的步驟:

  1. 在 ADG 待命資料庫新增額外的 LOG_ARCHIVE_DESTINATION_N (LAD),如下列範例所示:

    ALTER SYSTEM SET LOG_ARCHIVE_DEST_3='service=mining_db_service_name ASYNC NOREGISTER VALID_FOR(STANDBY_LOGFILES,STANDBY_ROLES) DB_UNIQUE_NAME=3rd_db_unique_name' scope=both

    此步驟會傳輸並產生 ADG 待命資料庫的 standby_logfiles。

  2. 設定 ADG 待命資料庫上的 LOG_ARCHIVE_CONFIG,將日誌傳送至探勘資料庫,如下列範例所示:

    ALTER SYSTEM SET LOG_ARCHIVE_CONFIG = 'DG_CONFIG' = (CDBNORTH, cdbADG_src, cdbDSC)';

    DB_CONFIG 是第一個、第二個及第三個資料庫的資料庫唯一名稱。

  3. 在探勘資料庫上,設定將內送 standby_logfiles 儲存在探勘資料庫上的位置,如下列範例所示:

    ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='location= /home/arc_dest/dstrm VALID_FOR=(STANDBY_LOGFILE,ALL_ROLES)' scope=both

    其中 /home/arc_dest/dstrm 是外部存檔日誌的位置。請勿使用 FRA 來儲存外部歸檔記錄。

  4. 在探勘資料庫上執行 LOG_ARCHIVE_CONFIG,讓 Extract 處理作業能夠在探勘資料庫上讀取它們,如下列範例所示:

    ALTER SYSTEM SET LOG_ARCHIVE_CONFIG ='DG_CONFIG' scope=both

    DB_CONFIG 是第一個、第二個和第三個資料庫的資料庫唯一名稱。

  5. 對於順流 Extract,您必須確定資料庫連線已適當設定。註冊 Extract 時,請確定已針對唯讀活動開啟的 ADG 待命資料庫進行 DBLOGIN 連線。

  6. 若要新增 Extract 並進行註冊,請使用下列命令:

    DBLOGIN USERID ggadmin@cdbADG_src, PASSWORD ggadmin
    MININGDBLOGIN USERID ggadmin@cgg_cdbDSC, password ggadmin

    cdbADG_src 不是主要 ADG。

cgg_cdbDSC 是探勘資料庫。

  1. 現在,註冊使用 NOUSERID 參數的 Extract:

    ADD EXTRACT exte, INTEGRATED TRANLOG, BEGIN NOW REGISTER EXTRACT exte DATABASE
  2. 在 Extract 註冊之後,您可以使用此 Extract 來探勘資料並正常啟動 Extract。