使用 Azure 備份來備份和復原 Azure Linux VM 上的 Oracle Database

適用於:✔️ Linux VM

本文示範如何使用 Azure 備份來擷取虛擬機器 (VM) 磁碟的磁碟快照集,其中包括 Oracle 資料庫檔案和 Oracle 快速復原區域。 藉由使用 Azure 備份,您可以擷取適合備份的完整磁碟快照集,並儲存在復原服務保存庫

Azure 備份也會提供應用程式一致的備份,確保資料還原不需要更多修正程式。 應用程式一致備份適用於檔案系統和 Oracle 自動儲存體管理 (ASM) 資料庫。

還原應用程式一致資料可減少還原時間,讓您可以快速回到執行狀態。 還原之後仍需要 Oracle 資料庫復原。 您可以使用擷取並儲存在個別 Azure 檔案共用中的 Oracle 封存重做記錄檔來加速復原。

本文將逐步引導您完成下列工作:

  • 使用應用程式一致的備份來備份資料庫。
  • 從復原點還原和復原資料庫。
  • 從復原點還原 VM。

必要條件

準備環境

若要準備環境,請完成下列步驟:

  1. 連接至 VM
  2. 設定 Azure 檔案儲存體
  3. 準備資料庫

連線至 VM

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

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

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

    echo "oracle   ALL=(ALL)      NOPASSWD: ALL" >> /etc/sudoers
    

為 Oracle 封存重做記錄檔設定 Azure 檔案儲存體

Oracle 資料庫執行個體的封存重做記錄檔在資料庫復原中扮演重要角色。 他們會儲存過去從資料庫快照集向前復原所需的認可交易。

當資料庫處於 ARCHIVELOG 模式時,它會在資料庫變成完整且切換時封存線上重做記錄檔的內容。 當資料庫遺失時,需要與備份一起才能實現時間點復原。

Oracle 提供將重做記錄檔封存到不同位置的功能。 業界最佳做法是,至少其中一個目的地應該位於遠端儲存體上,因此它與主機儲存體分開,並受到獨立快照集的保護。 Azure 檔案儲存體服務符合這些需求。

Azure 檔案共用是您使用伺服器訊息塊 (SMB) 或網路檔案系統 (NFS) 通訊協定,附加至 Linux 或 Windows VM 作為一般檔案系統元件的儲存體。 若要在 Linux 上設定 Azure 檔案共用 (使用 SMB 3.0 通訊協定作為封存記錄儲存體),請參閱 在 Linux 上掛接 SMB Azure 檔案共用。 當您完成設定時,請返回本指南並完成所有剩餘的步驟。

準備資料庫

此流程的這個部分假設您遵循在 Azure VM 中建立 Oracle 資料庫執行個體。 因此:

  • 您有一個名為 oratest1 的 Oracle 執行個體,該執行個體在名為 vmoracle19c 的 VM 上執行。
  • 您使用的是標準 Oracle oraenv 指令碼,其相依於標準 Oracle 設定檔 /etc/oratab,以在殼層工作階段中設定環境變數。

針對 VM 上的每個資料庫執行下列步驟:

  1. 切換至 oracle 使用者:

     sudo su - oracle
    
  2. 執行 oraenv 指令碼來設定環境變數 ORACLE_SID。 它會提示您輸入 ORACLE_SID 名稱。

    . oraenv
    
  3. 將 Azure 檔案共用新增為資料庫封存記錄檔的另一個目的地。

    此步驟假設您已在 Linux VM 上設定並掛接 Azure 檔案共用。 針對安裝在 VM 上的每個資料庫,建立以資料庫安全性識別碼 (SID) 命名的子目錄。

    在這裡範例中,載入點名稱為 /backup,而 SID 為 oratest1。 因此,您會建立子目錄 /backup/oratest1,並將所有權變更為 oracle 使用者。 以您的掛接點名稱和資料庫 SID 取代 /backup/SID

    sudo mkdir /backup/oratest1
    sudo chown oracle:oinstall /backup/oratest1
    
  4. 連線至資料庫:

    sqlplus / as sysdba
    
  5. 如果資料庫尚未執行,請啟動資料庫:

    SQL> startup
    
  6. 將資料庫的第一個封存記錄目的地設為您稍早建立的檔案共用目錄:

    SQL> alter system set log_archive_dest_1='LOCATION=/backup/oratest1' scope=both;
    
  7. 定義資料庫的復原點目標 (RPO)。

    若要達到一致的 RPO,請考慮線上重做記錄檔的封存頻率。 這些因素控制頻率:

    • 線上重做記錄檔的大小。 當線上記錄檔已滿時,會切換並封存。 線上記錄檔愈大,填滿所需的時間就越長。 新增的時間會降低封存產生的頻率。
    • ARCHIVE_LAG_TARGET 參數的設定可控制必須切換和封存目前線上記錄檔之前的允許最大秒數。

    為了將切換和封存的頻率降到最低,以及隨附的檢查點作業,Oracle 線上重做記錄檔具有較大的大小 (例如 1,024M、4,096M 或 8,192M)。 在忙碌的資料庫環境中,記錄仍可能每隔幾秒鐘或幾分鐘切換和封存一次。 在較不活躍的資料庫中,在封存最近交易前數小時或數天,這會大幅降低封存頻率。

    建議您設定 ARCHIVE_LAG_TARGET 以確保一致的 RPO。 5 分 (300 秒) 的設定是 ARCHIVE_LAG_TARGET 的謹慎值。 它可確保任何資料庫復原作業都可以在失敗後的 5 分鐘內復原。

    若要設定 ARCHIVE_LAG_TARGET,請執行此命令:

    SQL> alter system set archive_lag_target=300 scope=both;
    

    若要進一步了解如何以零 RPO 在 Azure 部署高可用性 Oracle Database 執行個體,請參閱 Oracle Database 的參考架構

  8. 請確定資料庫處於封存記錄模式,以啟用線上備份。

    先檢查記錄封存狀態:

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

    如果處於 NOARCHIVELOG 模式,請執行下列命令:

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

    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 備份服務提供解決方案來備份您的資料,並從 Microsoft Azure 雲端進行復原。 Azure 備份提供獨立、隔離的備份,可防止原始資料意外損毀。 備份會儲存在復原服務保存庫中,並進行內建的復原點管理,因此您可以視需要還原。

在本節中,您會使用 Azure 備份來擷取執行中 VM 和 Oracle Database 執行個體的應用程式一致快照集。 資料庫會進入備份模式,以便在 Azure 備份建立 VM 磁碟的快照集時,進行交易一致的線上備份。 快照集是儲存體的完整複本,而不是增量或寫入時複製的快照集。 這是從中還原資料庫的有效媒介。

使用 Azure 備份應用程式一致快照集的優點是,無論資料庫有多大,都快要採取快照集。 您可以立即將快照集用於還原作業,而不需要等待它傳輸至復原服務保存庫。

若要使用 Azure 備份來備份資料庫,請完成下列步驟:

  1. 瞭解 Azure 備份架構
  2. 為應用程式一致的備份準備環境
  3. 設定應用程式一致的備份
  4. 觸發 VM 的應用程式一致備份

瞭解 Azure 備份架構

Azure 備份服務提供架構,在針對 Oracle 和 MySQL 等各種應用程式備份 Windows和 Linux VM 期間,實現應用程式的一致性。 此架構牽涉到叫用前置指令碼以在擷取磁碟快照集之前停止應用程式。 它會呼叫後置指令碼,以在快照集完成後解除凍結應用程式。

Microsoft 已增強架構,讓 Azure 備份服務為選取的應用程式提供封裝的前置指令碼和後置指令碼。 這些前置指令碼和後置指令碼已經載入 Linux 映像上,因此您不需要安裝任何指令碼。 您只要指定應用程式,然後 Azure 備份會自動叫用相關的指令碼。 Microsoft 會管理封裝的前置指令碼和後置指令碼,因此您可以確信其支援、所有權及有效性。

目前,增強架構支援的應用程式是 Oracle 12.x 或更新版本和 MySQL。 如需詳細資訊,請參閱受控 Azure VM 備份的支援矩陣

您可以撰寫自己的指令碼,以便 Azure 備份與 12.x 之前的資料庫搭配使用。 GitHub提供範例指令碼。

每次執行備份時,增強架構都會在 VM 上安裝的所有 Oracle 資料庫執行個體上執行前置指令碼和後置指令碼。 workload.conf 檔案中的參數 configuration_path 會指向 Oracle /etc/oratab 檔案的位置 (或遵循 oratab 語法的使用者定義檔案)。 如需詳細資料,請參閱設定應用程式一致的備份

Azure 備份會針對 configuration_path 指向之檔案中列出的每個資料庫執行前置指令碼和後置指令碼。 例外狀況是以 # 開頭的行 (被視為註解) 或 +ASM (Oracle ASM 執行個體)。

Azure 備份增強架構會採用以 ARCHIVELOG 模式運作的 Oracle 資料庫執行個體線上備份。 前置指令碼和後置指令碼會使用 ALTER DATABASE BEGINEND BACKUP 命令來達到應用程式一致性。

若要讓資料庫備份保持一致,NOARCHIVELOG 模式中的資料庫必須在快照集啟動之前完全關閉。

為應用程式一致的備份準備環境

Oracle Database 會採用作業角色分隔,以使用最低權限來區分職責。 它會將個別的作業系統 (OS) 群組與個別的資料庫系統管理角色產生關聯。 然後,用戶可以根據 OS 群組中的成員資格,授與他們不同的資料庫權限。

SYSBACKUP 資料庫角色 (一般名稱 OSBACKUPDBA) 提供有限的權限,以在資料庫中執行備份作業。 Azure 備份需要它。

在 Oracle 安裝期間,建議您使用 backupdba 作為 OS 群組名稱,以與 SYSBACKUP 角色產生關聯。 但是您可以使用任何名稱,因此您需要先判斷代表 Oracle SYSBACKUP 角色的 OS 群組名稱。

  1. 切換至 oracle 使用者:

    sudo su - oracle
    
  2. 設定 Oracle 環境:

    export ORACLE_SID=oratest1
    export ORAENV_ASK=NO
    . oraenv
    
  3. 判斷代表 Oracle SYSBACKUP 角色的 OS 群組名稱:

    grep "define SS_BKP" $ORACLE_HOME/rdbms/lib/config.c
    

    輸出會看似像以下範例:

    #define SS_BKP_GRP "backupdba"
    

    在輸出中,以雙引弧括住的值是 Oracle SYSBACKUP 角色在外部驗證的 Linux OS 群組名稱。 在此範例中為 backupdba。 記下實際值。

  4. 執行下列命令來確認 OS 群組是否存在。 將 <group name> 取代為上一個命令傳回的值 (不含引號)。

    grep <group name> /etc/group
    

    輸出會看似像以下範例:

    backupdba:x:54324:oracle
    

    重要

    如果輸出不符合您在步驟 3 中擷取的 Oracle OS 群組值,請使用下列命令來建立代表 Oracle SYSBACKUP 角色的 OS 群組。 以您在步驟 3 中擷取的群組名稱取代 <group name>

    sudo groupadd <group name>
    
  5. 建立名為 azbackup 的新備份使用者,該用戶屬於您在先前步驟中驗證或建立的 OS 群組。 以已驗證群組名稱取代 <group name>。 使用者也會新增至 oinstall 群組,以便開啟 ASM 磁碟。

    sudo useradd -g <group name> -G oinstall azbackup
    
  6. 為新的備份使用者設定外部驗證。

    備份使用者 azbackup 必須使用外部驗證來存取資料庫,因此密碼不會受到挑戰。 若要啟用此存取,您必須建立透過 azbackup 向外部驗證的資料庫使用者。 資料庫會針對您需要尋找的使用者名稱使用前置詞。

    針對安裝在 VM 上的每個資料庫執行下列步驟:

    1. 使用 SQL Plus 登入資料庫,並檢查外部驗證的預設設定:

      sqlplus / as sysdba
      SQL> show parameter os_authent_prefix
      SQL> show parameter remote_os_authent
      

      輸出看起來應該像這個範例,其會將 ops$ 顯示為資料庫使用者名稱前置詞:

      NAME                                 TYPE        VALUE
      ------------------------------------ ----------- ------------------------------
      os_authent_prefix                    string      ops$
      remote_os_authent                    boolean     FALSE
      
    2. 建立名為 ops$azbackup 的資料庫使用者,用於對 azbackup 使用者進行外部驗證,並授與 SYSBACKUP 權限:

      SQL> CREATE USER ops$azbackup IDENTIFIED EXTERNALLY;
      SQL> GRANT CREATE SESSION, ALTER SESSION, SYSBACKUP TO ops$azbackup;
      
  7. 如果您在執行 GRANT 陳述式時收到錯誤 ORA-46953: The password file is not in the 12.2 format,請遵循下列步驟,將 orapwd 檔案移轉至 12.2 格式。 針對 VM 上的每個 Oracle 資料庫執行個體執行這些步驟。

    1. 結束 SQL Plus。

    2. 將具有舊格式的密碼檔案移至新名稱。

    3. 移轉密碼檔案。

    4. 移除舊檔案。

    5. 執行下列命令:

      mv $ORACLE_HOME/dbs/orapworatest1 $ORACLE_HOME/dbs/orapworatest1.tmp
      orapwd file=$ORACLE_HOME/dbs/orapworatest1 input_file=$ORACLE_HOME/dbs/orapworatest1.tmp
      rm $ORACLE_HOME/dbs/orapworatest1.tmp
      
    6. 在 SQL Plus 中重新執行 GRANT 作業。

  8. 建立預存程序,以將備份訊息記錄至資料庫警示記錄。 針對安裝在 VM 上的每個資料庫,使用下列程式碼:

    sqlplus / as sysdba
    SQL> GRANT EXECUTE ON DBMS_SYSTEM TO SYSBACKUP;
    SQL> CREATE PROCEDURE sysbackup.azmessage(in_msg IN VARCHAR2)
    AS
      v_timestamp     VARCHAR2(32);
    BEGIN
      SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS')
      INTO v_timestamp FROM DUAL;
      DBMS_OUTPUT.PUT_LINE(v_timestamp || ' - ' || in_msg);
      SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.ALERT_FILE, in_msg);
    END azmessage;
    /
    SQL> SHOW ERRORS
    SQL> QUIT
    

設定應用程式一致的備份

  1. 切換至根使用者:

    sudo su -
    
  2. 檢查 /etc/azure 資料夾。 如果不存在,請建立應用程式一致的備份工作目錄:

    if [ ! -d "/etc/azure" ]; then
       mkdir /etc/azure
    fi
    
  3. 檢查資料夾內的 workload.conf 檔案。 如果不存在,請在 /etc/azure 目錄中建立它,並提供下列內容。 註解的開頭必須是 [workload]。 如果檔案已存在,只要編輯欄位,使其符合下列內容。 否則,下列命令會建立檔案並填入內容:

    echo "[workload]
    workload_name = oracle
    configuration_path = /etc/oratab
    timeout = 90
    linux_user = azbackup" > /etc/azure/workload.conf
    

    workload.conf 檔案會使用下列格式:

    • workload_name 參數表示資料庫工作負載類型。 在此情況下,將參數設定為 Oracle,可讓 Azure 備份執行 Oracle 資料庫執行個體的正確前置指令碼和後置指令碼 (一致性命令)。
    • timeout 參數會指出每個資料庫必須完成儲存體快照集的時間上限 (秒數)。
    • linux_user 參數指出 Azure 備份用來執行資料庫靜止作業的 Linux 使用者帳戶。 您先前已建立此使用者 azbackup
    • configuration_path 參數會指出 VM 上文字檔的絕對路徑名稱。 每一行都會列出在 VM 上執行的資料庫執行個體。 這通常是 Oracle 在資料庫安裝期間產生的 /etc/oratab 檔案,但可以是任何您所選擇的檔案名稱。 它必須遵循下列格式規則:
      • 檔案是文字檔。 每個欄位都會以冒號字元分隔 (:)。
      • 每一行中的第一個欄位是 ORACLE_SID 執行個體的名稱。
      • 每一行的第二個欄位是該 ORACLE_SID 執行個體的 ORACLE_HOME 的絕對路徑名稱。
      • 會忽略前兩個欄位之後的所有文字。
      • 如果行以井字號 (#) 開頭,則會忽略整行做為註解。
      • 如果第一個欄位的值 +ASM,表示 Oracle ASM 執行個體,則會予以忽略。

觸發 VM 的應用程式一致備份

  1. 在 Azure 入口網站中,移至您的 rg-oracle 資源群組,然後選取您的 vmoracle19c 虛擬機器。

  2. 在 [備份] 窗格中:

    1. 在 [復原服務保存庫] 下,選取 [建立新的]
    2. 如需保存庫的名稱,請使用 myVault
    3. 針對資源群組,選取 rg-oracle
    4. 對於 [選擇備份原則],使用 [(新) DailyPolicy]。 如果您想要變更備份頻率或保留範圍,請改為選取 [建立新原則]

    Screenshot that shows the pane for configuring a new Recovery Services vault.

  3. 選取 [啟用備份]

    備份程式在排程時間到期之前不會啟動。 若要設定即時備份,請完成下一個步驟。

  4. 從 [資源群組] 窗格中,選取名為 myVault新建立的復原服務保存庫。 您可能需要重新整理頁面才能看到頁面。

  5. 在 [myVault - 備份項目] 窗格上,選取 [備份項目計數] 下的備份項目計數。

    Screenshot that shows details for a Recovery Services vault.

  6. 在 [備份項目 (Azure 虛擬機器)] 窗格上,選取省略號 [...] 按鈕,然後選取 [立即備份]

    Screenshot that shows the command for backing up Recovery Services vaults now.

  7. 接受預設保留備份直到值,然後選取 [確定]。 等候備份程序完成。

  8. 若要檢視備份作業的狀態,請選取 [備份作業]

    Screenshot that shows the pane that lists backup jobs for a Recovery Services vault.

    選取備份作業以查看其狀態的詳細資料。

    Screenshot that shows detailed status information for a backup job.

    雖然執行快照集只需要幾秒鐘的時間,但可能需要一些時間才能將快照傳送至保存庫。 備份作業在傳輸完成之前尚未完成。

  9. 針對應用程式一致備份,請解決記錄檔中 /var/log/azure/Microsoft.Azure.RecoveryServices.VMSnapshotLinux/extension.log 的任何錯誤。

還原 VM

還原整個 VM 表示從選取的還原點將 VM 及其連結的磁碟還原至新的 VM。 此動作也會還原在 VM 上執行的所有資料庫。 之後,您必須復原每個資料庫。

若要還原整個 VM,請完成下列步驟:

  1. 停止和刪除 VM
  2. 復原 VM
  3. 設定公用 IP 位址
  4. 復原資料庫

當您還原 VM 時,有兩個主要選擇:

  • 還原原本從中擷取備份的 VM。
  • 還原 (複製) 新的 VM,而不會影響原本從中擷取備份的 VM。

本練習中的第一個步驟 (停止、刪除,然後復原 VM) 會模擬第一個使用案例。

停止並刪除 VM

  1. 在 Azure 入口網站中,移至 vmoracle19c 虛擬機器,然後選取 [停止]

  2. 當虛擬機器不再執行時,請選取 [刪除],然後選取 [是]

    Screenshot that shows the confirmation message for deleting a virtual machine.

復原 VM

  1. 在 Azure 入口網站中,建立暫存用的儲存體帳戶:

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

      Screenshot that shows where to create a resource.

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

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

      Screenshot that shows basic information for creating a storage account.

    3. 選取 [檢閱 + 建立],然後選取 [建立]。

  2. 在 Azure 入口網站中,搜尋 myVault 復原服務保存庫,然後選取此項目。

    Screenshot that shows selecting a Recovery Services vault.

  3. 在 [概觀] 窗格中,選取 [備份專案]。 然後選取 [Azure 虛擬機],該虛擬機器的 BACKUP ITEM COUNT 值應為非零。

    Screenshot that shows selections for a virtual machine backup item for a Recovery Services vault.

  4. 在 [備份專案 (Azure 虛擬機)] 窗格中,選取 [vmoracle19c] VM。

    Screenshot that shows the pane for virtual machine backup items.

  5. 在 [vmoracle19c] 窗格中,選擇 [應用程式一致] 一致性類型的還原點。 選取省略號 [...],然後選取 [還原 VM]

    Screenshot that shows the command for restoring a VM.

  6. 在 [還原虛擬機器] 窗格上:

    1. 選取 [新建]

    2. 針對 [還原類型],選取 [建立新的虛擬機器]

    3. 針對虛擬機器名稱,輸入 vmoracle19c

    4. 針對 [虛擬網路],選取 [vmoracle19cVNET]

      子網路會根據您的虛擬網路選取項目自動填入。

    5. 針對預備位置,還原 VM 的流程需要相同資源群組和區域中的 Azure 儲存體帳戶。 您可以選擇稍早設定的儲存體帳戶或還原工作。

    Screenshot that shows values for restoring a virtual machine.

  7. 若要還原 VM,請選取 [還原] 按鈕。

  8. 若要檢視還原程式的狀態,請選取 [作業],然後選取 [備份作業]

    Screenshot that shows a list of backup jobs.

    選取 [進行中] 還原作業,以顯示還原流程狀態的詳細資料。

    Screenshot that shows detailed status information about a restore process.

設定公用 IP 位址

還原 VM 之後,您應該將原始 IP 位址重新指派給新的 VM。

  1. 在 Azure 入口網站中,移至名為 vmoracle19c的虛擬機器。 它已被指派新的公用 IP 和 NIC,類似於 vmoracle19c-nic-XXXXXXXXXXXX,但它沒有 DNS 位址。 刪除原始 VM 時,會保留其公用 IP 和 NIC。 後續步驟會將它們重新附加至新的 VM。

    Screenshot that shows a list of public IP addresses.

  2. 停止 VM。

    Screenshot that shows selections for stopping a virtual machine.

  3. 移至 [網路]

    Screenshot that shows networking information.

  4. 選取 [連結網路介面]。 選取原始的 NIC vmoracle19cVMNic,原始公用 IP 位址仍與它相關聯。 然後選取確定

    Screenshot that shows selecting resource type and NIC values.

  5. 中斷連結您使用 VM 還原作業建立的 NIC,因為它已設定為主要介面。 選取 [中斷連結網路介面],選取類似於 vmoracle19c-nic-XXXXXXXXXXXX 的 NIC,然後選取 [確定]

    Screenshot that shows the pane for detaching a network interface.

    您重新建立的 VM 現在會有與原始 IP 位址和網路安全性群組規則相關聯的原始 NIC

    Screenshot that shows an IP address value.

  6. 傳回 [概觀] 窗格,然後選取 [開始]

復原資料庫

若要在完成 VM 還原之後復原資料庫:

  1. 重新連線到 VM:

    ssh azureuser@<publicIpAddress>
    
    

    還原整個 VM 時,請務必在每個資料庫上執行下列步驟,以復原 VM 上的資料庫。

  2. 您可能會發現執行個體正在執行,因為自動啟動嘗試在 VM 啟動時啟動資料庫。 不過,資料庫需要復原,而且可能只在掛接階段。 在啟動掛接階段之前執行準備關機:

    sudo su - oracle
    sqlplus / as sysdba
    SQL> shutdown immediate
    SQL> startup mount
    
  3. 執行資料庫復原。

    請務必指定 USING BACKUP CONTROLFILE 語法來通知 RECOVER AUTOMATIC DATABASE 命令,復原不應該在還原的資料庫控制檔中記錄的 Oracle 系統變更號碼 (SCN) 停止。

    還原的資料庫控制檔案是快照集,以及資料庫的其餘部分。 儲存在它的 SCN 是從快照集的時間點開始。 此點之後可能會記錄交易,而您想要復原到認可至資料庫的最後一個交易點。

    SQL> recover automatic database using backup controlfile until cancel;
    
  4. 套用最後一個可用的封存記錄檔時,請輸入 CANCEL 以結束復原。

    復原成功完成時,會出現訊息 Media recovery complete

    不過,當您使用 BACKUP CONTROLFILE 子句時,recover 命令會忽略線上記錄檔。 目前線上重做記錄檔中的變更可能需要完成時間點復原。 在此情況下,您可能會看到類似下列範例的訊息:

    SQL> recover automatic database until cancel using backup controlfile;
    ORA-00279: change 2172930 generated at 04/08/2021 12:27:06 needed for thread 1
    ORA-00289: suggestion :
    /u02/fast_recovery_area/ORATEST1/archivelog/2021_04_08/o1_mf_1_13_%u_.arc
    ORA-00280: change 2172930 for thread 1 is in sequence #13
    ORA-00278: log file
    '/u02/fast_recovery_area/ORATEST1/archivelog/2021_04_08/o1_mf_1_13_%u_.arc' no
    longer needed for this recovery
    ORA-00308: cannot open archived log
    '/u02/fast_recovery_area/ORATEST1/archivelog/2021_04_08/o1_mf_1_13_%u_.arc'
    ORA-27037: unable to obtain file status
    Linux-x86_64 Error: 2: No such file or directory
    Additional information: 7
    
    Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
    

    重要

    如果目前的線上重做記錄遺失或損毀,而且您無法使用它,則此時可能會取消復原。

    若要更正這種情況,您可以識別未封存的線上記錄,並將完整檔案名稱提供給提示。

  5. 開啟資料庫。

    RECOVER 命令使用 USING BACKUP CONTROLFILE 選項時,需要 RESETLOGS 選項。 RESETLOGS 將重做歷程記錄重設回一開始,藉此建立新的資料庫實體 (incarnation),因為無法判斷復原中略過多少先前資料庫實體。

    SQL> alter database open resetlogs;
    
  6. 檢查資料庫內容是否已復原:

    SQL> select * from scott.scott_table;
    

Azure Linux VM 上的 Oracle Database 備份和復原現已完成。

您可以在 Oracle 檔中找到 Oracle 命令和概念的詳細資訊,包括:

刪除 VM

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

  1. 停用保存庫中備份的虛刪除:

    az backup vault backup-properties set --name myVault --resource-group rg-oracle --soft-delete-feature-state disable
    
  2. 停止保護 VM 並刪除備份:

    az backup protection disable --resource-group rg-oracle --vault-name myVault --container-name vmoracle19c --item-name vmoracle19c --delete-backup-data true --yes
    
  3. 移除包含所有資源的資源群組:

    az group delete --name rg-oracle
    

下一步

建立高可用性 VM

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