在 Azure Linux 虛擬機器上實作 Oracle Golden Gate

適用於:✔️ Linux VM

Azure CLI 可用來從命令列或在指令碼中建立和管理 Azure 資源。 本指南詳述如何使用 Azure CLI 從 Azure Marketplace 資源庫映像部署 Oracle 19c 資料庫。

這份文件逐步示範如何在 Azure VM 上建立、安裝及設定 Oracle Golden Gate。 在本教學課程中,單一區域的可用性設定組中設定兩個虛擬機器。 針對單一 Azure 區域中不同可用性區域中的 VM,或兩個不同區域中設定的 VM,可使用同樣的教學課程來設定 OracleGolden Gate。

開始之前,請確定已安裝 Azure CLI。 如需詳細資訊,請參閱 Azure CLI 安裝指南

簡介

GoldenGate 是一種邏輯複寫軟體,可即時複寫、篩選並將資料從源資料庫轉換為目標資料庫。 這項功能可確保源資料庫中的變更會即時複寫,讓目標資料庫能夠與最新資料一起保持最新狀態。

主要針對異質複寫案例使用 GoldenGate,例如將資料從不同的源資料庫複寫到單一資料庫。 例如,資料倉儲。 您也可以將其用於跨平台移轉,例如從 SPARC 和 AIX 移轉至 Linux x86 環境,以及進階高可用性和可擴縮性案例。

此外,GoldenGate 也適合近乎零的停機時間移轉,因為它支援在線移轉,而對來源系統造成最少的中斷。

雖然 GoldenGate 有助於雙向複寫,但必須據以設定應用程式。 此外,軟體允許篩選和轉換資料以符合特定商務需求,讓使用者能夠針對各種用途使用複寫的資料。

準備環境

若要執行 Oracle Golden Gate 的安裝,您需要在相同的可用性設定組建立兩個 Azure VM。 您用來建立 VM 的 Marketplace 映像是 Oracle:oracle-database-19-3:oracle-database-19-0904:19.3.1

您也需要熟悉 Unix 編輯器 vi,並且對 X Server 有基本瞭解。

環境設定的摘要如下表所示:

主要網站 複寫網站
Oracle 版本 Oracle Database 19.3.1.0 Oracle Database 19.3.1.0
電腦名稱 ggVM1 ggVM2
作業系統 Oracle Linux 7.x Oracle Linux 7.x
Oracle SID CDB1 CDB1
複寫結構描述 測試 測試
Golden Gate 擁有者/複寫 C##GGADMIN REPUSER
Golden Gate 流程 EXTORA REPORA

登入 Azure

  1. 在 Windows、Linux 或 Azure Shell 上開啟慣用的殼層。

  2. 使用 az login 命令登入您的 Azure 訂用帳戶。 然後,遵循螢幕上的指示來進行。

    $ az login
    
  3. 請驗證訂用帳戶名稱和/或識別碼,確保您已連線到正確的訂用帳戶。

    $ az account show
    
    {
      "environmentName": "XXXXX",
      "homeTenantId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
      "id": "<SUBSCRIPTION_ID>",
      "isDefault": true,
      "managedByTenants": [],
      "name": "<SUBSCRIPTION_NAME>",
      "state": "Enabled",
      "tenantId": XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
      "user": {
        "cloudShellID": true,
        "name": "aaaaa@bbbbb.com",
        "type": "user"
      }
    }
    

產生驗證金鑰

我們透過 SSH 使用以 keyfile 為基礎的驗證,並連線至 Oracle Database VM。 請確保您已在殼層上建立私人 (名為 id_rsa) 和公用 (名為 id_rsa.pub) 金鑰檔案。

金鑰檔案的位置取決於您的來源系統。

Windows:%USERPROFILE%.ssh Linux:~/.ssh

如果金鑰檔案不存在,您可建立新的金鑰組。

ssh-keygen -m PEM -t rsa -b 4096

.ssh 目錄和金鑰檔案已建立。 如需詳細資訊,請參閱在 Azure 中建立和管理對 Linux VM 進行驗證所需的 SSH 金鑰

建立資源群組

若要建立資源群組,請使用 az group create 命令。 Azure 資源群組是在其中部署與管理 Azure 資源的邏輯容器。

$ az group create --name GoldenGateOnAzureLab --location westus

建立和設定網路

建立虛擬網路

使用下列命令以建立虛擬網路來裝載此實驗室中建立的資源。

$ az network vnet create \
  --name ggVnet \
  --resource-group GoldenGateOnAzureLab \
  --address-prefixes "10.0.0.0/16" \
  --subnet-name ggSubnet1 \
  --subnet-prefixes "10.0.0.0/24"

建立網路安全性群組 (NSG)

  1. 建立網路安全性群組 (NSG) 鎖定虛擬網路。

    $ az network nsg create \
      --resource-group GoldenGateOnAzureLab \
      --name ggVnetNSG
    
  2. 建立 NSG 規則以允許虛擬網路內的通訊。

    $ az network nsg rule create  --resource-group GoldenGateOnAzureLab --nsg-name ggVnetNSG \
        --name ggAllowVnet \
        --protocol '*' --direction inbound --priority 3400 \
        --source-address-prefix 'VirtualNetwork' --source-port-range '*' \
        --destination-address-prefix 'VirtualNetwork' --destination-port-range '*' --access allow
    
  3. 建立 NSG 規則以拒絕全部輸入連線

    $ az network nsg rule create \
      --resource-group GoldenGateOnAzureLab \
      --nsg-name ggVnetNSG \
      --name ggDenyAllInBound \
      --protocol '*' --direction inbound --priority 3500 \
      --source-address-prefix '*' --source-port-range '*' \
      --destination-address-prefix '*' --destination-port-range '*' --access deny
    
  4. 將 NSG 指派給裝載伺服器的子網路。

    $ az network vnet subnet update --resource-group GoldenGateOnAzureLab --vnet-name ggVNet --name ggSubnet1 --network-security-group ggVnetNSG
    

建立 Bastion 網路

  1. 建立 Bastion 子網路。 子網路的名稱必須為 AzureBastionSubnet

    $ az network vnet subnet create  \
        --resource-group GoldenGateOnAzureLab \
        --name AzureBastionSubnet \
        --vnet-name ggVnet \
        --address-prefixes 10.0.1.0/24
    
  2. 建立 Bastion 的公用 IP

    $ az network public-ip create \
        --resource-group GoldenGateOnAzureLab \
        --name ggBastionIP \
        --sku Standard
    
  3. 建立 Azure Bastion 資源。 部署資源需要大約 10 分鐘的時間。

    $ az network bastion create \
        --resource-group GoldenGateOnAzureLab \
        --name ggBastion \
        --public-ip-address ggBastionIP \
        --vnet-name ggVnet \
        --sku Standard \
        --enable-tunneling \
        --enable-ip-connect true
    

建立 X Server VM (ggXServer)

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

$ az vm create \
     --resource-group GoldenGateOnAzureLab \
     --name ggXServer \
     --image MicrosoftWindowsDesktop:Windows-10:win10-22h2-pro-g2:19045.2604.230207 \
     --size Standard_DS1_v2  \
     --vnet-name ggVnet \
     --subnet ggSubnet1 \
     --public-ip-sku Standard \
     --nsg "" \
     --data-disk-delete-option Delete \
     --os-disk-delete-option Delete \
     --nic-delete-option Delete \
     --admin-username azureuser \
     --admin-password <ENTER_YOUR_PASSWORD_HERE>

透過 Bastion 連線到 ggXServer

使用 Bastion 連線到 ggXServer

  1. 從 Azure 入口網站瀏覽至 ggXServer
  2. 移至左側刀鋒視窗中的 [概觀]
  3. 依序選取上方功能表的 [連線]>[Bastion]
  4. 選取 [Bastion] 索引標籤
  5. 按一下 [使用 Bastion]

準備 ggXServer 以執行 X Server

此實驗室的後續步驟需要 X Server。 執行下列步驟來安裝和啟動 X Server。

  1. 將 Xming X Server for Windows 下載ggXServer,並使用全部預設選項進行安裝。

  2. 確定您未在安裝結束時選取 [啟動]

  3. 從開始功能表啟動「XLAUNCH」應用程式。

  4. 選取 [多個視窗]

    Screenshot of XLaunch wizard step 1.

  5. 選取 [啟動無用戶端]

    Screenshot of XLaunch wizard step 2.

  6. 選取 [沒有存取控制]

    Screenshot of XLaunch wizard step 3.

  7. 選取 [允許存取] 以允許 X Server 通過 Windows 防火牆

    Screenshot of XLaunch wizard step 4.

如果您重新啟動 ggXServer VM,請遵循上述步驟 2-6 以重新啟動 X Server 應用程式。

建立 Oracle 資料庫虛擬機器

針對此實驗室,我們從 Oracle Database 19c 映像建立虛擬機器 ggVM1ggVM2。 如果預設金鑰位置沒有金鑰,此命令也會建立 SSH 金鑰。 若要使用一組特定金鑰,請使用 --ssh-key-value 選項。 如果您已在 [產生驗證金鑰] 區段中建立 SSH 金鑰,則將使用這些金鑰。

建立新的虛擬機器時,size 參數表示建立的虛擬機器大小和類型。 根據您選取建立虛擬機器的 Azure 區域和訂用帳戶設定,您可能無法使用某些虛擬機器大小和類型。 下列範例使用此實驗室最低需求大小 Standard_DS1_v2。 如果您要變更虛擬機器的規格,請從 [Azure VM 大小] 選取其中一個可用的大小。 基於測試目的,您可選擇一般用途 (D 系列) 虛擬機器類型。 針對生產或試驗部署,記憶體最佳化 (E 系列或 M 系列) 更為適用。

建立 ggVM1 (主要)

$ az vm create \
     --resource-group GoldenGateOnAzureLab \
     --name ggVM1 \
     --image Oracle:oracle-database-19-3:oracle-database-19-0904:19.3.1 \
     --size Standard_DS1_v2 \
     --generate-ssh-keys \
    --admin-username azureuser \
    --vnet-name ggVnet \
    --subnet ggSubnet1 \
    --public-ip-address "" \
    --nsg "" \
    --zone 1

建立 ggVM2 (複寫)

$ az vm create \
    --resource-group GoldenGateOnAzureLab \
    --name ggVM2 \
    --image Oracle:oracle-database-19-3:oracle-database-19-0904:19.3.1 \
    --size Standard_DS1_v2  \
    --generate-ssh-keys \
    --admin-username azureuser \
    --vnet-name ggVnet \
    --subnet ggSubnet1 \
    --public-ip-address "" \
    --nsg "" \
    --zone 2

連線到 ggVM1 (主要)

使用 Bastion 連線到 ggVM1

  1. 從 Azure 入口網站瀏覽至 ggVM1
  2. 移至左窗格中的 [概觀]
  3. 依序選取上方功能表的 [連線]>[Bastion]
  4. 選取 [Bastion] 索引標籤
  5. 按一下 [使用 Bastion]

在 ggVM1 (主要) 上建立資料庫

Oracle 軟體已安裝於 Marketplace 映像上,因此下一個步驟是建立資料庫。

  1. 以使用者身分 oracle 執行軟體。
$ sudo su - oracle
  1. 使用下列命令建立資料庫。 此命令可能需要 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

輸出看起來應該如下列回應所示。

Copying database files
1% complete
2% complete
8% complete
13% complete
19% complete
27% complete
Creating and starting Oracle instance
29% complete
32% complete
33% complete
34% complete
38% complete
42% complete
43% complete
45% complete
Completing Database Creation
48% complete
51% complete
53% complete
62% complete
70% complete
72% complete
Creating Pluggable Databases
78% complete
100% complete
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/cdb1/cdb1.log" for more details.
  1. 設定 ORACLE_SID 和 LD_LIBRARY_PATH 變數。
$ export ORACLE_SID=cdb1
$ export LD_LIBRARY_PATH=$ORACLE_HOME/lib
  1. 執行下列命令,將 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
  1. 啟動 Oracle 接聽程式
$ lsnrctl start

連線到 ggVM2 (複寫)

使用 Bastion 連線到 ggVM2

  1. 從 Azure 入口網站瀏覽至 ggVM2
  2. 移至左窗格中的 [概觀]
  3. 依序選取上方功能表的 [連線]>[Bastion]
  4. 選取 [Bastion] 索引標籤
  5. 按一下 [使用 Bastion]

開啟 ggVM1 的防火牆連接埠

設定防火牆以允許來自 ggVM1 的連線。 下列命令會在 ggVM2 上執行。

$ sudo su -
$ firewall-cmd --permanent --zone=trusted --add-source=10.0.0.5
$ firewall-cmd --reload
$ exit

在 ggVM2 (複寫) 上建立資料庫

  1. 視需要切換至 oracle 使用者
$ sudo su - oracle
  1. 建立資料庫
$ 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
  1. 設定 ORACLE_SID 和 ORACLE_HOME 變數。
$ export ORACLE_SID=cdb1
$ export LD_LIBRARY_PATH=$ORACLE_HOME/lib
  1. 執行下列命令,將 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
  1. 啟動 Oracle 接聽程式
$ lsnrctl start

在 ggVM1 上設定 Golden Gate

請遵循本節中的步驟來安裝和設定 Golden Gate。

在 ggVM1 (主要) 上啟用封存記錄模式

  1. 連線到 sqlplus
$ sqlplus / as sysdba
  1. 啟用封存記錄檔
SQL> SELECT log_mode FROM v$database;

LOG_MODE
------------
NOARCHIVELOG

SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE OPEN;
  1. 啟用強制記錄功能,並確定至少有一個記錄檔存在。
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;

下載 Golden Gate 軟體

  1. Oracle Golden Gate 下載分頁下載 213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip 檔案。 在下載標題 Oracle GoldenGate 21.3.0.0.0 for Oracle on Linux x86-64 下。

  2. 將 .zip 檔下載到用戶端電腦之後,您可以使用「安全複製通訊協定 (SCP)」,將這些檔案複製到虛擬機器 ggVM1 和 ggVM2)。 確保 scp 命令指向正確的 .zip 檔案路徑。

  3. 複製到 ggVM1

    1. 登入並確保您視需要使用正確的訂用帳戶,如登入 Azure 中所述

    2. 使用下列 PowerShell 命令開啟目標 VM 的通道

      $ggVM1id=$(az vm show --resource-group GoldenGateOnAzureLab --name ggVM1 --query 'id' --output tsv)
      az network bastion tunnel --name ggBastion --resource-group GoldenGateOnAzureLab --target-resource-id $ggVM1id --resource-port 22 --port 57500
      
    3. 將第一個命令提示保持執行,並開啟第二個命令提示字元,即可透過通道連線到您的目標 VM。 在此第二個命令提示字元視窗中,您可以使用下列命令,將檔案從本機電腦上傳至目標 VM。 存取虛擬機器的正確 id_rsa keyfile 必須位於 .ssh 目錄中,或者您可對 scp 命令使用 -i 參數已指向不同的金鑰檔案。

       scp -P 57500 "213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip"  azureuser@127.0.0.1:.
      
  4. 複製到 ggVM2

    1. 使用下列 PowerShell 命令開啟目標 VM 的通道

      $ggVM2id=$(az vm show --resource-group GoldenGateOnAzureLab --name ggVM2 --query 'id' --output tsv)
      az network bastion tunnel --name ggBastion --resource-group GoldenGateOnAzureLab --target-resource-id $ggVM2id --resource-port 22 --port 57501
      
    2. 將第一個命令提示保持執行,並開啟第二個命令提示字元,即可透過通道連線到您的目標 VM。 在此第二個命令提示字元視窗中,您可以使用下列命令,將檔案從本機電腦上傳至目標 VM。 存取虛擬機器的正確 id_rsa keyfile 必須位於 .ssh 目錄中,或者您可對 scp 命令使用 -i 參數已指向不同的金鑰檔案。

      scp -P 57501 "213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip"  azureuser@127.0.0.1:.
      

安裝 Golden Gate 軟體

  1. 使用 Bastion 連線到 ggVM1

    1. 從 Azure 入口網站瀏覽至 ggVM1
    2. 移至左窗格中的 [概觀]
    3. 依序選取上方功能表的 [連線]>[Bastion]
    4. 選取 [Bastion] 索引標籤
    5. 按一下 [使用 Bastion]
  2. 將.zip 檔案移至 /opt 資料夾,然後變更擁有者

    $ sudo su -
    $ mv /home/azureuser/*.zip /opt
    
  3. 將檔案解壓縮 (如果您尚未安裝解壓縮公用程式,請加以安裝)

    $ yum install unzip
    $ cd /opt
    $ unzip 213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip
    
  4. 變更權限

    $ chown -R oracle:oinstall /opt/fbo_ggs_Linux_x64_Oracle_shiphome
    $ exit
    
  5. 啟動 Golden Gate 安裝程式

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

    安裝程式會在 ggXServer 上開啟。

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

    Screenshot of Golden Gate installation wizard step 1.

  7. 將軟體位置設定為 /u01/app/oracle/product/19.0.0/oggcore_1,確定已選取 [啟動管理員] 方塊,並且選取 [下一步] 繼續。

    Screenshot of Golden Gate installation wizard step 2.

  8. 在 [摘要] 畫面上,選取 [安裝] 以繼續操作。

    Screenshot of Golden Gate installation wizard step 3.

  9. 等待安裝完成。

    Screenshot of Golden Gate installation wizard step 4.

  10. 選取 [關閉] 繼續。

Screenshot of Golden Gate installation wizard step 5.

  1. 使用 Bastion 連線到 ggVM2

    1. 從 Azure 入口網站瀏覽至 ggVM2
    2. 移至左窗格中的 [概觀]
    3. 依序選取上方功能表的 [連線]>[Bastion]
    4. 選取 [Bastion] 索引標籤
    5. 按一下 [使用 Bastion]
  2. ggVM2 上重複上述步驟 2-10

設定 ggVM1 (主要) 上的服務

  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 擁有者和使用者帳戶。

    注意

    擁有者帳戶必須有 C## 前置詞。

    $ 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 測試使用者帳戶

    $ cd /u01/app/oracle/product/19.0.0/oggcore_1
    $ sqlplus system/OraPasswd1@pdb1
    
    SQL> CREATE USER test identified by test DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP;
    SQL> GRANT connect, resource, dba TO test;
    SQL> ALTER USER test QUOTA 100M on USERS;
    SQL> connect test/test@pdb1
    SQL> @demo_ora_create
    SQL> @demo_ora_insert
    SQL> EXIT;
    
  4. 設定擷取參數檔案。

    啟動 Golden Gate 命令列介面 (ggsci):

    $ sudo su - oracle
    $ cd /u01/app/oracle/product/19.0.0/oggcore_1
    $ ./ggsci
    
    GGSCI> DBLOGIN USERID test@pdb1, PASSWORD test
    Successfully logged into database  pdb1
    GGSCI>  ADD SCHEMATRANDATA pdb1.test
    2017-05-23 15:44:25  INFO    OGG-01788  SCHEMATRANDATA has been added on schema test.
    2017-05-23 15:44:25  INFO    OGG-01976  SCHEMATRANDATA for scheduling columns has been added on schema test.
    
    GGSCI> EDIT PARAMS EXTORA
    
  5. 按下 i 鍵可切換至插入模式,並且複製下列內容並在 EXTRACT 參數檔案貼上 (以滑鼠右鍵按一下 [SSH] 視窗)。 按下 Esc 鍵 :wq! 儲存檔案。

    EXTRACT EXTORA
    USERID C##GGADMIN@cdb1, PASSWORD ggadmin
    RMTHOST 10.0.0.5, MGRPORT 7809
    RMTTRAIL ./dirdat/rt
    DDL INCLUDE MAPPED
    DDLOPTIONS REPORT
    LOGALLSUPCOLS
    UPDATERECORDFORMAT COMPACT
    TABLE pdb1.test.TCUSTMER;
    TABLE pdb1.test.TCUSTORD;
    
  6. 註冊 extract--integrated 擷取。

    GGSCI> dblogin userid C##GGADMIN@cdb1, password ggadmin
    Successfully logged into database CDB$ROOT.
    
    GGSCI> REGISTER EXTRACT EXTORA DATABASE CONTAINER(pdb1)
    
    2023-03-03 19:37:01  INFO    OGG-02003  Extract group EXTORA successfully registered with database at SCN 2142014.
    
    GGSCI> exit
    
  7. 設定擷取檢查點,並啟動即時擷取

    $ ./ggsci
    
    GGSCI>  ADD EXTRACT EXTORA, INTEGRATED TRANLOG, BEGIN NOW
    EXTRACT (Integrated) added.
    
    GGSCI>  ADD RMTTRAIL ./dirdat/rt, EXTRACT EXTORA, MEGABYTES 10
    RMTTRAIL added.
    
    GGSCI>  START EXTRACT EXTORA
    
    Sending START request to MANAGER ...
    EXTRACT EXTORA 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
    

    在此步驟中,您會找到開始 SCN,將會在稍後於不同區段中使用。

    $ sqlplus / as sysdba
    
    SQL> alter session set container = pdb1;
    SQL> SELECT current_scn from v$database;
    CURRENT_SCN
    -----------
       2172191
    SQL> EXIT;
    
    $ ./ggsci
    GGSCI> EDIT PARAMS INITEXT
    

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

    EXTRACT INITEXT
    USERID C##GGADMIN@cdb1, PASSWORD ggadmin
    RMTHOST 10.0.0.6, MGRPORT 7809
    RMTTASK REPLICAT, GROUP INITREP
    TABLE pdb1.test.*, SQLPREDICATE 'AS OF SCN 2172191';
    
    GGSCI> ADD EXTRACT INITEXT, SOURCEISTABLE
    Extract added.
    GGSCI> EXIT
    

設定 ggVM2 (複寫) 上的服務

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

    $ 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. 建立複寫帳戶。

    $ sqlplus / as sysdba
    
    SQL> ALTER SYSTEM set enable_goldengate_replication=true;
    SQL> ALTER SESSION SET CONTAINER = pdb1;
    SQL> CREATE USER REPUSER IDENTIFIED BY REP_PASS CONTAINER=CURRENT;
    SQL> GRANT DBA TO REPUSER;
    SQL> EXEC DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE('REPUSER',CONTAINER=>'PDB1');
    SQL> CONNECT REPUSER/REP_PASS@PDB1
    SQL> EXIT;
    
  3. 建立 Golden Gate 測試使用者帳戶。

    $ cd /u01/app/oracle/product/19.0.0/oggcore_1
    $ sqlplus system/OraPasswd1@pdb1
    
    SQL> CREATE USER test identified by test DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP;
    SQL> GRANT connect, resource, dba TO test;
    SQL> ALTER USER test QUOTA 100M on USERS;
    SQL> CONNECT test/test@pdb1
    SQL> @demo_ora_create
    SQL> EXIT;
    
  4. REPLICAT 參數檔案以複寫變更。

    $ cd /u01/app/oracle/product/19.0.0/oggcore_1
    $ ./ggsci
    
    GGSCI> EDIT PARAMS REPORA
    

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

    REPLICAT REPORA
    ASSUMETARGETDEFS
    DISCARDFILE ./dirrpt/repora.dsc, PURGE, MEGABYTES 100
    DDL INCLUDE MAPPED
    DDLOPTIONS REPORT
    DBOPTIONS INTEGRATEDPARAMS(parallelism 6)
    USERID repuser@pdb1, PASSWORD REP_PASS
    MAP pdb1.test.*, TARGET pdb1.test.*;
    
  5. 設定複寫檢查點。

    GGSCI> ADD REPLICAT REPORA, INTEGRATED, EXTTRAIL ./dirdat/rt
    GGSCI> EDIT PARAMS INITREP
    

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

    REPLICAT INITREP
    ASSUMETARGETDEFS
    DISCARDFILE ./dirrpt/tcustmer.dsc, APPEND
    USERID repuser@pdb1, PASSWORD REP_PASS
    MAP pdb1.test.*, TARGET pdb1.test.*;
    
    GGSCI> ADD REPLICAT INITREP, SPECIALRUN
    GGSCI> EXIT
    

設定複寫 (ggVM1 和 ggVM2)

1.在 ggVM2 (複寫) 上設定複寫

登入 ggsci

$ cd /u01/app/oracle/product/12.1.0/oggcore_1
$ ./ggsci
GGSCI> EDIT PARAMS MGR

使用下列內容更新檔案。

PORT 7809
ACCESSRULE, PROG *, IPADDR *, ALLOW

重新啟動管理員服務。

GGSCI> STOP MGR
GGSCI> START MGR
GGSCI> EXIT

2.在 ggVM1 (主要) 上設定複寫

啟動初始載入並且檢查錯誤。

$ cd /u01/app/oracle/product/19.0.0/oggcore_1
$ ./ggsci
GGSCI> START EXTRACT INITEXT
GGSCI> VIEW REPORT INITEXT

3.在 ggVM2 (複寫) 上設定複寫

使用您之前取得的數字變更 SCN 編號。

$ cd /u01/app/oracle/product/19.0.0/oggcore_1
$ ./ggsci
START REPLICAT REPORA, AFTERCSN 2172191

複寫已開始進行,您可以將新記錄插入測試資料表,以進行測試。

檢視作業狀態和疑難排解

檢視報告

  • 若要檢視 ggVM1 上的報告,請執行下列命令。

    GGSCI> VIEW REPORT EXTORA
    
  • 若要檢視 ggVM2 上的報告,請執行下列命令。

    GGSCI> VIEW REPORT REPORA
    

檢視狀態和記錄

  • 若要檢視 ggVM1 上的狀態和記錄,請執行下列命令。

    GGSCI> DBLOGIN USERID C##GGADMIN@CDB1, PASSWORD ggadmin
    GGSCI> INFO EXTRACT EXTORA, DETAIL
    
  • 若要檢視 ggVM2 上的狀態和記錄,請執行下列命令。

    GGSCI> DBLOGIN USERID REPUSER@PDB1 PASSWORD REP_PASS
    GGSCI> INFO REP REPORA, DETAIL
    
    $ sqlplus test/test@pdb1
    
    SQL> select * from TCUSTMER;
    SQL> select * from TCUSTORD;
    

觀察資料複寫

  1. ggVM1 上連線到主資料庫

    $ sqlplus test/test@pdb1
    
  2. 從資料表選取現有的記錄

    SQL> select * from TCUSTORD;
    
  3. 建立測試記錄

    SQL> INSERT INTO TCUSTORD VALUES ('OLLJ',TO_DATE('11-APR-99'),'CYCLE',400,16000,1,102);
    SQL> COMMIT;
    SQL> EXIT;
    
  4. 觀察 Golden Gate 所挑選的交易 (注意插入總計值)

$ cd /u01/app/oracle/product/19.0.0/oggcore_1
$ ./ggsci
GGSCI> STATS EXTORA
  Sending STATS request to Extract group EXTORA ...

  Start of statistics at 2023-03-24 19:41:54.

  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.TEST.TCUSTORD to PDB1.TEST.TCUSTORD:

  *** Total statistics since 2023-03-24 19:41:34 ***
     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 2023-03-24 19:41:34 ***
     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 2023-03-24 19:41:34 ***
     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 2023-03-24 19:41:34 ***
     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.
  1. ggVM2 上連線到主資料庫

    $ sqlplus test/test@pdb1
    
  2. 確認已複寫新記錄

    SQL> select * from TCUSTORD;
    
     CUST ORDER_DAT PRODUCT_   ORDER_ID PRODUCT_PRICE PRODUCT_AMOUNT TRANSACTION_ID
     ---- --------- -------- ---------- ------------- -------------- --------------
     OLLJ 11-APR-99 CYCLE       400   16000      1    102
     WILL 30-SEP-94 CAR       144   17520      3    100
     JANE 11-NOV-95 PLANE       256  133300      1    100
    

Oracle Linux 上的 Golden Gate 安裝和設定至此完成。

刪除 ggXServer VM

ggXServer VM 僅在安裝期間使用。 您可以在完成此實驗室文件後安全刪除,但仍保持 Azure 實驗室設定上的 GoldenGate 完整不變。

$ az vm delete --resource-group GoldenGateOnAzureLab --name ggXServer --force-deletion yes

$ az network public-ip delete --resource-group GoldenGateOnAzureLab --name ggXServerPublicIP

刪除 Azure 實驗室設定上的 Golden Gate

若不再需要,您可以使用下列命令來移除此實驗室的資源群組、VM 和全部相關資源。

$ az group delete --name GoldenGateOnAzureLab

下一步

建立高可用性的虛擬機器教學課程

瀏覽 VM 部署 CLI 範例