共用方式為


使用 Oracle GoldenGate 將 Oracle CDC 數據串流至 Fabric Eventstream Kafka 端點

在本教學課程中,您將學習如何使用 Oracle GoldenGate (OGG) 擷取並複寫 Oracle 資料庫的 CDC(變更數據擷取)數據,通過 Eventstream 提供的自訂 Kafka 端點,將其複寫至 Microsoft Fabric 中的 Fabric Real-Time Intelligence。 此設定可讓您即時處理 Oracle CDC 數據,並讓它傳送至 Fabric 內的各種目的地,例如 Eventhouse、Reflex、衍生數據流或自定義端點目的地,以進行進一步分析。

在本教學課程中,您將:

  • 建立 Oracle VM 和 Oracle 資料庫。
  • 在 Oracle VM 上安裝 Oracle GoldenGate (OGG) 核心。
  • 設定適用於 OGG 的 Oracle 資料庫和 OGG 擷取以擷取 CDC 數據。
  • 在 Oracle VM 上安裝 Oracle GoldenGate (OGG) 巨量數據。
  • 設定 OGG 巨量數據,將 CDC 數據復寫至 Eventstream 的 Kafka 端點。
  • 驗證從 Oracle 到 Eventstream 的整個端對端流程。

先決條件

  • 取得具有事件串流所在 參與者 或更高許可權的工作區存取權。
  • 偏好的可支援環境:Windows、Linux 或 Azure Shell
  • 熟悉 unix 編輯器,例如 vivim,以及對 X Server 的基本瞭解。

建立 Oracle VM 和資料庫

本節提供使用 Azure CLI 命令來建立 Oracle 虛擬機,並在其中設定資料庫的指示。

建立 Oracle 虛擬機

  1. 開啟您慣用的終端機,然後使用 az login 命令登入您的 Azure 訂用帳戶。 然後遵循螢幕上的指示:

    $ az login
    
  2. 檢查您所使用的訂用帳戶名稱和識別碼,以確保其正確:

    $ az account show
    
  3. 建立資源群組,以將本教學課程的所有 Azure 資源分組:

    $ az group create --name esoggcdcrg --location eastus2
    
  4. 建立本教學課程所需的網路資源:

    1. 在本教學課程中建立用於虛擬機的虛擬網路(虛擬網路):
      $ az network vnet create --name oggVnet --resource-group esoggcdcrg --address-prefixes "10.0.0.0/16" --subnet-name oggSubnet1 --subnet-prefixes "10.0.0.0/24"
      
    2. 建立網路安全組 (NSG):
      $ az network nsg create --resource-group esoggcdcrg --name oggVnetNSG
      
    3. 建立 NSG 規則以允許虛擬網路內的網路流量:
      $ az network nsg rule create --resource-group esoggcdcrg --nsg-name oggVnetNSG --name oggAllowVnet --protocol '*' --direction inbound --priority 3400 --source-address-prefix 'VirtualNetwork' --source-port-range '*' --destination-address-prefix 'VirtualNetwork' --destination-port-range '*' --access allow
      
    4. 建立 NSG 規則以允許 RDP 連線連線到 Windows VM。 它可用來從本機 Windows 電腦從遠端存取 Windows VM:
      $ az network nsg rule create --resource-group esoggcdcrg --nsg-name oggAllowRDP --protocol '*' --direction inbound --priority 3410 --source-address-prefix '*' --source-port-range '*' --destination-address-prefix '*' --destination-port-range '3389' --access allow
      
    5. 建立 NSG 規則以拒絕所有輸入連線:
      $ az network nsg rule create --resource-group esoggcdcrg --nsg-name oggDenyAllInBound --protocol '*' --direction inbound --priority 3500 --source-address-prefix '*' --source-port-range '*' --destination-address-prefix '*' --destination-port-range '*' --access deny
      
    6. 將 NSG 指派給我們裝載伺服器的子網:
      $ az network vnet subnet update --resource-group esoggcdcrg --vnet-name oggVNet --name oggSubnet1 --network-security-group oggVnetNSG
      
  5. 建立 Oracle 虛擬機:

    $ az vm create --resource-group esoggcdcrg --name oggVM --image Oracle:oracle-database:oracle_db_21:21.0.0 --size Standard_D2s_v3 --generate-ssh-keys --admin-username azureuser --vnet-name oggVnet --subnet oggSubnet1 --public-ip-address "" --nsg "" --zone 1
    

建立及設定 X Server VM

若要建立 Oracle 資料庫,它需要使用 SSH 登入在上一個步驟中建立的虛擬機。 由於先前定義的 NSG 規則拒絕所有輸入連線,但允許虛擬網路內的連線和 RDP 3389 埠的連線,因此會建立一個 Windows 虛擬機以連接到 Oracle 虛擬機。 此 Windows 虛擬機也可用來裝載 X 伺服器,以在稍後在 Oracle VM 上安裝 GoldenGate 核心應用程式時接收圖形化安裝介面。

  1. 取代您的密碼並執行下列命令,以建立我們部署 X Server 的 Windows 工作站 VM。

    $ az vm create --resource-group esoggcdcrg --name oggXServer --image MicrosoftWindowsDesktop:windows-11:win11-24h2-pro:26100.2605.241207 --size Standard_D2s_v3 --vnet-name oggVnet --subnet oggSubnet1 --public-ip-sku Standard --nsg "" --data-disk-delete-option Delete --os-disk-delete-option Delete --nic-delete-option Delete --security-type Standard --admin-username azureuser --admin-password <YOUR_OWN_PASSWORD>
    
  2. 建立之後,請移至 Azure 入口網站,從 oggXServer 資源下載 RDP 檔案,讓您可以使用它從遠端訪問此 Windows 計算機。 開啟 RDP 檔案,並使用您在建立 Windows VM 時指定的密碼 (oggXServer)。

    顯示如何建立 Windows VM 的螢幕快照。

  3. 在 Windows VM 上安裝 WSL (oggXServer),讓 SSH 可用來連線到 Oracle VM (oggVM)。 您也可以使用其他 SSH 工具,例如 putty 來連線。

    PS C:\Users\azureuser> wsl --install -d Ubuntu
    

    顯示如何在 Windows VM 上安裝 WSL 的螢幕快照。

  4. 您必須從 oggVM 下載 ssh 登入 oggXServer 的私鑰。 下載金鑰之後,請使用此金鑰(將此金鑰移至您的 WSL 首頁 .ssh 目錄)來登入:

    $ ssh -i ~/.ssh/id_rsa.pem azureuser@10.0.0.4
    

    顯示如何更新 ssh 金鑰的螢幕快照。

  5. 使用 SSH 將 Oracle VM 與其私人 IP 位址連線。

    顯示如何取得私人IP位址的螢幕快照。

建立 Oracle 資料庫

現在,您應該能夠使用 SSH 登入 X 伺服器 Windows VM (oggXServer) 上的 Oracle VM。 請遵循下列步驟來建立 Oracle 資料庫。

  1. 使用 SSH 登入 Oracle VM (oggVM)。

    $ chmod 400 ~/.ssh/oggVM.pem
    $ ssh -i ~/.ssh/oggVM.pem azureuser@10.0.0.4
    
  2. 將使用者變更為 oracle

    $ sudo su - oracle
    
  3. 使用下列命令建立資料庫。 此命令可能需要 30-40 分鐘才能完成。

    $ dbca -silent -createDatabase -templateName General_Purpose.dbc -gdbname cdb1 -sid cdb1 -responseFile NO_VALUE -characterSet AL32UTF8 -sysPassword OraPasswd1 -systemPassword OraPasswd1 -createAsContainerDatabase true -numberOfPDBs 1 -pdbName pdb1 -pdbAdminPassword OraPasswd1 -databaseType MULTIPURPOSE -automaticMemoryManagement false -storageType FS -datafileDestination "/u01/app/oracle/oradata/" -ignorePreReqs
    
  4. 設定ORACLE_SID和LD_LIBRARY_PATH變數

    $ export ORACLE_SID=cdb1
    $ export LD_LIBRARY_PATH=$ORACLE_HOME/lib
    
  5. 將ORACLE_SID和LD_LIBRARY_PATH新增至 ~/.bashrc 檔案,以便儲存這些設定以供日後登入使用。 ORACLE_HOME變數應該已在 .bashrc 檔案中設定

    $ sed -i '$ a export ORACLE_SID=cdb1' .bashrc
    $ sed -i '$ a export LD_LIBRARY_PATH=$ORACLE_HOME/lib' .bashrc
    
  6. 啟動 Oracle 接聽程式

    $ lsnrctl start
    

現在已建立 Oracle 資料庫。 若要啟用 Oracle CDC for GoldenGate,必須啟用封存記錄。 請遵循下列步驟來啟用它。

  1. 連接到 sqlplus:

    $ sqlplus / as sysdba
    
  2. 使用下列命令啟用封存記錄。 逐一執行下列命令:

    SQL> SELECT log_mode FROM v$database;
    SQL> SHUTDOWN IMMEDIATE;
    SQL> STARTUP MOUNT;
    SQL> ALTER DATABASE ARCHIVELOG;
    SQL> ALTER DATABASE OPEN;
    
  3. 啟用強制記錄和 GoldenGate 複寫,並確定至少有一個記錄檔存在。 逐一執行下列命令:

    SQL> ALTER DATABASE FORCE LOGGING;
    SQL> ALTER SYSTEM SWITCH LOGFILE;
    SQL> ALTER SYSTEM set enable_goldengate_replication=true;
    SQL> ALTER PLUGGABLE DATABASE PDB1 OPEN;
    SQL> ALTER SESSION SET CONTAINER=CDB$ROOT;
    SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
    SQL> ALTER SESSION SET CONTAINER=PDB1;
    SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
    SQL> EXIT;
    

安裝 Oracle GoldenGate Core

在本節中,您將瞭解如何下載 Oracle GoldenGate Core 應用程式,並傳輸至 Oracle VM (oggVM),並安裝它。 這些步驟都是在 X 伺服器 Windows VM 上執行(oggXServer)。

將 Oracle GoldenGate Core 應用程式下載並傳輸至 VM

  1. 開啟 X 伺服器視窗虛擬機器(oggXServer)的 RDP,然後從該 windows 虛擬機器(oggXServer)上的 Oracle Golden Gate 中下載 Oracle GoldenGate 21.3.0.0.0 for Oracle on Linux x86-64

  2. 將下載的 zip 檔案通過安全複製協定(SCP)從 X 伺服器 Windows VM(oggXServer)傳輸至 Oracle VM(oggVM)。

    $ scp -i ~/.ssh/oggVM.pem 213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip azureuser@10.0.0.4:~/
    
  3. 若要使用 GUI 介面安裝 Oracle GoldenGate 核心應用程式,需要 Xming 應用程式才能安裝在 oggXServer 上。 下載 Xming X Server for Windows 至 ggXServer,並使用所有預設選項安裝。

    • 確定您未在安裝結束時選取 [啟動]
    • 從 [開始] 選單啟動 「XLAUNCH」 應用程式。
  4. 從 [開始] 功能表啟動 XLAUNCH 應用程式,以完成設定。 請務必選取 沒有存取控制

在 oggVM 上安裝 Oracle GoldenGate Core 應用程式

本節中的所有作業都會在 Oracle VM (oggVM) 上執行。 因此,使用 SSH 登入此 VM,並遵循下列步驟來安裝它。

  1. 使用 SSH 連線到 oggVM。

    $ ssh -i ~/.ssh/oggVM.pem azureuser@10.0.0.4
    
  2. 將上傳的 zip 檔案移至 oracle home dir。

    $ sudo su -
    $ mv /home/azureuser/213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip /home/oracle/
    
  3. 解壓縮檔案(如果尚未安裝,請安裝解壓縮公用程式)。

    $ yum install unzip
    $ cd /home/oracle/
    $ unzip 213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip
    
  4. 變更權限。

    $ chown -R oracle:oinstall fbo_ggs_Linux_x64_Oracle_shiphome/
    $ exit
    
  5. 現在,讓我們啟動 Oracle GoldenGate Core 安裝。 'DISPLAY=10.0.0.5:0.0' 中的私人 IP 是 oggXServer 的私人 IP。

    $ sudo su - oracle
    $ export DISPLAY=10.0.0.5:0.0
    $ cd fbo_ggs_Linux_x64_Oracle_shiphome/Disk1
    $ ./runInstaller
    

    您應該會看到此安裝程式開啟 Xming 伺服器。

  6. 選取「Oracle GoldenGate for Oracle Database 21c」。 然後選取 [下一步] [下一步] 繼續。

  7. 選擇 [軟體安裝路徑] 作為 [/u01/app/oggcore],確定已選取 [開始管理員] 方塊,然後選取 [下一步] 繼續。

  8. 在摘要步驟中選取 [安裝]。

  9. 在最後一個步驟中選取 [關閉]。

現在,Oracle GoldenGate 核心應用程式已成功安裝在 Oracle VM (oggVM) 中。

設定適用於 OGG 和 OGG 擷取的 Oracle 資料庫以擷取 CDC 數據

安裝 Oracle GoldenGate 核心應用程式之後,即可設定為擷取 Oracle CDC 數據。 請遵循下列步驟來設定擷取。 本節中的所有作業仍會在具有 SSH 連線的 Oracle VM (oggVM) 上執行。

準備要擷取的資料庫

  1. 建立或更新 tnsnames.ora 檔案。

    $ sudo su - oracle
    $ cd $ORACLE_HOME/network/admin
    $ vi tnsnames.ora
    

    當vi編輯器開啟時,您必須按 i 切換至插入模式,然後複製並貼上檔案內容,然後按 Esc 鍵,:wq 儲存盤案。

    cdb1=
     (DESCRIPTION=
       (ADDRESS=
         (PROTOCOL=TCP)
         (HOST=localhost)
         (PORT=1521)
       )
       (CONNECT_DATA=
         (SERVER=dedicated)
         (SERVICE_NAME=cdb1)
       )
     )
    
    pdb1=
     (DESCRIPTION=
       (ADDRESS=
         (PROTOCOL=TCP)
         (HOST=localhost)
         (PORT=1521)
       )
       (CONNECT_DATA=
         (SERVER=dedicated)
         (SERVICE_NAME=pdb1)
       )
     )
    
  2. 建立 Golden Gate 擁有者和用戶帳戶。

    $ sqlplus / as sysdba
    
    SQL> CREATE USER C##GGADMIN identified by ggadmin;
    SQL> EXEC dbms_goldengate_auth.grant_admin_privilege('C##GGADMIN',container=>'ALL');
    SQL> GRANT DBA to C##GGADMIN container=all;
    SQL> connect C##GGADMIN/ggadmin
    SQL> ALTER SESSION SET CONTAINER=PDB1;
    SQL> EXIT;
    
  3. 建立 Golden Gate ggtest 用戶帳戶。

    $ cd /u01/app/oggcore
    $ sqlplus system/OraPasswd1@pdb1
    
    SQL> CREATE USER ggtest identified by ggtest DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP;
    SQL> GRANT connect, resource, dba TO ggtest;
    SQL> ALTER USER ggtest QUOTA 100M on USERS;
    SQL> connect ggtest/ggtest@pdb1
    SQL> @demo_ora_create
    SQL> @demo_ora_insert
    SQL> select * from TCUSTMER;
    SQL> select * from TCUSTORD;
    SQL> EXIT;
    

您應該會看到建立兩個數據表(TCUSTMER 和 TCUSTORD),並在兩個數據表中插入兩筆記錄。

設定並啟用擷取

  1. 設定 Oracle GoldenGate Extract 的擷取參數檔案。

    $ sudo su – oracle
    
  2. 確定 $TNS_ADMIN 是在 ~/.bashrc中設定。 如果沒有,請將它設定為:~/.bashrc中的 export TNS_ADMIN=$ORACLE_HOME/network/admin。 然後執行命令 source ~/.bashrc 使其生效。

    $ cd /u01/app/oggcore
    $ ./ggsci
    GGSCI> DBLOGIN USERID ggtest@pdb1
    
    Successfully logged into database  pdb1
    
    GGSCI> ADD SCHEMATRANDATA pdb1.ggtest
    
    2025-01-04 15:57:42  INFO    OGG-01788  SCHEMATRANDATA has been added on schema "ggtest".
    2025-01-04 15:57:42  INFO    OGG-01976  SCHEMATRANDATA for scheduling columns has been added on schema "ggtest".
    2025-01-04 15:57:42  INFO    OGG-10154  Schema level PREPARECSN set to mode NOWAIT on schema "ggtest".
    
    GGSCI> EDIT PARAMS EXT1
    
    EXTRACT EXT1
    USERID C##GGADMIN@cdb1, PASSWORD ggadmin
    RMTHOST 10.0.0.4, MGRPORT 7809
    RMTTRAIL ./dirdat/rt
    DDL INCLUDE MAPPED
    DDLOPTIONS REPORT
    LOGALLSUPCOLS
    UPDATERECORDFORMAT COMPACT
    TABLE pdb1.ggtest.TCUSTMER;
    TABLE pdb1.ggtest.TCUSTORD;
    
  3. 登記文件提取—綜合摘錄。

    GGSCI> dblogin userid C##GGADMIN@cdb1
    
    Successfully logged into database CDB$ROOT.
    
    GGSCI> REGISTER EXTRACT EXT1 DATABASE CONTAINER(pdb1)
    
    2025-01-04 16:04:58  INFO    OGG-02003  Extract group EXT1 successfully registered with database at SCN 2147164.
    
    GGSCI> exit
    
  4. 設定擷取檢查點並啟動即時擷取。

    GGSCI> ADD EXTRACT EXT1, INTEGRATED TRANLOG, BEGIN NOW
    GGSCI> ADD RMTTRAIL ./dirdat/rt, EXTRACT EXT1, MEGABYTES 10
    
    RMTTRAIL added.
    
    GGSCI> START EXTRACT EXT1
    
    Sending START request to MANAGER ...
    EXTRACT EXT1 starting
    
    GGSCI> INFO ALL
    
    Program     Status      Group       Lag at Chkpt  Time Since Chkpt
    MANAGER     RUNNING
    EXTRACT     RUNNING     EXTORA      00:00:11      00:00:04
    
    GGSCI > EXIT
    
  5. 已設定提取的煙霧測試。

    1. 使用測試帳戶登入 DB,並將記錄插入資料表:

      $ sqlplus ggtest
      
      SQL> select * from TCUSTORD;
      SQL> INSERT INTO TCUSTORD VALUES ('OLLJ',TO_DATE('11-JAN-25'),'CYCLE',400,16000,1,102);
      SQL> COMMIT;
      SQL> EXIT;
      
    2. 檢查由金門選擇的交易(請注意總插入值):

      $ cd /u01/app/oggcore
      $ ./ggsci
      GGSCI> STATS EXT1
      
      Sending STATS request to Extract group EXT1 ...
      Start of statistics at 2025-01-04 16:12:16.
      DDL replication statistics (for all trails):
      
      *** Total statistics since extract started     ***
          Operations                                         0.00
          Mapped operations                                  0.00
          Unmapped operations                                0.00
          Other operations                                   0.00
          Excluded operations                                0.00
      
      Output to ./dirdat/rt:
      Extracting from PDB1.GGTEST.TCUSTORD to PDB1.GGTEST.TCUSTORD:
      *** Total statistics since 2025-01-04 16:11:02 ***
          Total inserts                              1.00
          Total updates                              0.00
          Total deletes                              0.00
          Total upserts                              0.00
          Total discards                             0.00
          Total operations                           1.00
      
      *** Daily statistics since 2025-01-04 16:11:02 ***
          Total inserts                              1.00
          Total updates                              0.00
          Total deletes                              0.00
          Total upserts                              0.00
          Total discards                             0.00
          Total operations                           1.00
      
      *** Hourly statistics since 2025-01-04 16:11:02 ***
          Total inserts                              1.00
          Total updates                              0.00
          Total deletes                              0.00
          Total upserts                              0.00
          Total discards                             0.00
          Total operations                           1.00
      
      *** Latest statistics since 2025-01-04 16:11:02 ***
          Total inserts                              1.00
          Total updates                              0.00
          Total deletes                              0.00
          Total upserts                              0.00
          Total discards                             0.00
          Total operations                           1.00
      End of statistics.
      

安裝 Oracle GoldenGate 巨量數據

Oracle GoldenGate Big Data會將擷取的數據複製到所需的處理程序(目的地)。 在本教學課程中,處理程式是 Kafka 主題。 在本節中,系統會引導您下載所需的軟體套件,並加以安裝。

下載必要的軟體套件

Windows VM (oggXServer) 仍然用來下載這些軟體套件,並將其傳輸至 Oracle VM (oggVM)。

  1. Oracle GoldenGate 下載適用於巨量數據的 OGG(適用於 Linux x86-64 的 Oracle GoldenGate for Big Data 21.4.0.0.0)

  2. 下載 Kafka 套件(kafka_2.13-3.9.0.tgz)

  3. 下載 JAVA SDK(jdk-8u202-linux-x64.tar.gz

  4. 使用 WSL 中的 SCP 命令將它們傳輸到 Oracle VM:

    $ scp -i ~/.ssh/oggVM.pem kafka_2.13-3.9.0.tgz jdk-8u202-linux-x64.tar.gz 214000_ggs_Linux_x64_BigData_64bit.zip azureuser@10.0.0.4:~/
    

安裝三個軟體套件

若要安裝三個軟體套件,請將它們擷取至個別資料夾,並設定對應的環境變數。 本節中的所有作業都會在 Oracle VM (oggVM) 上執行。 因此,請使用 SSH 登入此 VM,並遵循下列步驟來安裝它們。

  1. 使用 SSH 連線到 oggVM。

    $ ssh -i ~/.ssh/oggVM.pem azureuser@10.0.0.4
    
  2. 將這些套件移至 oracle home dir。

    $ sudo su –
    $ mv /home/azureuser/214000_ggs_Linux_x64_BigData_64bit.zip /home/azureuser/kafka_2.13-3.9.0.tgz /home/azureuser/jdk-8u202-linux-x64.tar.gz /home/oracle/
    $ exit
    
  3. 變更為 oracle 使用者,然後移至主目錄以準備個別資料夾。

    $ sudo su – oracle
    $ mkdir kafka java oggbd
    $ mv 214000_ggs_Linux_x64_BigData_64bit.zip oggbd/
    $ mv jdk-8u202-linux-x64.tar.gz java/
    $ mv kafka_2.13-3.9.0.tgz kafka
    
  4. 移至每個個別資料夾,並擷取套件。

    $ cd java
    $ tar -xvf jdk-8u202-linux-x64.tar.gz
    $ cd ../kafka
    $ tar -xvf kafka_2.13-3.9.0.tgz
    $ cd ../oggbd
    $ mkdir /u01/app/oggbd
    $ tar -xvf ggs_Linux_x64_BigData_64bit.tar -C /u01/app/oggbd
    
  5. 設定 JAVA 的環境變數。

    $ export JAVA_HOME=/home/oracle/java/jdk1.8.0_202
    $ export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$JAVA_HOME/lib:/$JAVA_HOME/jre/lib/amd64/server
    

設定 Oracle GoldenGate 巨量數據,將 CDC 數據復寫至 Eventstream 的 Kafka 端點

在本節中,您會引導您將 Oracle GoldenGate 巨量數據設定為將上一節中擷取的 CDC 數據復寫至 Eventstream 的 Kafka 端點。

準備 Kafka Eventstream 端點

遵循 Eventstream 及其自訂端點來源建立的一般建立程式,以取得 Kafka 端點資訊以供日後使用,請參閱 將自定義端點或自定義應用程式來源新增至 eventstream

顯示已成功建立自定義端點來源的螢幕快照。

設定 Oracle GoldenGate Big Data 的複製進程

本節中的所有作業都會在 Oracle VM (oggVM) 上執行。 因此,請使用 SSH 登入此 VM,並遵循下列步驟進行設定。

  1. 如果您在上一節之後遺失連線,請使用 SSH 連線至 oggVM。

    $ ssh -i ~/.ssh/oggVM.pem azureuser@10.0.0.4
    $ sudo su - oracle
    
  2. 前往 Oracle GoldenGate 巨量數據套件已解壓縮的資料夾,並確認所需的資料夾已經建立。

    $ cd /u01/app/oggbd
    $ ./ggsci
    GGSCI> CREATE SUBDIRS
    GGSCI> EDIT PARAMS MGR
    
    PORT 7801
    
    GGSCI> START MGR
    GGSCI> INFO ALL
    
    Program     Status      Group       Lag at Chkpt  Time Since Chkpt
    MANAGER     RUNNING
    
    GGSCI> EXIT
    
  3. 複製 Kafka 處理程式範本組態檔。

    $ cp AdapterExamples/big-data/kafka/* dirprm/
    
  4. 開啟 rkafka.prm 檔案,並根據源資料庫的架構名稱變更 MAP/TARGET 架構名稱。

    $ vim dirprm/rkafka.prm
    
    REPLICAT rkafka
    TARGETDB LIBFILE libggjava.so SET property=dirprm/kafka.props
    REPORTCOUNT EVERY 1 MINUTES, RATE
    GROUPTRANSOPS 10000
    MAP pdb1.ggtest.*, TARGET pdb1.ggtest.*;
    
  5. 在 ./ggsci 命令中使用下列命令新增複寫。 請確定副本應該是擷取步驟中定義的副本。

    $ ./ggsci
    GGSCI> ADD REPLICAT rkafka, exttrail /u01/app/oggcore/dirdat/rt
    GGSCI> EXIT
    
  6. 開啟 Kafka props 檔案,並將 gg.classpath 變更為 Apache Kafka #Sample gg.classpath 下的正確 kafka 安裝目錄路徑。 此外,也填入來自 Eventstream 自定義端點來源的 Kafka 主題名稱。

    $ vim dirprm/kafka.props
    
    gg.handlerlist=kafkahandler
    gg.handler.kafkahandler.type=kafka
    gg.handler.kafkahandler.kafkaProducerConfigFile=custom_kafka_producer.properties
    #The following resolves the topic name using the fixed topic which is from eventstream
    gg.handler.kafkahandler.topicMappingTemplate={YOUR.TOPIC.NAME}
    #The following selects the message key using the concatenated primary keys
    #A null Kafka message key distributes to the partitions on a round-robin basis
    gg.handler.kafkahandler.keyMappingTemplate=${null}
    #gg.handler.kafkahandler.schemaTopicName=mySchemaTopic
    gg.handler.kafkahandler.blockingSend=false
    gg.handler.kafkahandler.includeTokens=false
    gg.handler.kafkahandler.mode=op
    #gg.handler.kafkahandler.metaHeadersTemplate=${alltokens}
    gg.handler.kafkahandler.transactionsEnabled=false
    gg.handler.kafkahandler.format=json
    gg.handler.kafkahandler.format.metaColumnsTemplate=${objectname[table]},${optype[op_type]},${timestamp[op_ts]},${currenttimestamp[current_ts]},${position[pos]}
    #Sample gg.classpath for Apache Kafka
    gg.classpath=dirprm/:/var/lib/kafka/libs/*:/home/oracle/kafka/kafka_2.13-3.9.0/libs/*
    #Sample gg.classpath for HDP
    #gg.classpath=/etc/kafka/conf:/usr/hdp/current/kafka-broker/libs/*
    
    • 您可以在 [Kafka] 索引標籤底下的 [SAS 密鑰驗證] 頁面找到 {YOUR.TOPIC.NAME} 值:

    顯示如何取得主題名稱的螢幕快照。

  7. 變更 custom_producer.properties 檔案,新增連線至 Eventstream 所需的連接字串和密碼。

    $ vim dirprm/custom_kafka_producer.properties
    
    bootstrap.servers={YOUR.BOOTSTRAP.SERVER}
    security.protocol=SASL_SSL
    sasl.mechanism=PLAIN
    sasl.jaas.config={YOUR.SASL.JASS.CONFIG};
    
    acks=1
    reconnect.backoff.ms=1000
    
    value.serializer=org.apache.kafka.common.serialization.ByteArraySerializer
    key.serializer=org.apache.kafka.common.serialization.ByteArraySerializer
    # 100KB per partition
    batch.size=16384
    linger.ms=0
    
    • 取代 {YOUR。啟動。SERVER} 具有 Bootstrap 伺服器 值,您可以從事件串流複製女巫。
    • 請將 {YOUR.SASL.JASS.CONFIG} 替換為從您的事件流中複製的 SASL JASS 配置 值。

    顯示如何取得啟動程式和聯機密鑰的螢幕快照。

  8. 登入您的 GoldenGate 實例,然後啟動複寫程式。

    $ ./ggsci
    GGSCI> START RKAFKA
    
    Sending START request to Manager ...
    Replicat group RKAFKA starting.
    
    GGSCI> INFO ALL
    Program     Status      Group       Lag at Chkpt  Time Since Chkpt
    
    MANAGER     RUNNING
    REPLICAT    RUNNING     RKAFKA      00:00:00      00:53:17
    
    GGSCI> EXIT
    

驗證從 Oracle 到 Eventstream 的整個 E2E 流程

若要驗證整個 E2E 流程,讓我們使用 ggtest 帳戶登入 Oracle 資料庫,以插入一些記錄,然後移至 Eventstream 來檢查變更數據流。

  1. 使用測試帳戶登入 Oracle DB 以插入一些新記錄:

    $ sqlplus ggtest
    
    SQL> select * from TCUSTORD;
    SQL> INSERT INTO TCUSTORD VALUES ('MSFT',TO_DATE('3-JAN-25'),'M365',100,80000,2,104);
    SQL> INSERT INTO TCUSTMER VALUES ('TOM','SUNRISE SOFTWARE INC.','SAN FRANCISCO','CA');
    SQL> COMMIT;
    SQL> EXIT;
    
  2. 預覽您使用此 Kafka 端點來源傳送的數據。 選取預設數據流節點,這是顯示事件串流名稱的中間節點。

    顯示如何在 eventstream 中預覽數據的螢幕快照。