在 Azure Linux 虛擬機上實作 Oracle Golden Gate (VM)
適用於:✔️ 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
在 Windows、Linux 或 Azure Shell 上開啟您慣用的殼層。
使用 az login 命令登入您的 Azure 訂用帳戶。 然後,遵循螢幕上的指示來進行。
$ az login
請驗證訂用帳戶名稱和/或識別碼,確保您已連線到正確的訂用帳戶。
$ 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 中建立和管理 SSH 金鑰以驗證 Linux VM
建立資源群組
若要建立資源群組,請使用 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)
建立網路安全組 (NSG) 以鎖定您的虛擬網路。
$ az network nsg create \ --resource-group GoldenGateOnAzureLab \ --name ggVnetNSG
建立 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
建立 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
將 NSG 指派給裝載伺服器的子網路。
$ az network vnet subnet update --resource-group GoldenGateOnAzureLab --vnet-name ggVNet --name ggSubnet1 --network-security-group ggVnetNSG
建立 Bastion 網路
建立 Bastion 子網路。 子網的名稱必須是 AzureBastionSubnet。
$ az network vnet subnet create \ --resource-group GoldenGateOnAzureLab \ --name AzureBastionSubnet \ --vnet-name ggVnet \ --address-prefixes 10.0.1.0/24
建立 Bastion 的公用 IP。
$ az network public-ip create \ --resource-group GoldenGateOnAzureLab \ --name ggBastionIP \ --sku Standard
建立 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。
- 從 Azure 入口網站 流覽至 ggXServer
- 在左側導覽中找出 [概觀 ]
- 依序選取上方功能表的 [連線]>[Bastion]
- 選取 [Bastion] 索引標籤
- 按一下 [使用 Bastion]
準備 ggXServer 以執行 X Server
此實驗室的後續步驟需要 X Server。 執行下列步驟來安裝和啟動 X Server。
將 Xming X Server for Windows 下載到 ggXServer,並使用全部預設選項進行安裝。
確定您未在安裝結束時選取 [啟動]
從開始功能表啟動「XLAUNCH」應用程式。
選取 [多個視窗]
選取 [啟動無用戶端]
選取 [沒有存取控制]
選取 [允許存取] 以允許 X Server 通過 Windows 防火牆
如果您重新啟動 ggXServer VM,請遵循上述步驟 2-6 以重新啟動 X Server 應用程式。
建立 Oracle 資料庫虛擬機器
針對此實驗室,我們從 Oracle Database 19c 映像建立虛擬機器 ggVM1
和 ggVM2
。 如果預設金鑰位置沒有金鑰,此命令也會建立 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。
- 從 Azure 入口網站瀏覽至 ggVM1。
- 移至左窗格中的 [概觀]。
- 依序選取上方功能表的 [連線]>[Bastion]
- 選取 [Bastion] 索引標籤
- 選取 [使用 Bastion]
在 ggVM1 (主要) 上建立資料庫
Oracle 軟體已安裝於 Marketplace 映像上,因此下一個步驟是建立資料庫。
- 以使用者身分
oracle
執行軟體。
$ sudo su - oracle
- 使用下列命令建立資料庫。 此命令可能需要 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.
- 設定 ORACLE_SID 和 LD_LIBRARY_PATH 變數。
$ export ORACLE_SID=cdb1
$ export LD_LIBRARY_PATH=$ORACLE_HOME/lib
- 執行下列命令,將 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
- 啟動 Oracle 接聽程式
$ lsnrctl start
連線到 ggVM2 (複寫)
使用 Bastion 連線到 ggVM2。
- 從 Azure 入口網站瀏覽至 ggVM2。
- 移至左窗格中的 [概觀]。
- 依序選取上方功能表的 [連線]>[Bastion]
- 選取 [Bastion] 索引標籤
- 選取 [使用 Bastion]
開啟 ggVM1 的防火牆連接埠
設定防火牆以允許來自 ggVM1 的連線。 下列命令會在 ggVM2 上執行。
$ sudo su -
$ firewall-cmd --permanent --zone=trusted --add-source=10.0.0.5
$ firewall-cmd --reload
$ exit
在 ggVM2 (複寫) 上建立資料庫
- 視需要切換至
oracle
使用者
$ sudo su - oracle
- 建立資料庫
$ 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
- 設定 ORACLE_SID 和 ORACLE_HOME 變數。
$ export ORACLE_SID=cdb1
$ export LD_LIBRARY_PATH=$ORACLE_HOME/lib
- 執行下列命令,將 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
- 啟動 Oracle 接聽程式
$ lsnrctl start
在 ggVM1 上設定 Golden Gate
請遵循本節中的步驟來安裝和設定 Golden Gate。
在 ggVM1 (主要) 上啟用封存記錄模式
- 連線到
sqlplus
$ sqlplus / as sysdba
- 啟用封存記錄檔
SQL> SELECT log_mode FROM v$database;
LOG_MODE
------------
NOARCHIVELOG
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE OPEN;
- 啟用強制記錄功能,並確定至少有一個記錄檔存在。
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 軟體
在 Linux x86-64 上的 Oracle GoldenGate 21.3.0.0.0 下載標題下,從 Oracle Golden Gate 下載頁面下載213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip檔案。
將 .zip 檔下載到用戶端電腦之後,您可以使用「安全複製通訊協定 (SCP)」,將這些檔案複製到虛擬機器 ggVM1 和 ggVM2)。 確保
scp
命令指向正確的 .zip 檔案路徑。複製到 ggVM1
使用下列 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
若要透過通道連線到目標 VM,請讓第一個命令提示字元保持執行,然後開啟第二個命令提示字元。 在此第二個命令提示字元視窗中,您可以使用下列命令,將檔案從本機電腦上傳至目標 VM。 存取虛擬機器的正確
id_rsa
keyfile 必須位於.ssh
目錄中,或者您可對scp
命令使用-i
參數已指向不同的金鑰檔案。scp -P 57500 "213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip" azureuser@127.0.0.1:.
複製到 ggVM2
使用下列 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
將第一個命令提示保持執行,並開啟第二個命令提示字元,即可透過通道連線到您的目標 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 軟體
使用 Bastion 連線到 ggVM1。
- 從 Azure 入口網站瀏覽至 ggVM1。
- 移至左窗格中的 [概觀]
- 依序選取上方功能表的 [連線]>[Bastion]
- 選取 [Bastion] 索引標籤
- 選取 [使用 Bastion]
將.zip 檔案移至 /opt 資料夾,然後變更擁有者
$ sudo su - $ mv /home/azureuser/*.zip /opt
解壓縮檔案(如果尚未安裝,請安裝解壓縮公用程式)
$ yum install unzip $ cd /opt $ unzip 213000_fbo_ggs_Linux_x64_Oracle_shiphome.zip
變更權限
$ chown -R oracle:oinstall /opt/fbo_ggs_Linux_x64_Oracle_shiphome $ exit
啟動 Golden Gate 安裝程式
$ sudo su - oracle $ export DISPLAY=10.0.0.4:0.0 $ cd /opt/fbo_ggs_Linux_x64_Oracle_shiphome/Disk1 $ ./runInstaller
安裝程式會在 ggXServer 上開啟。
選取「Oracle GoldenGate for Oracle Database 21c」。 然後選取 [下一步] 以繼續操作。
將軟體位置設定為 /u01/app/oracle/product/19.0.0/oggcore_1,確定已選取 [啟動管理員] 方塊,並且選取 [下一步] 繼續。
在 [摘要] 畫面上,選取 [安裝] 以繼續操作。
等待安裝完成。
選取 [關閉] 繼續。
使用 Bastion 連線到 ggVM2。
- 從 Azure 入口網站瀏覽至 ggVM2。
- 移至左窗格中的 [概觀]
- 依序選取上方功能表的 [連線]>[Bastion]
- 選取 [Bastion] 索引標籤
- 選取 [使用 Bastion]
在 ggVM2 上重複上述步驟 2-10
設定 ggVM1 (主要) 上的服務
建立或更新 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) ) )
建立 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;
建立 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;
設定擷取參數檔案。
啟動 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
按下
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;
註冊 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
設定擷取檢查點,並啟動即時擷取
$ ./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 (複寫) 上的服務
建立或更新 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) ) )
建立複寫帳戶。
$ 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;
建立 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;
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.*;
設定複寫檢查點。
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
複寫已啟動,您可以將新記錄插入 TEST 資料表來測試它。
檢視作業狀態和疑難排解
檢視報告
若要檢視 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;
觀察資料複寫
在 ggVM1 上連線到主資料庫
$ sqlplus test/test@pdb1
從資料表選取現有的記錄
SQL> select * from TCUSTORD;
建立測試記錄
SQL> INSERT INTO TCUSTORD VALUES ('OLLJ',TO_DATE('11-APR-99'),'CYCLE',400,16000,1,102); SQL> COMMIT; SQL> EXIT;
觀察 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.
在 ggVM2 上連線到主資料庫
$ sqlplus test/test@pdb1
確認已複寫新記錄
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