你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Azure 备份在 Azure Linux VM 上备份和恢复 Oracle Database

适用于:✔️ Linux VM

本文展示了如何使用 Azure 备份来创建虚拟机 (VM) 磁盘的磁盘快照,其中包括 Oracle Database 文件和 Oracle 快速恢复区域。 使用 Azure 备份时,可以创建适合作为备份且存储在恢复服务保管库中的完整磁盘快照。

Azure 备份还提供了应用程序一致性备份,确保还原数据不需要额外的修复。 应用程序一致性备份适用于文件系统和 Oracle Automatic Storage Management (ASM) 数据库。

还原应用程序一致性数据可减少还原时间,因此可快速恢复到运行状态。 还原后仍需要 Oracle Database 恢复。 使用在单独的 Azure 文件共享中捕获和存储的 Oracle 存档重做日志文件,可以促进恢复。

本文指导你完成以下任务:

  • 使用应用程序一致性备份来备份数据库。
  • 从恢复点还原和恢复数据库。
  • 从恢复点还原 VM。

先决条件

  • 若要执行备份和恢复过程,必须先创建一个已安装 Oracle Database 12.1 或更新版本的实例的 Linux VM。

  • 按照在 Azure VM 中创建 Oracle Database 实例中的步骤创建 Oracle Database 实例。

准备环境

若要准备环境,请完成以下步骤:

  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 Database 实例的存档重做日志文件在数据库恢复中起着至关重要的作用。 它们可存储从过去创建的数据库快照向前复原所需的已提交事务。

在数据库处于 ARCHIVELOG 模式下时,如果联机重做日志文件已满并转存至其他位置,数据库将存档这些文件的内容。 当数据库丢失时,需要结合备份使用这些文件来实现时间点恢复。

Oracle 提供将重做日志文件存档到不同位置的功能。 行业最佳做法是应至少将这些目标中的一个放在远程存储中,使其与主机存储分离,并受独立快照保护。 Azure 文件存储满足这些要求。

Azure 文件共享是一种存储,可以使用服务器消息块 (SMB) 或网络文件系统 (NFS) 协议将其作为常规文件系统组件附加到 Linux 或 Windows VM。 若要(使用 SMB 3.0 协议)在 Linux 上设置 Azure 文件共享,请参阅在 Linux 上装载 SMB Azure 文件共享。 完成设置后,请返回到本指南并完成所有剩余步骤。

准备数据库

此过程的这一部分假定你遵循在 Azure VM 中创建 Oracle Database 实例。 因此:

  • 你有一个名为 oratest1 的 Oracle 实例在名为 vmoracle19c 的 VM 上运行。
  • 你正在使用标准 Oracle oraenv 脚本,该脚本依赖于标准 Oracle 配置文件 /etc/oratab,以在 shell 会话中设置环境变量。

为 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 用户。 将 /backup/SID 替换为你的装入点名称和数据库 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 联机重做日志文件的大小通常很大(例如 1024M、4096M 或 8192M)。 在繁忙的数据库环境中,日志仍可能每隔几秒钟或几分钟切换和存档一次。 在较不活跃的数据库中,可能要过几小时或几天才会存档最近的事务,这会极大地减少存档频率。

    建议设置 ARCHIVE_LAG_TARGET 以确保 RPO 一致。 为 ARCHIVE_LAG_TARGET 设置 5 分钟(300 秒)是谨慎之选。 这可确保任何数据库恢复操作都可以恢复到故障时间的 5 分钟内。

    要设置 ARCHIVE_LAG_TARGET,请运行以下命令:

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

    若要更好地了解如何在 Azure 中部署 RPO 为零的高可用性 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 备份服务为各种应用程序提供了框架来实现 Windows 和 Linux VM 备份期间的应用程序一致性。 此框架涉及在创建磁盘快照之前调用前脚本来使应用程序静止。 它调用后脚本在完成快照后取消冻结应用程序。

Microsoft 增强了该框架,使 Azure 备份服务为所选应用程序提供打包的前脚本和后脚本。 这些前脚本和后脚本已加载到 Linux 映像上,因此无需安装任何内容。 只需命名应用程序,然后 Azure 备份会自动调用相关脚本。 Microsoft 管理打包的前脚本和后脚本,以便保证它们的支持、所有权和有效性。

目前,增强型框架支持的应用程序为 Oracle 12.x 或更新版本和 MySQL。 有关详细信息,请参阅托管 Azure VM 备份的支持矩阵

你可以创作自己的脚本,供 Azure 备份将其与 12.x 之前的数据库配合使用。 示例脚本可在 GitHub 上找到。

每次执行备份时,增强型框架都会在 VM 上安装的所有 Oracle Database 实例上运行前脚本和后脚本。 workload.conf 文件中的 configuration_path 参数指向 Oracle /etc/oratab 文件(或遵循 oratab 语法的一个用户定义的文件)的位置。 有关详细信息,请参阅设置应用程序一致性备份

Azure 备份为 configuration_path 指向的文件中列出的每个数据库运行前脚本和后脚本。 以 #(被视为注释)或 +ASM(Oracle ASM 实例)开头的行例外。

Azure 备份增强型框架会对在 ARCHIVELOG 模式下运行的 Oracle Database 实例进行联机备份。 前脚本和后脚本使用 ALTER DATABASE BEGINEND BACKUP 命令来实现应用程序一致性。

若要使数据库备份保持一致,必须在启动快照之前完全关闭处于 NOARCHIVELOG 模式的数据库。

为应用程序一致性备份准备环境

Oracle Database 通过作业角色分离使用最低特权来提供职责分离。 它将独立的操作系统 (OS) 组与独立的数据库管理角色相关联。 然后,用户可以根据用户在 OS 组中的成员身份来为其授予不同的数据库特权。

SYSBACKUP 数据库角色(通用名称 OSBACKUPDBA)提供在数据库中执行备份操作的有限权限。 Azure 备份需要它。

在 Oracle 安装过程中,建议使用 backupdba 作为与 SYSBACKUP 角色关联的 OS 组名称。 但可以使用任何名称,因此需要首先确定代表 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 组。 将 <group name> 替换为在步骤 3 中检索到的组名称。

    sudo groupadd <group name>
    
  5. 创建属于在先前步骤中验证或创建的 OS 组的名为 azbackup 的新备份用户。 将 <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 Database 实例执行这些步骤。

    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 Database 实例运行正确的前脚本和后脚本(一致性命令)。
    • timeout 参数指示每个数据库完成存储快照所需的最长时间(以秒为单位)。
    • linux_user 参数指示由 Azure 备份用来运行数据库静止操作的 Linux 用户帐户。 前面你已创建此 azbackup 用户。
    • configuration_path 参数指示 VM 上文本文件的绝对路径名称。 每行都列出了在 VM 上运行的数据库实例。 这通常是 Oracle 在数据库安装过程中生成的 /etc/oratab 文件,但它可以是你选择的任何名称的文件。 它必须遵循以下格式规则:
      • 文件不是文本文件。 每个字段以冒号字符 (:) 分隔。
      • 每行中的第一个字段是 ORACLE_SID 实例的名称。
      • 每行中的第二个字段是该 ORACLE_HOME 实例的 ORACLE_SID 的绝对路径名称。
      • 前两个字段之后的所有文本都忽略。
      • 如果某行以井号 (#) 开头,则整行将被作为注释忽略掉。
      • 如果第一个字段的值为 +ASM(表示 Oracle ASM 实例),则此字段将被忽略。

触发 VM 的应用程序一致性备份

  1. 在 Azure 门户 中,转到 rg-oracle 资源组并选择 vmoracle19c 虚拟机。

  2. 备份窗格中:

    1. 恢复服务保管库下,选择新建
    2. 对于保管库的名称,请使用 myVault
    3. 对于资源组,请选择 rg-oracle
    4. 对于“选择备份策略”,选择“(新) DailyPolicy”。 若要更改备份频率或保持期,请改为选择新建策略

    屏幕截图显示用于配置新的恢复服务保管库的窗格。

  3. 选择“启用备份”。

    备份过程将不会在计划时间到期前启动。 若要设置即时备份,请完成下一步。

  4. 在资源组窗格中,选择新创建的名为 myVault 的恢复服务保管库。 可能需要刷新页面才能看到它。

  5. myVault - 备份项窗格中,在备份项计数下选择备份项计数。

    屏幕截图显示恢复服务保管库的详细信息。

  6. 备份项(Azure 虚拟机)窗格中,选择省略号 (...) 按钮,然后选择立即备份

    屏幕截图显示用于立即备份恢复服务保管库的命令。

  7. 接受默认的保留备份截止日期值,然后选择确定。 等待备份过程结束。

  8. 若要查看备份作业的状态,请选择备份作业

    屏幕截图显示其中列出恢复服务保管库的备份作业的窗格。

    选择备份作业以查看有关其状态的详细信息。

    屏幕截图显示备份作业的详细状态信息。

    执行快照需几秒钟时间,但将其传输到保管库可能需要更多时间。 备份作业在传输完成之前不会完成。

  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. 当虚拟机不再运行时,依次选择删除

    屏幕截图显示删除虚拟机的确认消息。

恢复 VM

  1. 在 Azure 门户中创建用于暂存的存储帐户:

    1. 在 Azure 门户中,选择 + 创建资源,然后搜索并选择存储帐户

      展示了资源创建位置的屏幕截图。

    2. 创建存储帐户窗格中:

      1. 对于资源组,请选择现有资源组 rg-oracle
      2. 对于存储帐户名称,请输入 oracrestore
      3. 请确保将位置设置为与资源组中其他所有资源相同的区域。
      4. 将“性能”设置为“标准”。
      5. 对于“帐户类型”,请选择“StorageV2(常规用途 v2)”。
      6. 对于“复制”,请选择“本地冗余存储(LRS)” 。

      屏幕截图显示与创建存储帐户相关的基本信息。

    3. 选择“查看 + 创建”,然后选择“创建”。

  2. 在 Azure 门户中,搜索并选择 myVault 恢复服务保管库。

    屏幕截图显示如何选择恢复服务保管库。

  3. 概述窗格中,选择备份项。 然后选择 Azure 虚拟机,该虚拟机的备份项计数应为非零数。

    屏幕截图显示虚拟机备份项用于恢复服务保管库的选择。

  4. 备份项(Azure 虚拟机)窗格中,选择 vmoracle19c VM。

    屏幕截图显示虚拟机备份项的窗格。

  5. vmoracle19c 窗格中,选择一致性类型为应用程序一致的还原点。 选择省略号 (...),然后选择还原 VM

    屏幕截图显示用于还原 VM 的命令。

  6. 还原虚拟机窗格中:

    1. 选择“新建”。

    2. 对于还原类型,请选择新建虚拟机

    3. 对于虚拟机名称,请输入 vmoracle19c

    4. 对于虚拟网络,请选择 vmoracle19cVNET

      将根据你为虚拟网络所做的选择自动填充子网。

    5. 对于暂存位置,还原 VM 的过程需要同一资源组和区域中有 zure 存储帐户。 可以选择以前设置的存储帐户或还原任务。

    屏幕截图显示用于还原虚拟机的值。

  7. 要还原 VM,请选择还原按钮。

  8. 若要查看还原过程的状态,请选择作业,然后选择备份作业

    屏幕截图显示备份作业列表。

    选择处于正在进行状态的还原操作,以显示还原过程的状态详情。

    屏幕截图显示备份过程的详细状态信息。

设置公共 IP 地址

在 VM 恢复后,应将原始 IP 地址重新分配给新 VM。

  1. 在 Azure 门户中,转到名为 vmoracle19c 的虚拟机。 它被分配了新的公共 IP 和 NIC(类似于 vmoracle19c-nic-XXXXXXXXXXXX),但没有 DNS 地址。 删除原始 VM 时,会保留其公共 IP 和 NIC。 后续步骤会将它们重新附加到新的 VM。

    屏幕截图显示公共 IP 地址的列表。

  2. 停止 VM。

    屏幕截图显示为停止虚拟机所做的选择。

  3. 转到网络

    屏幕截图显示网络信息。

  4. 选择“附加网络接口”。 选择原始 NIC vmoracle19cVMNic,原始公共 IP 地址仍与之关联。 然后选择“确定”。

    屏幕截图显示如何选择资源类型和 NIC 值。

  5. 拆离使用 VM 还原操作创建的 NIC,因为它被配置为主接口。 选择拆离网络接口,选择类似于 vmoracle19c-nic-XXXXXXXXXXXX 的 NIC,然后选择确定

    屏幕截图显示用于拆离网络接口的窗格。

    重新创建的 VM 现在有与原始 IP 地址和网络安全组规则关联的原始 NIC。

    屏幕截图显示 IP 地址值。

  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 子句时,恢复命令会忽略联机日志文件。 可能需要对当前联机重做日志进行更改才能完成时间点恢复。 在这种情况下,你可能会看到与以下示例类似的消息:

    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 通过将历史记录重置回到开始时间来创建数据库的新具体化实例,因为无法确定在恢复过程中跳过了多少个以前的数据库具体化实例。

    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 示例