TR-5002 :使用 Azure NetApp Files 降低 Oracle Active Data Guard 成本
NetApp公司的Alleno Cao、Niyazz Mohamed
本解決方案提供使用 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 選項、因此需要另行授權。在 Active Data Guard 設定中、多個待命資料庫可以從主要資料庫接收資料複寫。不過、每個額外的待命資料庫都需要 Active Data Guard 授權、並需要額外的儲存空間作為主要資料庫的大小。營運成本迅速增加。
如果您熱衷於降低 Oracle 資料庫作業的成本,並打算在 Azure 雲端中設定 Active Data Guard ,您應該考慮另一種選擇。使用 Data Guard 取代 Active Data Guard ,將主要資料庫複寫到 Azure NetApp Files 儲存設備上的單一實體待命資料庫。之後,可複製此待命資料庫的多個複本,並開啟以供讀取 / 寫入存取,以處理許多其他使用案例,例如報告,開發,測試等。淨結果可有效提供 Active Data Guard 的功能,同時免除 Active Data Guard 授權。在本文件中,我們將示範如何在儲存設備上,使用現有的主要資料庫和實體待命資料庫來設定 Oracle Data Guard 。待機資料庫會根據需要透過 NetApp SnapCenter 資料庫管理工具進行備份及複製,以進行讀取 / 寫入存取,以供使用案例使用。NetApp 解決方案工程團隊也提供自動化工具套件,可根據使用者定義的排程重新整理複本,以實現完整,自動化的資料庫複製生命週期管理,無需使用者介入。
本解決方案可解決下列使用案例:
-
在 Azure 區域的 Microsoft Azure NetApp Files 儲存設備上,於主要資料庫和實體待命資料庫之間實作 Oracle Data Guard 。
-
備份及複製實體待命資料庫,以處理報告,開發,測試等使用案例
-
透過自動化管理 Oracle 資料庫複製更新生命週期管理。
目標對象
本解決方案適用於下列人員:
-
DBA 在 Azure 雲端中設定 Oracle Active Data Guard ,以實現高可用度,資料保護及災難恢復。
-
資料庫解決方案架構設計師,對 Azure 雲端中的 Oracle Active Data Guard 組態感興趣。
-
管理支援 Oracle Data Guard 的 Azure NetApp Files 儲存設備的儲存管理員。
-
喜歡在 Azure 雲端環境中站立 Oracle Data Guard 的應用程式擁有者。
解決方案測試與驗證環境
此解決方案的測試與驗證是在 Azure 雲端實驗室設定中執行,可能與實際的使用者部署環境不符。如需詳細資訊,請參閱一節 部署考量的關鍵因素。
架構
硬體與軟體元件
硬體 |
||
Azure NetApp Files |
Microsoft 目前提供的版本 |
兩個 3 TiB 容量集區,標準服務層級,自動 QoS |
適用於 DB 伺服器的 Azure VM |
標準 B4ms ( 4 個 vCPU 、 16 個 GiB 記憶體) |
三個 DB VM ,一個做為主要 DB 伺服器,一個做為備用 DB 伺服器,第三個做為複製 DB 伺服器 |
軟體 |
||
RedHat 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 組態、採用假設的紐約至洛杉磯 DR 設定
資料庫 |
* DB_UNIQUE 名稱 * |
* Oracle Net Service Name* |
主要 |
ntap_nY |
NTAP_NY.internal.cloudapp.net |
待命 |
ntap_lla |
NTAP_LA.internal.cloudapp.net |
部署考量的關鍵因素
-
* 備用資料庫複製 *從主要資料庫接收及套用交易記錄時,實體待命資料庫可以複製並掛載到 DB VM 上,以支援其他工作負載,例如開發,測試或報告。複本可以是精簡複本或完整複本。目前, anf 僅支援完整的待命資料庫複本複本複本。anf 精簡複製選項將於短期內推出。對於資料庫磁碟區的精簡複製複本,它會共用相同的 DB 待命資料庫磁碟區,並使用寫入時複製技術來服務寫入 IOS 。因此、複本具有極高的儲存效率、可用於許多其他使用案例、並可為新的寫入 IOS 分配最少且遞增的新儲存設備。如此可大幅減少 Active Data Guard 儲存設備佔用空間、進而大幅節省儲存成本。NetApp 建議在資料庫從主要儲存設備切換至待命 anf 儲存設備時,將 FlexClone 活動降至最低,以維持高層級的 Oracle 效能。
-
* Oracle 軟體需求。 * 一般而言、實體待命資料庫必須與主要資料庫具有相同的資料庫首頁版本、包括修補程式集例外( PSE )、重大修補程式更新( CPU )、 和 Patch Set Update ( PSU )、除非 Oracle Data Guard 備用先修補套用程序程序正在進行中(如 My Oracle Support 附註 1265700.1 中所述、網址為: "support.oracle.com"
-
* 備用資料庫目錄結構考量事項。 * 如果可能、主要和待命系統上的資料檔案、記錄檔和控制檔應具有相同的名稱和路徑名稱、並使用最佳彈性架構( OFA )命名慣例。待命資料庫上的歸檔目錄也應在站台之間相同、包括大小和結構。此策略可讓其他作業(例如備份、切換和容錯移轉)執行相同的步驟集、降低維護複雜度。
-
* 強制記錄模式。 * 若要防止無法傳播至待命資料庫的主要資料庫中未記錄的直接寫入,請在執行資料檔案備份以進行待命建立之前,先在主要資料庫中開啟強制記錄功能。
-
* Azure VM 規模調整 *在這些測試和驗證中,我們使用 Azure VM - Standard_B4ms ,搭配 4 個 vCPU 和 16 個 GiB 記憶體。您必須根據實際工作負載需求,適當調整 Azure DB VM 的大小,以符合 vCPU 數量和 RAM 數量。
-
* Azure NetApp Files 組態。 *Azure NetApp Files 在 Azure NetApp 儲存帳戶中配置為
Capacity Pools
。在這些測試和驗證中,我們部署了 3 個 TiB 容量集區,在東部地區主控 Oracle 主資料庫,並在西部 2 區部署備用資料庫。ANF 容量集區有三種服務層級:標準,高級和 Ultra 。 anf 容量集區的 IO 容量取決於容量集區大小及其服務層級。對於正式作業部署, NetApp 建議您對 Oracle 資料庫處理量需求進行完整評估,並據此調整資料庫容量集區大小。在建立容量集區時,您可以將 QoS 設定為自動或手動,而將資料加密設為 REST 單一或雙。 -
* DNFS 組態。 *透過使用 DNFS ,在 Azure 虛擬機器上執行的 Oracle 資料庫若搭配 ANF 儲存設備,可提供遠高於原生 NFS 用戶端的 I/O 。使用NetApp自動化工具套件自動部署Oracle、可在NFSv3上自動設定DNFS。
解決方案部署
假設您已將主要 Oracle 資料庫部署在 Vnet 內的 Azure 雲端環境中,做為設定 Oracle Data Guard 的起點。理想情況下,主要資料庫會部署在具有 NFS 裝載的 anf 儲存設備上。為 Oracle 資料庫儲存設備建立三個 NFS 裝載點:裝載 /u01 用於 Oracle 二進位檔案,裝載 /u02 用於 Oracle 資料檔案和控制檔,裝載 /u03 用於 Oracle 目前和歸檔的記錄檔,以及備援控制檔。
您的主要 Oracle 資料庫也可以在 NetApp ONTAP 儲存設備上執行,或是在 Azure 生態系統或私有資料中心內執行任何其他選擇儲存設備。下節提供逐步部署程序,可在 Azure 的主要 Oracle DB 之間設定 Oracle Data Guard ,將 ANF 儲存設備設定至 Azure 中的實體備用 Oracle DB ,並提供 ANF 儲存設備。
部署的先決條件
Details
部署需要下列先決條件。
-
Azure 雲端帳戶已設定完成,您的 Azure 帳戶已建立必要的 vnet 和網路子網路。
-
從 Azure 雲端入口網站主控台,您至少需要部署三個 Azure Linux VM ,一個做為主要 Oracle DB 伺服器,一個做為備用 Oracle DB 伺服器,以及一個複製目標 DB 伺服器來進行報告,開發和測試等。如需環境設定的詳細資訊,請參閱上一節的架構圖表。另請參閱 Microsoft "Azure虛擬機器" 以取得更多資訊。
-
主 Oracle 資料庫應已安裝並設定在主 Oracle DB 伺服器中。另一方面,在備用 Oracle DB 伺服器或複製 Oracle DB 伺服器中,只會安裝 Oracle 軟體,而且不會建立 Oracle 資料庫。理想情況下, Oracle 檔案目錄配置應完全符合所有 Oracle DB 伺服器。如需有關 NetApp 在 Azure 雲端和 ANF 中自動部署 Oracle 的建議詳細資訊,請參閱下列技術報告以取得協助。
-
"TR-4987 :簡化的自動化 Azure NetApp Files NFS 部署"
請確定您已在 Azure VM 根 Volume 中至少分配 128G ,以便有足夠的空間來存放 Oracle 安裝檔案。
-
-
從 Azure 雲端入口網站主控台,部署兩個 ANF 儲存容量集區來主控 Oracle 資料庫磁碟區。ANF 儲存容量集區應位於不同區域,以模擬真正的 DataGuard 組態。如果您不熟悉儲存設備的部署,請參閱文件中的"快速入門:設定Azure NetApp Files 功能以建立NFS磁碟區"逐步說明。
-
當主要 Oracle 資料庫和備用 Oracle 資料庫位於兩個不同區域時,應設定 VPN 閘道,以允許兩個不同 VN 之間的資料流量傳輸。Azure 中的詳細網路組態已超出本文件的範圍。下列螢幕擷取畫面提供一些參考資料,說明 VPN 閘道的設定,連線方式,以及資料流量在實驗室中的確認方式。
實驗室 VPN 閘道:
主要 vnet 閘道:
Vnet 閘道連線狀態:
驗證是否已建立流量傳輸(按一下三個點以開啟頁面):
準備 Data Guard 的主要資料庫
Details
在本示範中,我們在主要 Azure DB 伺服器上設定了名為 NTAP 的主要 Oracle 資料庫,其中包含三個 NFS 裝載點: Oracle 二進位 /u01 , Oracle 資料檔案 /u02 , 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 使用者身分登入主要 DB 伺服器。透過 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 中,啟用主要 DB 上的回溯功能。回溯功能可讓您在容錯移轉後、輕鬆將主要資料庫恢復為待命狀態。
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 名稱來進行名稱解析。
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 需要作業系統核心組態和 Oracle 軟體堆疊,包括待機 DB 伺服器上的修補程式集,才能與主要 DB 伺服器相符。為了便於管理和簡化,備用 DB 伺服器的資料庫儲存組態理想上也應與主要 DB 伺服器相符,例如資料庫目錄配置和 NFS 裝載點的大小。以下是設定備用 Oracle DB 伺服器和啟動 Oracle DataGuard for HA/DR 保護的詳細程序。所有命令都應作爲默認的 Oracle 所有者用戶 ID 執行 oracle
。
-
首先,請檢閱主要 Oracle DB 伺服器上的主要資料庫組態。在本示範中,我們已在主要 DB 伺服器中設定名為 NTAP 的主要 Oracle 資料庫,並在 anf 儲存設備上安裝三個 NFS 。
-
如果您按照 NetApp 文檔編號 TR-4987 來設置 Oracle 備用 DB 服務器"TR-4987 :簡化的自動化 Azure NetApp Files NFS 部署",請使用中步驟 2 中的 `Playbook execution`標記 `-t software_only_install`來運行自動 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 Broker 是一套分散式管理架構、可自動化及集中建立、維護及監控 Oracle Data Guard 組態。以下章節示範如何設定 Data Guard Broker 來管理 Data Guard 環境。
-
透過 sqlplus 執行下列命令,即可在主要和待命資料庫上啟動資料保護代理程式。
alter system set dg_broker_start=true scope=both;
-
從主要資料庫連線至 Data Guard Borker 、做為 SYSDBA 。
[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 上快照及複製掛載及還原待命資料庫磁碟區。
以下是使用 SnapCenter 從 Oracle Data Guard 中的託管實體待命資料庫複製讀寫資料庫的高階程序。如需如何在 ANF 上設定和設定 SnapCenter for Oracle 的詳細說明,請參閱 TR-4988 "Oracle 資料庫備份、恢復及複製、透過 SnapCenter 進行" 以取得詳細資料。
-
我們會建立測試表格,並在主要資料庫的測試表格中插入一列,以開始使用 usecase 驗證。接著我們會驗證交易是否會向下移至待機狀態,最後再驗證複製作業。
[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 組態中,已在中
Settings`新增 UNIX 使用者(用於示範的 azureuser )和 Azure 認證(用於示範的 azure_anf ) `Credential
。 -
使用 azure_anf 認證將 anf 儲存設備新增至
Storage Systems
。如果 Azure 子功能中有多個 ANF 儲存帳戶,請務必按一下下拉式清單,選擇正確的儲存帳戶。我們已為本示範建立兩個專屬的 Oracle 儲存帳戶。 -
所有 Oracle DB 伺服器都已新增至 SnapCenter
Hosts
。Clone DB 伺服器應安裝並設定同類型的 Oracle 軟體堆疊。在我們的測試案例中,已安裝並設定 Oracle 19C 軟體,但未建立資料庫。 -
建立專為離線 / 掛載完整資料庫備份量身打造的備份原則。
-
套用備份原則以保護索引標籤中的待命資料庫
Resources
。最初發現時,資料庫狀態會顯示為Not protected
。 -
您可以選擇手動觸發備份,或是在套用備份原則之後,於設定的時間將備份排程。
-
備份後,按一下資料庫名稱以開啟資料庫備份頁面。選取要用於資料庫複製的備份,然後按一下 `Clone`按鈕以啟動複製工作流程。
-
選取 `Complete Database Clone`並命名複製執行個體的 SID 。
-
選取複製資料庫伺服器,此伺服器會從待命資料庫主控複製的資料庫。接受資料檔案的預設值,重做記錄檔。將控制檔放在 /u03 掛載點上。
-
作業系統型驗證不需要資料庫認證。將 Oracle 主目錄設定與複製資料庫伺服器上設定的項目配對。
-
視需要變更複製資料庫參數,例如降低複製資料庫的 PGA 或 SGA 大小。指定要在複製前執行的指令碼(如果有)。
-
輸入 SQL 以在複製後執行。在示範中、我們執行命令來關閉開發 / 測試 / 報告資料庫的資料庫歸檔模式。
-
視需要設定電子郵件通知。
-
檢閱摘要、按一下
Finish
以開始複製。 -
在標籤中監控複製工作
Monitor
。我們觀察到、複製資料庫約 950 GB 的資料庫磁碟區大小約需 14 分鐘。 -
從 SnapCenter 驗證複製資料庫、此資料庫會立即在中登錄
Resources
在複製作業後立即按下 Tab 鍵。 -
從複製資料庫伺服器查詢複製資料庫。我們已驗證在主要資料庫中發生的測試交易已向下瀏覽至複製資料庫。
[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 中展示 Oracle 備用資料庫複本的示範,以供開發,測試,報告或任何其他使用案例使用。可在 ANF 上的 Oracle Data Guard 中,將多個 Oracle 資料庫複製到同一個待命資料庫。
何處可找到其他資訊
若要深入瞭解本文件所述資訊、請參閱下列文件及 / 或網站:
-
Azure NetApp Files
-
TR-4988 : Oracle 資料庫備份、還原及複製、透過 SnapCenter 進行
-
TR-4987 :簡化的自動化 Azure NetApp Files NFS 部署
-
Oracle Data Guard 概念與管理