共用方式為


使用 Azure 檔案儲存體來備份和復原 Azure Linux VM 上的 Oracle Database

適用於:✔️ Linux VM

本文示範使用 Azure 檔案儲存體作為媒體,以備份和還原 Azure 虛擬機器 (VM) 上執行的 Oracle 資料庫。 本文中的步驟已在 Oracle 12.1 和更新版本上經過測試。

在本文中,您會使用 Oracle Recovery Manager (RMAN) 將資料庫備份至透過伺服器訊息區 (SMB) 通訊協定掛接至 VM 的 Azure 檔案共用。 使用 Azure 檔案儲存體作為備份媒體符合成本效益,效能又高。 不過,如果資料庫非常大,Azure 備份提供更好的解決方案。

必要條件

  • 若要執行備份和復原程序,您必須先建立已安裝 Oracle Database 執行個體的 Linux VM。 我們建議使用 Oracle 12.x 或更新版本。

  • 遵循在 Azure VM 中建立 Oracle Database 執行個體中的步驟,建立 Oracle Database 執行個體。

準備資料庫環境

  1. 若要對 VM 建立安全殼層 (SSH) 工作階段,請使用下列命令。 將 <publicIpAddress> 取代為 VM 的公用位址值。

    ssh azureuser@<publicIpAddress>
    
  2. 切換至根使用者:

    sudo su -
    
  3. oracle 使用者新增至 /etc/sudoers 檔案:

    echo "oracle   ALL=(ALL)      NOPASSWD: ALL" >> /etc/sudoers
    
  4. 此步驟假設您有一個 Oracle 執行個體 (test) 在名為 vmoracle19c 的 VM 上執行。

    切換至 oracle 使用者:

    sudo su - oracle
    
  5. 連線之前,請先設定環境變數 ORACLE_SID

    export ORACLE_SID=test;
    

    您也應該使用下列命令,將 ORACLE_SID 變數新增至 oracle 使用者的 .bashrc 檔案,供未來登入時使用:

    echo "export ORACLE_SID=test" >> ~oracle/.bashrc
    
  6. 啟動 Oracle 接聽程式 (如果尚未執行):

    lsnrctl start
    

    輸出應類似下列範例:

    LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 18-SEP-2020 03:23:49
    
    Copyright (c) 1991, 2019, Oracle.  All rights reserved.
    
    Starting /u01/app/oracle/product/19.0.0/dbhome_1/bin/tnslsnr: please wait...
    
    TNSLSNR for Linux: Version 19.0.0.0.0 - Production
    System parameter file is /u01/app/oracle/product/19.0.0/dbhome_1/network/admin/listener.ora
    Log messages written to /u01/app/oracle/diag/tnslsnr/vmoracle19c/listener/alert/log.xml
    Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=vmoracle19c.eastus.cloudapp.azure.com)(PORT=1521)))
    Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
    
    Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=vmoracle19c.eastus.cloudapp.azure.com)(PORT=1521)))
    STATUS of the LISTENER
    ------------------------
    Alias                     LISTENER
    Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production
    Start Date                18-SEP-2020 03:23:49
    Uptime                    0 days 0 hr. 0 min. 0 sec
    Trace Level               off
    Security                  ON: Local OS Authentication
    SNMP                      OFF
    Listener Parameter File   /u01/app/oracle/product/19.0.0/dbhome_1/network/admin/listener.ora
    Listener Log File         /u01/app/oracle/diag/tnslsnr/vmoracle19c/listener/alert/log.xml
    Listening Endpoints Summary...
     (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=vmoracle19c.eastus.cloudapp.azure.com)(PORT=1521)))
    (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
    The listener supports no services
    The command completed successfully
    
  7. 建立快速復原區域的位置:

    mkdir /u02/fast_recovery_area
    
  8. 連線至資料庫:

    sqlplus / as sysdba
    
  9. 啟動資料庫 (如果尚未執行):

    SQL> startup
    
  10. 設定快速復原區域的資料庫環境變數:

    SQL> alter system set db_recovery_file_dest_size=4096M scope=both;
    SQL> alter system set db_recovery_file_dest='/u02/fast_recovery_area' scope=both;
    
  11. 請確定資料庫處於 ARCHIVELOG 模式,以啟用線上備份。

    檢查記錄封存狀態:

    SQL> SELECT log_mode FROM v$database;
    
    LOG_MODE
    ------------
    NOARCHIVELOG
    

    如果記錄封存處於 NOARCHIVELOG 模式,請在 SQL Plus 中執行下列命令:

    SQL> SHUTDOWN IMMEDIATE;
    SQL> STARTUP MOUNT;
    SQL> ALTER DATABASE ARCHIVELOG;
    SQL> ALTER DATABASE OPEN;
    SQL> ALTER SYSTEM SWITCH LOGFILE;
    
  12. 建立資料表以測試備份和還原作業:

    SQL> create user scott identified by tiger quota 100M on users;
    SQL> grant create session, create table to scott;
    SQL> connect scott/tiger
    SQL> create table scott_table(col1 number, col2 varchar2(50));
    SQL> insert into scott_table VALUES(1,'Line 1');
    SQL> commit;
    SQL> quit
    

備份至 Azure 檔案儲存體

若要備份至 Azure 檔案儲存體,請完成下列步驟:

  1. 設定 Azure 檔案儲存體
  2. 將 Azure 檔案共用裝載至 VM
  3. 備份資料庫
  4. 還原和復原資料庫

設定 Azure 檔案儲存體

在本節中,您會使用 Oracle RMAN 將 Oracle 資料庫備份至 Azure 檔案儲存體。 Azure 檔案共用是位於雲端的完全受控檔案共用。 您可以使用 SMB 通訊協定或網路檔案系統 (NFS) 通訊協定來存取它們。

下列程序涵蓋建立使用 SMB 通訊協定掛接至 VM 的檔案共用。 關於如何使用 NFS 來掛接,相關資訊請參閱建立 NFS 共用

當您掛接 Azure 檔案共用時,請使用 cache=none 選項來停用檔案共用資料的快取。 若要確保 oracle 使用者擁有在共用中建立的檔案,請設定 uid=oraclegid=oinstall 選項。

設定儲存體帳戶:

  1. 在 Azure 入口網站中,選取 [+ 建立資源],然後搜尋並選取 [儲存體帳戶]

    Screenshot that shows where to create a resource and select a storage account.

  2. 在 [建立儲存體帳戶] 窗格上:

    1. 針對 [資源群組],選取現有的資源群組 rg-oracle
    2. 針對 [儲存體帳戶名稱],輸入 oracbkup1
    3. 確定 [位置] 設為與資源群組中所有其他資源相同的區域。
    4. 將 [效能] 設定為 [標準]
    5. 針對 [帳戶類型],請選取 [StorageV2 (一般用途 v2)]
    6. 針對 [複寫],請選取 [本地備援儲存體 (LRS)]

    Screenshot that shows basic information for creating a storage account.

  3. 選取 [進階] 索引標籤。在 [Azure 檔案儲存體] 底下,將 [大型檔案共用] 設定為 [已啟用]。 選取 [檢閱 + 建立],然後選取 [建立]。

    Screenshot that shows the tab for enabling large file shares.

  4. 建立儲存體帳戶時,請移至資源,然後選取 [檔案共用]

    Screenshot that shows where to select file shares for a resource.

  5. 選取 [+ 檔案共用],然後在 [新增檔案共用] 面板上:

    1. 針對 [名稱],輸入 orabkup1

    2. 將 [配額] 設定為 10240 gibibytes (GiB)。

      配額反映檔案共用的成長上限。 由於您在此範例中使用的是標準儲存體,因此資源會隨用隨付,且不會佈建。 因此,將配額設定為 10 tebibytes (TiB) 並不會產生超出您使用的成本。 如果您的備份策略需要更多儲存體,請將配額設定為足夠保存所有備份的層級。

    3. 在 [階層] 底下,選取[交易最佳化]

    4. 選取 建立

    Screenshot that shows selections for adding a new file share.

  6. 建立檔案共用時,請在 [檔案共用設定] 窗格上選取 [orabkup1]

  7. 選取 [連線] 索引標籤以開啟 [連線] 面板,然後選取 [Linux] 索引標籤。複製提供的命令,以使用 SMB 通訊協定掛接檔案共用。

    Screenshot that shows the panel for accessing the commands to connect a file share to a Linux computer.

將 Azure 檔案共用裝載至 VM

  1. 建立掛接點:

    sudo mkdir /mnt/orabackup
    
  2. 設定認證:

    if [ ! -d "/etc/smbcredentials" ]; then
     sudo mkdir /etc/smbcredentials
    fi
    
  3. 執行下列命令。 將 <Your Storage Account Key1> 取代為您稍早擷取的儲存體帳戶金鑰。

    if [ ! -f "/etc/smbcredentials/orabackup1.cred" ]; then
      sudo bash -c 'echo "username=orabackup1" >> /etc/smbcredentials/orabackup1.cred'
      sudo bash -c 'echo "password=<Your Storage Account Key1>" >> /etc/smbcredentials/orabackup1.cred'
    fi
    
  4. 變更認證檔案的權限:

    sudo chmod 600 /etc/smbcredentials/orabackup1.cred
    
  5. 將掛接新增至 /etc/fstab 檔案:

    sudo bash -c 'echo "//orabackup1.file.core.windows.net/orabackup /mnt/orabackup cifs nofail,vers=3.0,credentials=/etc/smbcredentials/orabackup1.cred,dir_mode=0777,file_mode=0777,serverino,cache=none,uid=oracle,gid=oinstall" >> /etc/fstab'
    
  6. 使用 SMB 通訊協定執行命令以掛接 Azure 檔案共用:

    sudo mount -t cifs //orabackup1.file.core.windows.net/orabackup /mnt/orabackup -o vers=3.0,credentials=/etc/smbcredentials/orabackup1.cred,dir_mode=0777,file_mode=0777,serverino,cache=none,uid=oracle,gid=oinstall
    

    如果您收到類似下列範例的錯誤,則您的 Linux 主機上可能不會安裝 Common Internet File System (CIFS) 套件:

    mount: wrong fs type, bad option, bad superblock on //orabackup1.file.core.windows.net/orabackup
    

    若要檢查是否已安裝 CIFS 套件,請執行下列命令:

    sudo rpm -qa|grep cifs-utils
    

    如果命令未傳回任何輸出,請使用下列命令安裝 CIFS 封裝。 然後重新執行 mount 命令以掛接 Azure 檔案共用。

    sudo yum install cifs-utils
    
  7. 使用下列命令檢查檔案共用是否已正確掛接:

    df -h
    

    輸出應看似此範例:

    $ df -h
    Filesystem                                    Size  Used Avail Use% Mounted on
    devtmpfs                                      3.3G     0  3.3G   0% /dev
    tmpfs                                         3.3G     0  3.3G   0% /dev/shm
    tmpfs                                         3.3G   17M  3.3G   1% /run
    tmpfs                                         3.3G     0  3.3G   0% /sys/fs/cgroup
    /dev/sda2                                      30G  9.1G   19G  34% /
    /dev/sdc1                                      59G  2.7G   53G   5% /u02
    /dev/sda1                                     497M  199M  298M  41% /boot
    /dev/sda15                                    495M  9.7M  486M   2% /boot/efi
    tmpfs                                         671M     0  671M   0% /run/user/54321
    /dev/sdb1                                      14G  2.1G   11G  16% /mnt/resource
    tmpfs                                         671M     0  671M   0% /run/user/54322
    //orabackup1.file.core.windows.net/orabackup   10T     0   10T   0% /mnt/orabackup
    

備份資料庫

在本節中,您會使用 Oracle RMAN 來完整備份資料庫和封存記錄。 接著,您會將備份寫入為先前所掛接 Azure 檔案共用的備份集。

  1. 設定 RMAN 以備份至 Azure 檔案儲存體掛接點:

    rman target /
    RMAN> configure snapshot controlfile name to '/mnt/orabkup/snapcf_ev.f';
    RMAN> configure channel 1 device type disk format '/mnt/orabkup/%d/Full_%d_%U_%T_%s';
    RMAN> configure channel 2 device type disk format '/mnt/orabkup/%d/Full_%d_%U_%T_%s';
    
  2. 在此範例中,您會將 RMAN 備份部分的大小限制為 4 GiB。 不過,RMAN 備份 maxpiecesize 值最多可達 4 TiB,這是 Azure 標準檔案共用和進階檔案共用的檔案大小限制。 如需詳細資訊,請參閱 Azure 檔案儲存體可擴縮性和效能目標

    RMAN> configure channel device type disk maxpiecesize 4000G;
    
  3. 確認組態變更詳細資料:

    RMAN> show all;
    
  4. 執行備份。 下列命令以壓縮格式的備份組建立完整資料庫備份,包括封存記錄檔:

    RMAN> backup as compressed backupset database plus archivelog;
    

您現在已使用 Oracle RMAN 在線上備份資料庫,且備份位於 Azure 檔案儲存體。 因為您要將備份儲存在 Azure 檔案儲存體中,因此如果您需要複製資料庫,則可以從其他 VM 存取備份。

雖然使用 RMAN 和 Azure 檔案儲存體進行資料庫備份有許多優點,但備份和還原時間取決於資料庫的大小。 對於非常大的資料庫,這些作業可能需要相當長的時間。

替代方式是透過 Azure 備份使用應用程式一致的 VM 備份。 此機制會使用快照集技術來執行快速備份,而不論資料庫大小為何。 與復原服務保存庫整合提供 Oracle Database 備份的雲端儲存體,因此您可以從其他 VM 和其他 Azure 區域存取它們。

還原和復原資料庫

  1. 關閉 Oracle 執行個體:

    sqlplus / as sysdba
    SQL> shutdown abort
    ORACLE instance shut down.
    
  2. 移除資料庫資料檔案:

    cd /u02/oradata/TEST
    rm -f *.dbf
    
  3. 下列命令使用 RMAN 來還原遺漏的資料檔案並復原資料庫:

    rman target /
    RMAN> startup mount;
    RMAN> restore database;
    RMAN> recover database;
    RMAN> alter database open;
    
  4. 檢查資料庫內容是否已完全復原:

    RMAN> SELECT * FROM scott.scott_table;
    

現在已完成在 Azure Linux VM 上備份和復原 Oracle Database 19c 資料庫。

刪除 VM

如果您不再需要 VM,則可以使用下列命令來移除資源群組、VM 和所有相關資源:

az group delete --name rg-oracle

下一步

建立高可用性 VM

探索適用於 VM 部署的 Azure CLI 範例