TR-5002:使用Azure NetApp Files降低 Oracle Active Data Guard 成本
該解決方案提供了使用 Microsoft Azure NetApp Files (ANF) 作為主資料庫和備用資料庫儲存配置 Oracle Data Guard 的概述和詳細信息,以降低 Azure 雲端中 Oracle Data Guard HA/DR 解決方案的授權和營運成本。
目的
Oracle Data Guard 可確保主資料庫和備用資料庫複製配置中企業資料的高可用性、資料保護和災難復原。 Oracle Active Data Guard 使用戶能夠在從主資料庫到備用資料庫的資料複製處於作用中狀態時存取備用資料庫。 Data Guard 是 Oracle Database Enterprise Edition 的特性。它不需要單獨的許可。另一方面,Active Data Guard 是 Oracle Database Enterprise Edition Option,因此需要單獨的授權。在 Active Data Guard 設定中,多個備用資料庫可以從主資料庫接收資料複製。但是,每個額外的備用資料庫都需要 Active Data Guard 許可證和與主資料庫大小相同的額外儲存空間。營運成本迅速增加。
如果您熱衷於削減 Oracle 資料庫操作成本並計劃在 Azure 雲端中設定 Active Data Guard,那麼您應該考慮另一種選擇。不要使用 Active Data Guard,而是使用 Data Guard 從主資料庫複製到Azure NetApp Files儲存上的單一實體備用資料庫。隨後,可以複製此備用資料庫的多個副本並打開以進行讀取/寫入訪問,以服務許多其他用例,例如報告、開發、測試等。最終結果有效地提供了 Active Data Guard 的功能,同時消除了 Active Data Guard 授權。在本文檔中,我們示範如何使用 ANF 儲存體上的現有主資料庫和實體備用資料庫設定 Oracle Data Guard。透過NetApp SnapCenter資料庫管理工具,可以備份和複製備用資料庫,以便根據需要對用例進行讀/寫存取。 NetApp解決方案工程團隊還提供了自動化工具包,用於按照使用者定義的計劃刷新克隆,從而實現完整、自動化的資料庫克隆生命週期管理,無需用戶幹預。
此解決方案適用於以下用例:
-
在跨 Azure 區域的 Microsoft Azure NetApp Files儲存空間上的主資料庫和實體備用資料庫之間實作 Oracle Data Guard。
-
備份和複製實體備用資料庫以滿足報告、開發、測試等使用案例的需求。
-
透過自動化進行 Oracle 資料庫克隆刷新生命週期管理。
對象
此解決方案適用於以下人群:
-
在 Azure 雲端中設定 Oracle Active Data Guard 以實現高可用性、資料保護和災難復原的 DBA。
-
對 Azure 雲端中的 Oracle Active Data Guard 配置感興趣的資料庫解決方案架構師。
-
管理支援 Oracle Data Guard 的Azure NetApp Files儲存的儲存管理員。
-
喜歡在 Azure 雲端環境中建立 Oracle Data Guard 的應用程式擁有者。
解決方案測試和驗證環境
此解決方案的測試和驗證是在 Azure 雲端實驗室設定中進行的,該設定可能與實際使用者部署環境不符。有關更多信息,請參閱部署考慮的關鍵因素 。
架構
硬體和軟體組件
硬體 |
||
Azure NetApp Files |
Microsoft 提供的目前版本 |
兩個 3 TiB 容量池、標準服務等級、自動 QoS |
用於資料庫伺服器的 Azure VM |
標準 B4ms(4 個 vcpus,16 GiB 記憶體) |
三個資料庫虛擬機,一個作為主資料庫伺服器,一個作為備用資料庫伺服器,第三個作為克隆資料庫伺服器 |
軟體 |
||
紅帽Linux |
Red Hat Enterprise Linux 8.6(LVM)-x64 Gen2 |
部署 RedHat 訂閱進行測試 |
Oracle 資料庫 |
版本 19.18 |
已套用RU補丁p34765931_190000_Linux-x86-64.zip |
Oracle OPatch |
版本 12.2.0.1.36 |
最新補丁 p6880880_190000_Linux-x86-64.zip |
SnapCenter |
版本 6.0.1 |
版本 6.0.1.4487 |
NFS |
版本 3.0 |
為 Oracle 啟用 dNFS |
假設紐約到洛杉磯災難復原設定的 Oracle Data Guard 配置
資料庫 |
資料庫唯一名稱 |
Oracle 網路服務名稱 |
基本的 |
NTAP_NY |
NTAP_NY.internal.cloudapp.net |
支援 |
NTAP_LA |
NTAP_LA.internal.cloudapp.net |
部署考慮的關鍵因素
-
*備用資料庫克隆。 *從主資料庫接收和套用交易日誌時,可以複製實體備用資料庫並將其安裝在 DB VM 上,以支援其他工作負載,例如 DEV、TEST 或 Report。克隆可以是薄克隆或厚克隆。目前,ANF 僅支援厚克隆,即備用資料庫的完整副本。 ANF 薄克隆選項即將發布。對於資料庫卷的精簡克隆副本,它共享備用資料庫的相同 DB 卷,並利用寫入時複製技術來服務寫入 IO。因此,克隆的儲存效率非常高,可以用於許多其他用例,為新的寫入 IO 分配最少且增量的新儲存。透過大幅減少 Active Data Guard 儲存空間,可以節省大量的儲存成本。 NetApp建議在資料庫從主儲存切換到備用 ANF 儲存時盡量減少FlexClone活動,以保持 Oracle 效能處於高水準。
-
*Oracle 軟體需求。 *一般而言,實體備用資料庫必須具有與主資料庫相同的資料庫主版本,包括補丁集異常 (PSE)、關鍵修補程式更新 (CPU) 和修補程式集更新 (PSU),除非正在進行 Oracle Data Guard 備用優先補丁應用程式(如 My Oracle Support 說明 1265700.1 所述,網址為"support.oracle.com"。
-
*備用資料庫目錄結構注意事項。 *如果可能,主系統和備用系統上的資料檔案、日誌檔案和控制檔案應該具有相同的名稱和路徑名,並使用最佳靈活架構 (OFA) 命名約定。備用資料庫上的存檔目錄在網站之間也應該相同,包括大小和結構。此策略允許其他操作(例如備份、切換和故障轉移)執行同一組步驟,從而降低維護複雜性。
-
*強制記錄模式。 *為了防止主資料庫中未記錄的直接寫入無法傳播到備用資料庫,請在執行資料檔案備份以建立備用資料庫之前在主資料庫上開啟 FORCE LOGGING。
-
Azure VM 大小調整。在這些測試和驗證中,我們使用了具有 4 個 vCPU 和 16 GiB 記憶體的 Azure VM - Standard_B4ms。您需要根據實際工作負載需求,適當調整 Azure DB VM 的大小,以適應 vCPU 數量和 RAM 容量。
-
Azure NetApp Files配置。 Azure NetApp Files在 Azure NetApp儲存帳戶中指派為
Capacity Pools
。在這些測試和驗證中,我們部署了一個 3 TiB 容量池來託管東部區域的 Oracle 主資料庫和西部 2 區域的備用資料庫。 ANF 容量池有三種服務等級:Standard、Premium 和 Ultra。 ANF容量池的IO容量取決於容量池的大小及其服務等級。對於生產部署, NetApp建議全面評估您的 Oracle 資料庫吞吐量需求,並相應地確定資料庫容量池的大小。在建立容量池時,可以將 QoS 設定為“自動”或“手動”,並將靜態資料加密設為“單倍”或“雙倍”。 -
dNFS 配置。透過使用 dNFS,在具有 ANF 儲存的 Azure 虛擬機器上執行的 Oracle 資料庫可以比本機 NFS 用戶端驅動更多的 I/O。使用NetApp自動化工具包的自動化 Oracle 部署會自動在 NFSv3 上設定 dNFS。
解決方案部署
假設您已將主 Oracle 資料庫部署在 VNet 內的 Azure 雲端環境中,作為設定 Oracle Data Guard 的起點。理想情況下,主資料庫部署在具有 NFS 掛載的 ANF 儲存體上。為 Oracle 資料庫儲存建立了三個 NFS 掛載點:mount /u01 用於 Oracle 二進位文件,mount /u02 用於 Oracle 資料檔案和控製文件,mount /u03 用於 Oracle 目前和存檔日誌檔案以及冗餘控製文件。
您的主要 Oracle 資料庫也可以在NetApp ONTAP儲存或 Azure 生態系統或私有資料中心內的任何其他儲存體上執行。以下部分提供了在 Azure 中具有 ANF 儲存體的主 Oracle DB 與 Azure 中具有 ANF 儲存體的實體備用 Oracle DB 之間設定 Oracle Data Guard 的逐步部署程序。
部署先決條件
Details
部署需要以下先決條件。
-
已設定 Azure 雲端帳戶,並在您的 Azure 帳戶內建立了必要的 VNet 和網路子網路。
-
從 Azure 雲端入口網站控制台,您需要部署至少三個 Azure Linux VM,一個作為主 Oracle DB 伺服器,一個作為備用 Oracle DB 伺服器,以及一個用於報表、開發和測試等的複製目標 DB 伺服器。有關環境設定的更多詳細信息,請參閱上一節中的體系結構圖。也審查了微軟"Azure 虛擬機"了解更多。
-
主 Oracle 資料庫應該已經在主 Oracle DB 伺服器中安裝並配置。另一方面,在備用 Oracle DB 伺服器或複製 Oracle DB 伺服器中,僅安裝了 Oracle 軟體,而沒有建立 Oracle 資料庫。理想情況下,Oracle 檔案目錄佈局應該與所有 Oracle DB 伺服器完全相符。有關NetApp對 Azure 雲端和 ANF 中自動化 Oracle 部署的建議的詳細信息,請參閱以下技術報告以取得協助。
-
"TR-4987:使用 NFS 在Azure NetApp Files上簡化、自動化 Oracle 部署"
確保在 Azure VM 根磁碟區中指派了至少 128G,以便有足夠的空間來暫存 Oracle 安裝檔案。
-
-
從 Azure 雲端入口網站控制台部署兩個 ANF 儲存容量池來託管 Oracle 資料庫磁碟區。 ANF 儲存容量池應位於不同的區域,以模擬真正的 DataGuard 配置。如果您不熟悉 ANF 儲存的部署,請參閱文檔"快速入門:設定Azure NetApp Files並建立 NFS 卷"以獲得逐步說明。
-
當主 Oracle 資料庫和備用 Oracle 資料庫位於兩個不同的區域時,應配置 VPN 閘道以允許兩個單獨的 VNet 之間的資料流量流動。 Azure 中的詳細網路配置超出了本文檔的範圍。以下螢幕截圖提供了有關如何在實驗室中設定、連接 VPN 閘道以及如何確認資料流量流動的一些參考。
實驗室 VPN 閘道:
主 VNet 閘道:
Vnet網關連線狀態:
驗證流量是否已建立(點擊三個點開啟頁面):
為 Data Guard 準備主資料庫
Details
在此示範中,我們在主 Azure DB 伺服器上設定了一個名為 NTAP 的主 Oracle 資料庫,它具有三個 NFS 裝入點:/u01 用於 Oracle 二進位文件,/u02 用於 Oracle 資料檔案和 Oracle 控製文件,/u03 用於 Oracle 活動日誌、存檔 Oracle 檔案和冗餘日誌檔案和冗餘日誌檔案。以下說明了為 Oracle Data Guard 保護設定主資料庫的詳細流程。所有步驟都應以 Oracle 資料庫擁有者或預設使用者身分執行 `oracle`用戶。
-
主 Azure DB 伺服器 orap.internal.cloudapp.net 上的主資料庫 NTAP 最初部署為獨立資料庫,並以 ANF 作為資料庫儲存。
orap.internal.cloudapp.net: resource group: ANFAVSRG Location: East US size: Standard B4ms (4 vcpus, 16 GiB memory) OS: Linux (redhat 8.6) pub_ip: 172.190.207.231 pri_ip: 10.0.0.4 [oracle@orap ~]$ df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 7.7G 4.0K 7.7G 1% /dev tmpfs 7.8G 0 7.8G 0% /dev/shm tmpfs 7.8G 209M 7.5G 3% /run tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup /dev/mapper/rootvg-rootlv 22G 413M 22G 2% / /dev/mapper/rootvg-usrlv 10G 2.1G 8.0G 21% /usr /dev/sda1 496M 181M 315M 37% /boot /dev/mapper/rootvg-homelv 2.0G 47M 2.0G 3% /home /dev/sda15 495M 5.8M 489M 2% /boot/efi /dev/mapper/rootvg-varlv 8.0G 1.1G 7.0G 13% /var /dev/mapper/rootvg-tmplv 12G 120M 12G 1% /tmp /dev/sdb1 32G 49M 30G 1% /mnt 10.0.2.36:/orap-u02 500G 7.7G 493G 2% /u02 10.0.2.36:/orap-u03 450G 6.1G 444G 2% /u03 10.0.2.36:/orap-u01 100G 9.9G 91G 10% /u01 [oracle@orap ~]$ cat /etc/oratab # # This file is used by ORACLE utilities. It is created by root.sh # and updated by either Database Configuration Assistant while creating # a database or ASM Configuration Assistant while creating ASM instance. # A colon, ':', is used as the field terminator. A new line terminates # the entry. Lines beginning with a pound sign, '#', are comments. # # Entries are of the form: # $ORACLE_SID:$ORACLE_HOME:<N|Y>: # # The first and second fields are the system identifier and home # directory of the database respectively. The third field indicates # to the dbstart utility that the database should , "Y", or should not, # "N", be brought up at system boot time. # # Multiple entries with the same $ORACLE_SID are not allowed. # # NTAP:/u01/app/oracle/product/19.0.0/NTAP:N
-
以 oracle 使用者登入主資料庫伺服器。透過 sqlplus 登入資料庫,在主資料庫上啟用強制日誌記錄。
alter database force logging;
[oracle@orap admin]$ sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on Tue Nov 26 20:12:02 2024 Version 19.18.0.0.0 Copyright (c) 1982, 2022, Oracle. All rights reserved. Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.18.0.0.0 SQL> alter database force logging; Database altered.
-
從 sqlplus,在主資料庫上啟用閃回。閃回功能允許在故障轉移後輕鬆地將主資料庫還原為備用資料庫。
alter database flashback on;
SQL> alter database flashback on; Database altered.
-
使用 Oracle 密碼文件設定重做傳輸驗證 - 如果未設置,則使用 orapwd 公用程式在主伺服器上建立 pwd 文件,並將其複製到備用資料庫 $ORACLE_HOME/dbs 目錄。
-
在主資料庫上建立與目前線上日誌檔案大小相同的備用重做日誌。日誌組比線上日誌檔案組多一個。然後,當發生故障轉移時,主資料庫可以快速轉換到備用角色並開始接收重做資料。重複以下指令四次,建立四個備用日誌檔案。
alter database add standby logfile thread 1 size 200M;
SQL> alter database add standby logfile thread 1 size 200M; Database altered. SQL> / Database altered. SQL> / Database altered. SQL> / Database altered. SQL> set lin 200 SQL> col member for a80 SQL> select group#, type, member from v$logfile; GROUP# TYPE MEMBER ---------- ------- -------------------------------------------------------------------------------- 3 ONLINE /u03/orareco/NTAP/onlinelog/redo03.log 2 ONLINE /u03/orareco/NTAP/onlinelog/redo02.log 1 ONLINE /u03/orareco/NTAP/onlinelog/redo01.log 4 STANDBY /u03/orareco/NTAP/onlinelog/o1_mf_4__2m115vkv_.log 5 STANDBY /u03/orareco/NTAP/onlinelog/o1_mf_5__2m3c5cyd_.log 6 STANDBY /u03/orareco/NTAP/onlinelog/o1_mf_6__2m4d7dhh_.log 7 STANDBY /u03/orareco/NTAP/onlinelog/o1_mf_7__2m5ct7g1_.log
-
從 sqlplus,從 spfile 建立一個 pfile 進行編輯。
create pfile='/home/oracle/initNTAP.ora' from spfile;
-
修改pfile並新增以下參數。
vi /home/oracle/initNTAP.ora
Update the following parameters if not set: DB_NAME=NTAP DB_UNIQUE_NAME=NTAP_NY LOG_ARCHIVE_CONFIG='DG_CONFIG=(NTAP_NY,NTAP_LA)' LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=NTAP_NY' LOG_ARCHIVE_DEST_2='SERVICE=NTAP_LA ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=NTAP_LA' REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE FAL_SERVER=NTAP_LA STANDBY_FILE_MANAGEMENT=AUTO
-
從 sqlplus 中,從修改後的 pfile 重新建立 spfile 以覆寫 $ORACLE_HOME/dbs 目錄中現有的 spfile。
create spfile='$ORACLE_HOME/dbs/spfileNTAP.ora' from pfile='/home/oracle/initNTAP.ora';
-
修改 $ORACLE_HOME/network/admin 目錄中的 Oracle tnsnames.ora,新增 db_unique_name 以進行名稱解析。
vi $ORACLE_HOME/network/admin/tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/19.0.0/NTAP/network/admin/tnsnames.ora # Generated by Oracle configuration tools. NTAP_NY = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = orap.internal.cloudapp.net)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SID = NTAP) ) ) NTAP_LA = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oras.internal.cloudapp.net)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SID = NTAP) ) ) LISTENER_NTAP = (ADDRESS = (PROTOCOL = TCP)(HOST = orap.internal.cloudapp.net)(PORT = 1521))
如果您選擇將 Azure DB 伺服器命名為與預設名稱不同的名稱,請將名稱新增至本機主機檔案以進行主機名稱解析。 -
將主資料庫的資料保護服務名稱 NTAP_NY_DGMGRL.internal.cloudapp.net 新增至 listener.ora 檔案。
vi $ORACLE_HOME/network/admin/listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/19.0.0/NTAP/network/admin/listener.ora # Generated by Oracle configuration tools. LISTENER.NTAP = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = orap.internal.cloudapp.net)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) ) SID_LIST_LISTENER.NTAP = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = NTAP_NY_DGMGRL.internal.cloudapp.net) (ORACLE_HOME = /u01/app/oracle/product/19.0.0/NTAP) (SID_NAME = NTAP) ) )
-
透過 sqlplus 關閉並重新啟動資料庫,並驗證資料保護參數現在是否處於活動狀態。
shutdown immediate;
startup;
SQL> show parameter name NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ cdb_cluster_name string cell_offloadgroup_name string db_file_name_convert string db_name string NTAP db_unique_name string NTAP_NY global_names boolean FALSE instance_name string NTAP lock_name_space string log_file_name_convert string pdb_file_name_convert string processor_group_name string NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ service_names string NTAP_NY.internal.cloudapp.net SQL> sho parameter log_archive_dest NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ log_archive_dest string log_archive_dest_1 string LOCATION=USE_DB_RECOVERY_FILE_ DEST VALID_FOR=(ALL_LOGFILES,A LL_ROLES) DB_UNIQUE_NAME=NTAP_ NY log_archive_dest_10 string log_archive_dest_11 string log_archive_dest_12 string log_archive_dest_13 string log_archive_dest_14 string log_archive_dest_15 string NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ log_archive_dest_16 string log_archive_dest_17 string log_archive_dest_18 string log_archive_dest_19 string log_archive_dest_2 string SERVICE=NTAP_LA ASYNC VALID_FO R=(ONLINE_LOGFILES,PRIMARY_ROL E) DB_UNIQUE_NAME=NTAP_LA log_archive_dest_20 string log_archive_dest_21 string . .
這完成了 Data Guard 的主資料庫設定。
準備備用資料庫並啟動 Data Guard
Details
Oracle Data Guard 需要 OS 核心配置和 Oracle 軟體堆疊(包括備用 DB 伺服器上的修補程式集)以與主 DB 伺服器相符。為了便於管理和簡單起見,備用資料庫伺服器的資料庫儲存配置理想情況下也應該與主資料庫伺服器匹配,例如資料庫目錄佈局和 NFS 掛載點的大小。以下是設定備用 Oracle DB 伺服器和啟動 Oracle DataGuard 以實現 HA/DR 保護的詳細步驟。所有命令都應以預設 Oracle 所有者使用者 ID 執行 oracle
。
-
首先,檢查主 Oracle DB 伺服器上主資料庫的配置。在此示範中,我們在主 DB 伺服器中設定了一個名為 NTAP 的主 Oracle 資料庫,並在 ANF 儲存體上安裝了三個 NFS。
-
如果您依照NetApp文件 TR-4987 設定 Oracle 備用資料庫伺服器"TR-4987:使用 NFS 在Azure NetApp Files上簡化、自動化 Oracle 部署",使用標籤 `-t software_only_install`在步驟 2 中 `Playbook execution`執行自動 Oracle 安裝。修改後的命令語法如下所示。此標籤將允許安裝和配置 Oracle 軟體堆疊,但不會建立資料庫。
ansible-playbook -i hosts 4-oracle_config.yml -u azureuser -e @vars/vars.yml -t software_only_install
-
演示實驗室中備用站點的備用 Oracle DB 伺服器配置。
oras.internal.cloudapp.net: resource group: ANFAVSRG Location: West US 2 size: Standard B4ms (4 vcpus, 16 GiB memory) OS: Linux (redhat 8.6) pub_ip: 172.179.119.75 pri_ip: 10.0.1.4 [oracle@oras ~]$ df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 7.7G 0 7.7G 0% /dev tmpfs 7.8G 0 7.8G 0% /dev/shm tmpfs 7.8G 265M 7.5G 4% /run tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup /dev/mapper/rootvg-rootlv 22G 413M 22G 2% / /dev/mapper/rootvg-usrlv 10G 2.1G 8.0G 21% /usr /dev/sda1 496M 181M 315M 37% /boot /dev/mapper/rootvg-varlv 8.0G 985M 7.1G 13% /var /dev/mapper/rootvg-homelv 2.0G 52M 2.0G 3% /home /dev/mapper/rootvg-tmplv 12G 120M 12G 1% /tmp /dev/sda15 495M 5.8M 489M 2% /boot/efi /dev/sdb1 32G 49M 30G 1% /mnt 10.0.3.36:/oras-u01 100G 9.5G 91G 10% /u01 10.0.3.36:/oras-u02 500G 8.1G 492G 2% /u02 10.0.3.36:/oras-u03 450G 4.8G 446G 2% /u03
-
安裝並配置 Oracle 軟體後,設定 oracle 主目錄和路徑。此外,如果您還沒有這樣做,請從備用 $ORACLE_HOME dbs 目錄複製主資料庫的 oracle 密碼。
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/NTAP
export PATH=$PATH:$ORACLE_HOME/bin
scp oracle@10.0.0.4:$ORACLE_HOME/dbs/orapwNTAP .
-
使用以下條目更新 tnsnames.ora 檔案。
vi $ORACLE_HOME/network/admin/tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/19.0.0/NTAP/network/admin/tnsnames.ora # Generated by Oracle configuration tools. NTAP_NY = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = orap.internal.cloudapp.net)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SID = NTAP) ) ) NTAP_LA = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oras.internal.cloudapp.net)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SID = NTAP) ) )
-
將 DB 資料保護服務名稱新增至 listener.ora 檔案。
vi $ORACLE_HOME/network/admin/listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/19.0.0/NTAP/network/admin/listener.ora # Generated by Oracle configuration tools. LISTENER.NTAP = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oras.internal.cloudapp.net)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = NTAP) ) ) SID_LIST_LISTENER.NTAP = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = NTAP_LA_DGMGRL.internal.cloudapp.net) (ORACLE_HOME = /u01/app/oracle/product/19.0.0/NTAP) (SID_NAME = NTAP) ) ) LISTENER = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = oras.internal.cloudapp.net)(PORT = 1521)) )
-
啟動 dbca 以從主資料庫 NTAP 實例化備用資料庫。
dbca -silent -createDuplicateDB -gdbName NTAP -primaryDBConnectionString orap.internal.cloudapp.net:1521/NTAP_NY.internal.cloudapp.net -sid NTAP -initParams fal_server=NTAP_NY -createAsStandby -dbUniqueName NTAP_LA
[oracle@oras admin]$ dbca -silent -createDuplicateDB -gdbName NTAP -primaryDBConnectionString orap.internal.cloudapp.net:1521/NTAP_NY.internal.cloudapp.net -sid NTAP -initParams fal_server=NTAP_NY -createAsStandby -dbUniqueName NTAP_LA Enter SYS user password: Prepare for db operation 22% complete Listener config step 44% complete Auxiliary instance creation 67% complete RMAN duplicate 89% complete Post duplicate database operations 100% complete Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/NTAP_LA/NTAP_LA.log" for further details.
-
驗證重複的備用資料庫。新複製的備用資料庫最初以唯讀模式開啟。
[oracle@oras admin]$ cat /etc/oratab # # This file is used by ORACLE utilities. It is created by root.sh # and updated by either Database Configuration Assistant while creating # a database or ASM Configuration Assistant while creating ASM instance. # A colon, ':', is used as the field terminator. A new line terminates # the entry. Lines beginning with a pound sign, '#', are comments. # # Entries are of the form: # $ORACLE_SID:$ORACLE_HOME:<N|Y>: # # The first and second fields are the system identifier and home # directory of the database respectively. The third field indicates # to the dbstart utility that the database should , "Y", or should not, # "N", be brought up at system boot time. # # Multiple entries with the same $ORACLE_SID are not allowed. # # NTAP:/u01/app/oracle/product/19.0.0/NTAP:N [oracle@oras admin]$ export ORACLE_SID=NTAP [oracle@oras admin]$ sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on Tue Nov 26 23:04:07 2024 Version 19.18.0.0.0 Copyright (c) 1982, 2022, Oracle. All rights reserved. Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.18.0.0.0 SQL> select name, open_mode from v$database; NAME OPEN_MODE --------- -------------------- NTAP READ ONLY SQL> show parameter name NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ cdb_cluster_name string cell_offloadgroup_name string db_file_name_convert string db_name string NTAP db_unique_name string NTAP_LA global_names boolean FALSE instance_name string NTAP lock_name_space string log_file_name_convert string pdb_file_name_convert string processor_group_name string NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ service_names string NTAP_LA.internal.cloudapp.net SQL> show parameter log_archive_config NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ log_archive_config string DG_CONFIG=(NTAP_NY,NTAP_LA) SQL> show parameter fal_server NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ fal_server string NTAP_NY SQL> select name from v$datafile; NAME -------------------------------------------------------------------------------- /u02/oradata/NTAP/system01.dbf /u02/oradata/NTAP/sysaux01.dbf /u02/oradata/NTAP/undotbs01.dbf /u02/oradata/NTAP/pdbseed/system01.dbf /u02/oradata/NTAP/pdbseed/sysaux01.dbf /u02/oradata/NTAP/users01.dbf /u02/oradata/NTAP/pdbseed/undotbs01.dbf /u02/oradata/NTAP/NTAP_pdb1/system01.dbf /u02/oradata/NTAP/NTAP_pdb1/sysaux01.dbf /u02/oradata/NTAP/NTAP_pdb1/undotbs01.dbf /u02/oradata/NTAP/NTAP_pdb1/users01.dbf NAME -------------------------------------------------------------------------------- /u02/oradata/NTAP/NTAP_pdb2/system01.dbf /u02/oradata/NTAP/NTAP_pdb2/sysaux01.dbf /u02/oradata/NTAP/NTAP_pdb2/undotbs01.dbf /u02/oradata/NTAP/NTAP_pdb2/users01.dbf /u02/oradata/NTAP/NTAP_pdb3/system01.dbf /u02/oradata/NTAP/NTAP_pdb3/sysaux01.dbf /u02/oradata/NTAP/NTAP_pdb3/undotbs01.dbf /u02/oradata/NTAP/NTAP_pdb3/users01.dbf 19 rows selected. SQL> select name from v$controlfile; NAME -------------------------------------------------------------------------------- /u02/oradata/NTAP/control01.ctl /u03/orareco/NTAP_LA/control02.ctl SQL> col member form a80 SQL> select group#, type, member from v$logfile order by 2, 1; GROUP# TYPE MEMBER ---------- ------- -------------------------------------------------------------------------------- 1 ONLINE /u03/orareco/NTAP_LA/onlinelog/o1_mf_1_mndl6mxh_.log 2 ONLINE /u03/orareco/NTAP_LA/onlinelog/o1_mf_2_mndl7jdb_.log 3 ONLINE /u03/orareco/NTAP_LA/onlinelog/o1_mf_3_mndl8f03_.log 4 STANDBY /u03/orareco/NTAP_LA/onlinelog/o1_mf_4_mndl99m7_.log 5 STANDBY /u03/orareco/NTAP_LA/onlinelog/o1_mf_5_mndlb67d_.log 6 STANDBY /u03/orareco/NTAP_LA/onlinelog/o1_mf_6_mndlc2tw_.log 7 STANDBY /u03/orareco/NTAP_LA/onlinelog/o1_mf_7_mndlczhb_.log 7 rows selected.
-
重新啟動備用資料庫 `mount`階段並執行以下命令來啟動備用資料庫管理復原。
alter database recover managed standby database disconnect from session;
SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> startup mount; ORACLE instance started. Total System Global Area 6442449688 bytes Fixed Size 9177880 bytes Variable Size 1090519040 bytes Database Buffers 5335154688 bytes Redo Buffers 7598080 bytes Database mounted. SQL> alter database recover managed standby database disconnect from session; Database altered.
-
驗證備用資料庫復原狀態。注意 `recovery logmerger`在 `APPLYING_LOG`行動。
SELECT ROLE, THREAD#, SEQUENCE#, ACTION FROM V$DATAGUARD_PROCESS;
SQL> SELECT ROLE, THREAD#, SEQUENCE#, ACTION FROM V$DATAGUARD_PROCESS; ROLE THREAD# SEQUENCE# ACTION ------------------------ ---------- ---------- ------------ post role transition 0 0 IDLE recovery apply slave 0 0 IDLE recovery apply slave 0 0 IDLE recovery apply slave 0 0 IDLE recovery apply slave 0 0 IDLE recovery logmerger 1 18 APPLYING_LOG managed recovery 0 0 IDLE RFS async 1 18 IDLE RFS ping 1 18 IDLE archive redo 0 0 IDLE redo transport timer 0 0 IDLE ROLE THREAD# SEQUENCE# ACTION ------------------------ ---------- ---------- ------------ gap manager 0 0 IDLE archive redo 0 0 IDLE archive redo 0 0 IDLE redo transport monitor 0 0 IDLE log writer 0 0 IDLE archive local 0 0 IDLE 17 rows selected. SQL>
這樣就完成了從主資料庫到備用資料庫的 NTAP 的 Data Guard 保護設置,並啟用了託管備用恢復。
設定 Data Guard Broker
Details
Oracle Data Guard 代理程式是一個分散式管理框架,可自動並集中執行 Oracle Data Guard 配置的建立、維護和監控。以下部分示範如何設定 Data Guard Broker 來管理 Data Guard 環境。
-
透過 sqlplus 使用以下命令在主資料庫和備用資料庫上啟動資料保護代理程式。
alter system set dg_broker_start=true scope=both;
-
從主資料庫,以 SYSDBA 身分連接到 Data Guard Borker。
[oracle@orap ~]$ dgmgrl sys@NTAP_NY DGMGRL for Linux: Release 19.0.0.0.0 - Production on Wed Dec 11 20:53:20 2024 Version 19.18.0.0.0 Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved. Welcome to DGMGRL, type "help" for information. Password: Connected to "NTAP_NY" Connected as SYSDBA. DGMGRL>
-
建立並啟用 Data Guard Broker 配置。
DGMGRL> create configuration dg_config as primary database is NTAP_NY connect identifier is NTAP_NY; Configuration "dg_config" created with primary database "ntap_ny" DGMGRL> add database NTAP_LA as connect identifier is NTAP_LA; Database "ntap_la" added DGMGRL> enable configuration; Enabled. DGMGRL> show configuration; Configuration - dg_config Protection Mode: MaxPerformance Members: ntap_ny - Primary database ntap_la - Physical standby database Fast-Start Failover: Disabled Configuration Status: SUCCESS (status updated 3 seconds ago)
-
在 Data Guard Broker 管理框架內驗證資料庫狀態。
DGMGRL> show database db1_ny; Database - db1_ny Role: PRIMARY Intended State: TRANSPORT-ON Instance(s): db1 Database Status: SUCCESS DGMGRL> show database db1_la; Database - db1_la Role: PHYSICAL STANDBY Intended State: APPLY-ON Transport Lag: 0 seconds (computed 1 second ago) Apply Lag: 0 seconds (computed 1 second ago) Average Apply Rate: 2.00 KByte/s Real Time Query: OFF Instance(s): db1 Database Status: SUCCESS DGMGRL>
如果發生故障,可以使用 Data Guard Broker 立即將主資料庫故障轉移到備用資料庫。如果 `Fast-Start Failover`啟用後,當偵測到故障時,Data Guard Broker 可以將主資料庫故障轉移到備用資料庫,而無需使用者乾預。
克隆備用資料庫以供其他用例使用
Details
在 Oracle Data Guard 設定中的 ANF 上託管 Oracle 備用資料庫的主要好處是,如果啟用了精簡克隆,則可以快速克隆該資料庫以服務許多其他用例,同時只需極少的額外儲存投資。 NetApp建議使用SnapCenter UI 工具來管理您的 Oracle DataGuard 資料庫。在下一節中,我們將示範如何使用NetApp SnapCenter工具對 ANF 上已安裝和還原的備用資料庫磁碟區進行快照和複製,以用於其他目的,例如 DEV、TEST、REPORT 等。
以下是使用SnapCenter從 Oracle Data Guard 中的託管實體備用資料庫複製 READ/WRITE 資料庫的進階流程。有關如何在 ANF 上設定和配置SnapCenter for Oracle 的詳細說明,請參閱 TR-4988"使用SnapCenter在 ANF 上進行 Oracle 資料庫備份、復原和克隆"了解詳情。
-
我們透過建立測試表並在主資料庫的測試表中插入一行來開始使用用例驗證。然後我們將驗證交易是否向下移動到待機狀態並最終到達克隆狀態。
[oracle@orap ~]$ sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on Wed Dec 11 16:33:17 2024 Version 19.18.0.0.0 Copyright (c) 1982, 2022, Oracle. All rights reserved. Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.18.0.0.0 SQL> alter session set container=ntap_pdb1; Session altered. SQL> create table test(id integer, dt timestamp, event varchar(100)); Table created. SQL> insert into test values(1, sysdate, 'a test transaction at primary database NTAP on DB server orap.internal.cloudapp.net'); 1 row created. SQL> commit; Commit complete. SQL> select * from test; ID ---------- DT --------------------------------------------------------------------------- EVENT -------------------------------------------------------------------------------- 1 11-DEC-24 04.38.44.000000 PM a test transaction at primary database NTAP on DB server orap.internal.cloudapp. net SQL> select instance_name, host_name from v$instance; INSTANCE_NAME ---------------- HOST_NAME ---------------------------------------------------------------- NTAP orap SQL>
-
在SnapCenter配置中,已將 unix 使用者(試用版為 azureuser)和 Azure 憑證(試用版為 azure_anf)新增至
Credential`在 `Settings
。 -
使用 azure_anf 憑證將 ANF 儲存體新增至
Storage Systems
。如果您的 Azure 訂閱中有多個 ANF 儲存帳戶,請確保您按一下下拉清單以選擇正確的儲存帳戶。我們為此示範建立了兩個專用的 Oracle 儲存帳戶。 -
所有 Oracle DB 伺服器均已新增至SnapCenter
Hosts
。克隆資料庫伺服器應該安裝和配置相同的 Oracle 軟體堆疊。在我們的測試案例中,Oracle 19C 軟體已安裝並配置,但未建立資料庫。 -
建立針對離線/掛載完整資料庫備份自訂的備份策略。
-
應用備份策略來保護備用資料庫
Resources`選項卡。最初發現時,資料庫狀態顯示為 `Not protected
。 -
您可以選擇手動觸發備份,或在套用備份策略後按設定的時間安排備份。
-
備份後,按一下資料庫名稱以開啟資料庫備份頁面。選擇用於資料庫克隆的備份並點擊 `Clone`按鈕啟動克隆工作流程。
-
選擇 `Complete Database Clone`並將克隆實例命名為 SID。
-
選擇克隆資料庫伺服器,該伺服器託管從備用資料庫克隆的資料庫。接受資料檔案、重做日誌的預設值。將控制檔放在 /u03 掛載點上。
-
基於作業系統的身份驗證不需要資料庫憑證。將 Oracle 主目錄設定與克隆 DB 伺服器上的配置進行比對。
-
如果需要,請變更克隆資料庫參數,例如降低克隆資料庫的 PGA 或 SGA 大小。指定複製之前要執行的腳本(如果有)。
-
輸入克隆後運行的SQL。在示範中,我們執行指令來關閉 dev/test/report 資料庫的資料庫存檔模式。
-
如果需要,請配置電子郵件通知。
-
查看摘要,點擊 `Finish`開始克隆。
-
監控複製作業 `Monitor`選項卡。我們觀察到克隆一個資料庫磁碟區大小約 950GB 的資料庫大約需要 14 分鐘。
-
從SnapCenter驗證克隆資料庫,該資料庫會立即在 `Resources`克隆操作後立即標籤。
-
從克隆資料庫伺服器查詢克隆資料庫。我們驗證了主資料庫中發生的測試事務已經傳遞到克隆資料庫。
[oracle@orac ~]$ sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on Wed Dec 11 20:16:09 2024 Version 19.18.0.0.0 Copyright (c) 1982, 2022, Oracle. All rights reserved. Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.18.0.0.0 SQL> select name, open_mode, log_mode from v$database; NAME OPEN_MODE LOG_MODE --------- -------------------- ------------ NTAPDEV READ WRITE NOARCHIVELOG SQL> select instance_name, host_name from v$instance; INSTANCE_NAME ---------------- HOST_NAME ---------------------------------------------------------------- NTAPDEV orac SQL> alter pluggable database all open; Pluggable database altered. SQL> alter pluggable database all save state; Pluggable database altered. SQL> alter session set container=ntap_pdb1; Session altered. SQL> select * from test; ID ---------- DT --------------------------------------------------------------------------- EVENT -------------------------------------------------------------------------------- 1 11-DEC-24 04.38.44.000000 PM a test transaction at primary database NTAP on DB server orap.internal.cloudapp. net
這完成了 Azure ANF 儲存體上的 Oracle Data Guard 中針對 DEV、TEST、REPORT 或任何其他用例的 Oracle 備用資料庫複製的演示。可以從 ANF 上的 Oracle Data Guard 中的同一個備用資料庫克隆多個 Oracle 資料庫。
在哪裡可以找到更多信息
要了解有關本文檔中描述的信息的更多信息,請查看以下文檔和/或網站:
-
Azure NetApp Files
-
TR-4988:使用SnapCenter在 ANF 上進行 Oracle 資料庫備份、復原和克隆
-
TR-4987:使用 NFS 在Azure NetApp Files上簡化、自動化 Oracle 部署
-
Oracle Data Guard 概念與管理