Skip to main content
NetApp database solutions
本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。

TR-5002:使用Azure NetApp Files降低 Oracle Active Data Guard 成本

貢獻者 netapp-revathid kevin-hoke

該解決方案提供了使用 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 雲端實驗室設定中進行的,該設定可能與實際使用者部署環境不符。有關更多信息,請參閱部署考慮的關鍵因素

架構

此圖提供了 ANF 上的 Azure 雲端中 Oracle Data Guard 實作的詳細圖片。

硬體和軟體組件

硬體

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

部署需要以下先決條件。

  1. 已設定 Azure 雲端帳戶,並在您的 Azure 帳戶內建立了必要的 VNet 和網路子網路。

  2. 從 Azure 雲端入口網站控制台,您需要部署至少三個 Azure Linux VM,一個作為主 Oracle DB 伺服器,一個作為備用 Oracle DB 伺服器,以及一個用於報表、開發和測試等的複製目標 DB 伺服器。有關環境設定的更多詳細信息,請參閱上一節中的體系結構圖。也審查了微軟"Azure 虛擬機"了解更多。

  3. 主 Oracle 資料庫應該已經在主 Oracle DB 伺服器中安裝並配置。另一方面,在備用 Oracle DB 伺服器或複製 Oracle DB 伺服器中,僅安裝了 Oracle 軟體,而沒有建立 Oracle 資料庫。理想情況下,Oracle 檔案目錄佈局應該與所有 Oracle DB 伺服器完全相符。有關NetApp對 Azure 雲端和 ANF 中自動化 Oracle 部署的建議的詳細信息,請參閱以下技術報告以取得協助。

  4. 從 Azure 雲端入口網站控制台部署兩個 ANF 儲存容量池來託管 Oracle 資料庫磁碟區。 ANF 儲存容量池應位於不同的區域,以模擬真正的 DataGuard 配置。如果您不熟悉 ANF 儲存的部署,請參閱文檔"快速入門:設定Azure NetApp Files並建立 NFS 卷"以獲得逐步說明。

    顯示 Azure 環境配置的螢幕截圖。

  5. 當主 Oracle 資料庫和備用 Oracle 資料庫位於兩個不同的區域時,應配置 VPN 閘道以允許兩個單獨的 VNet 之間的資料流量流動。 Azure 中的詳細網路配置超出了本文檔的範圍。以下螢幕截圖提供了有關如何在實驗室中設定、連接 VPN 閘道以及如何確認資料流量流動的一些參考。

    實驗室 VPN 閘道:顯示 Azure 環境配置的螢幕截圖。

    主 VNet 閘道:顯示 Azure 環境配置的螢幕截圖。

    Vnet網關連線狀態:顯示 Azure 環境配置的螢幕截圖。

    驗證流量是否已建立(點擊三個點開啟頁面):顯示 Azure 環境配置的螢幕截圖。

為 Data Guard 準備主資料庫

Details

在此示範中,我們在主 Azure DB 伺服器上設定了一個名為 NTAP 的主 Oracle 資料庫,它具有三個 NFS 裝入點:/u01 用於 Oracle 二進位文件,/u02 用於 Oracle 資料檔案和 Oracle 控製文件,/u03 用於 Oracle 活動日誌、存檔 Oracle 檔案和冗餘日誌檔案和冗餘日誌檔案。以下說明了為 Oracle Data Guard 保護設定主資料庫的詳細流程。所有步驟都應以 Oracle 資料庫擁有者或預設使用者身分執行 `oracle`用戶。

  1. 主 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
  2. 以 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.
  3. 從 sqlplus,在主資料庫上啟用閃回。閃回功能允許在故障轉移後輕鬆地將主資料庫還原為備用資料庫。

    alter database flashback on;
    SQL> alter database flashback on;
    
    Database altered.
  4. 使用 Oracle 密碼文件設定重做傳輸驗證 - 如果未設置,則使用 orapwd 公用程式在主伺服器上建立 pwd 文件,並將其複製到備用資料庫 $ORACLE_HOME/dbs 目錄。

  5. 在主資料庫上建立與目前線上日誌檔案大小相同的備用重做日誌。日誌組比線上日誌檔案組多一個。然後,當發生故障轉移時,主資料庫可以快速轉換到備用角色並開始接收重做資料。重複以下指令四次,建立四個備用日誌檔案。

    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
  6. 從 sqlplus,從 spfile 建立一個 pfile 進行編輯。

    create pfile='/home/oracle/initNTAP.ora' from spfile;
  7. 修改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
  8. 從 sqlplus 中,從修改後的 pfile 重新建立 spfile 以覆寫 $ORACLE_HOME/dbs 目錄中現有的 spfile。

    create spfile='$ORACLE_HOME/dbs/spfileNTAP.ora' from pfile='/home/oracle/initNTAP.ora';
  9. 修改 $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 伺服器命名為與預設名稱不同的名稱,請將名稱新增至本機主機檔案以進行主機名稱解析。
  10. 將主資料庫的資料保護服務名稱 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)
        )
      )
  11. 透過 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

  1. 首先,檢查主 Oracle DB 伺服器上主資料庫的配置。在此示範中,我們在主 DB 伺服器中設定了一個名為 NTAP 的主 Oracle 資料庫,並在 ANF 儲存體上安裝了三個 NFS。

  2. 如果您依照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
  3. 演示實驗室中備用站點的備用 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
  4. 安裝並配置 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 .
  5. 使用以下條目更新 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)
        )
      )
  6. 將 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))
      )
  7. 啟動 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.
  8. 驗證重複的備用資料庫。新複製的備用資料庫最初以唯讀模式開啟。

    [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.
  9. 重新啟動備用資料庫 `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.
  10. 驗證備用資料庫復原狀態。注意 `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 環境。

  1. 透過 sqlplus 使用以下命令在主資料庫和備用資料庫上啟動資料保護代理程式。

    alter system set dg_broker_start=true scope=both;
  2. 從主資料庫,以 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>
  3. 建立並啟用 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)
  4. 在 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 資料庫備份、復原和克隆"了解詳情。

  1. 我們透過建立測試表並在主資料庫的測試表中插入一行來開始使用用例驗證。然後我們將驗證交易是否向下移動到待機狀態並最終到達克隆狀態。

    [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>
  2. 在SnapCenter配置中,已將 unix 使用者(試用版為 azureuser)和 Azure 憑證(試用版為 azure_anf)新增至 Credential`在 `Settings

    螢幕截圖顯示了 GUI 中的此步驟。

  3. 使用 azure_anf 憑證將 ANF 儲存體新增至 Storage Systems。如果您的 Azure 訂閱中有多個 ANF 儲存帳戶,請確保您按一下下拉清單以選擇正確的儲存帳戶。我們為此示範建立了兩個專用的 Oracle 儲存帳戶。

    螢幕截圖顯示了 GUI 中的此步驟。

  4. 所有 Oracle DB 伺服器均已新增至SnapCenter Hosts

    螢幕截圖顯示了 GUI 中的此步驟。

    註 克隆資料庫伺服器應該安裝和配置相同的 Oracle 軟體堆疊。在我們的測試案例中,Oracle 19C 軟體已安裝並配置,但未建立資料庫。
  5. 建立針對離線/掛載完整資料庫備份自訂的備份策略。

    螢幕截圖顯示了 GUI 中的此步驟。

  6. 應用備份策略來保護備用資料庫 Resources`選項卡。最初發現時,資料庫狀態顯示為 `Not protected

    螢幕截圖顯示了 GUI 中的此步驟。

  7. 您可以選擇手動觸發備份,或在套用備份策略後按設定的時間安排備份。

    螢幕截圖顯示了 GUI 中的此步驟。

  8. 備份後,按一下資料庫名稱以開啟資料庫備份頁面。選擇用於資料庫克隆的備份並點擊 `Clone`按鈕啟動克隆工作流程。

    螢幕截圖顯示了 GUI 中的此步驟。

  9. 選擇 `Complete Database Clone`並將克隆實例命名為 SID。

    螢幕截圖顯示了 GUI 中的此步驟。

  10. 選擇克隆資料庫伺服器,該伺服器託管從備用資料庫克隆的資料庫。接受資料檔案、重做日誌的預設值。將控制檔放在 /u03 掛載點上。

    螢幕截圖顯示了 GUI 中的此步驟。

  11. 基於作業系統的身份驗證不需要資料庫憑證。將 Oracle 主目錄設定與克隆 DB 伺服器上的配置進行比對。

    螢幕截圖顯示了 GUI 中的此步驟。

  12. 如果需要,請變更克隆資料庫參數,例如降低克隆資料庫的 PGA 或 SGA 大小。指定複製之前要執行的腳本(如果有)。

    螢幕截圖顯示了 GUI 中的此步驟。

  13. 輸入克隆後運行的SQL。在示範中,我們執行指令來關閉 dev/test/report 資料庫的資料庫存檔模式。

    螢幕截圖顯示了 GUI 中的此步驟。

  14. 如果需要,請配置電子郵件通知。

    螢幕截圖顯示了 GUI 中的此步驟。

  15. 查看摘要,點擊 `Finish`開始克隆。

    螢幕截圖顯示了 GUI 中的此步驟。

  16. 監控複製作業 `Monitor`選項卡。我們觀察到克隆一個資料庫磁碟區大小約 950GB 的資料庫大約需要 14 分鐘。

    螢幕截圖顯示了 GUI 中的此步驟。

  17. 從SnapCenter驗證克隆資料庫,該資料庫會立即在 `Resources`克隆操作後立即標籤。

    螢幕截圖顯示了 GUI 中的此步驟。

  18. 從克隆資料庫伺服器查詢克隆資料庫。我們驗證了主資料庫中發生的測試事務已經傳遞到克隆資料庫。

    [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 資料庫。

在哪裡可以找到更多信息

要了解有關本文檔中描述的信息的更多信息,請查看以下文檔和/或網站: