IBM Cloud Docs
将 SAP ERP 6.0 与 Oracle 迁移到 IBM Power Virtual Server

将 SAP ERP 6.0 与 Oracle 迁移到 IBM Power Virtual Server

源系统的准备步骤

目标受众和意图

该文档为 Oracle Database 管理员(DBA)提供了两个基于 Oracle RMAN的选项,用于将基于 AIX 的 Oracle 数据库从 IBM Power迁移到 IBM Power Virtual Server ( IBM Power Virtual Server )。

目标受众包括解决方案架构师、基础设施架构师和 Oracle 数据库管理员。

本指南旨在介绍执行 Oracle 数据库迁移的计划和步骤,并指出每种迁移方案在部署、配置和可用资源方面都会面临独特的挑战。

在本文件中,通用术语 “发现” 表示客户拥有 Oracle DBA的责任,即发现记录其当前的 Oracle / SAP 基础设施。 如果客户需要报告问题,这很有用。

范围和覆盖面

以下所有步骤都需要源系统和目标系统之间建立网络连接,并需要足够的网络带宽用于数据传输和/或数据复制。

穿插讨论了使用可选移动或容器解决方案的替代方案,例如希捷Lyve移动解决方案与 IBM Cloud Object Storage 结合,或 IBM Aspera Connect 将本地备份/数据库文件传输到 IBM Power Virtual Server 基础设施的讨论穿插其中。 有关此服务的详细信息,请访问 IBM Cloud 在线文档或以下链接。

每个实施所需的步骤不尽相同。 有关特定命令执行的详细信息,请参阅引用的 Oracle 文档。

对于迁移过程,我们使用User Concept - Oracle Standard,如以下文档 SAP 链接所述。

请注意,访问 SAP 需要 SAP S级用户权限。备注:

免责声明

任何执行这些程序的尝试,都将在客户既定的非生产性和/或生产性系统操作和维护程序下进行。 客户采取常规措施,确保系统可用性,以便根据需要进行维护和/或重新配置,并根据需要安排停机时间。

客户有责任根据其特定环境审查这些代表性程序,并根据需要进行相应调整。

本文介绍的 Oracle Database 迁移选项不一定仅适用于 IBM Power Virtual Server 迁移。 Oracle 技术专家应了解所使用的程序,并理解并非每个技术细节或考虑因素都已明确确定。 执行这些程序的 Oracle Database 管理员应了解 Oracle 数据库备份和恢复方法的完整范围,包括未明确说明的细节。

发现系统并选择迁移方案

系统发现过程

本文件假定之前已经收集了详细的发现:

  • Oracle 数据库迁移的业务、技术、功能、非功能需求(包括访问和可用性需求)
  • 与源数据库和底层平台相关的安装配置、硬件/软件清单和规格信息。
    • 收集与规模、变更率、服务水平要求、迁移停机时间容忍度、支持从源到目标的数据传输的网络容量等相关的指标。
    • 目标环境已经过评估,并与在探索过程中发现的源系统的容量/性能/可用性保持一致。

本文件涵盖的迁移方案

下面的流程图说明了本文件中涉及的三种方案:

  • 选项1:从源文件开始进行一致的RMAN备份,生成的文件将由RMAN复制数据库程序用于还原到 IBM Power Virtual Server。
  • 选项2:不一致的RMAN备份+存档的重做日志(或0级+增量备份)从源,备份文件由RMAN还原/恢复数据库过程使用,以恢复到 IBM Power Virtual Server。
  • 选项3:利用 Oracle Data Guard(目前正在研究中,如果平台相同,则建议使用该方法)——创建一个镜像,一旦同步完成,只需几分钟的数据库停机时间即可切换。 一旦测试和评估阶段结束,在线文档将立即更新。

图 1。 收集相关指标
收集相关指标

选择迁移选项

客户的要求和技术条件会影响从所列选项中进行选择的决定。

  1. 服务水平要求,特别是恢复点目标(RPO)和恢复时间目标(RTO)。
    • 选项1: 如上所述,客户可以接受在源数据库迁移到目标数据库之前出现相当长的服务延迟(RTO = “天数” )。 这种期望通常适用于非生产性工作,但很少适用于生产数据库。
    • 选项2:所列假设客户对服务中断的“小时数” 感到满意。 对于非生产性工作负载和一些生产数据库,通常会存在这种预期。
    • 选项3:(本文档中尚未介绍),结合 Oracle Data Guard数据库同步,可在数分钟内完成从源到目标的服务切换。
  2. 数据库大小、网络吞吐量和可靠性。
    • 通过网络传输大型数据库的备份需要花费时间。 考虑以下通过端到端网络连接传输600 GB备份的示例,其中可用协议和带宽支持80兆字节/秒的吞吐量。 按照这个速度,传输数据大约需要125分钟。 如果数据库备份文件较大,或者网络连接吞吐量较低,则需要更长的传输时间。 不可靠的网络可能会中断传输,导致您不得不重新启动传输过程,从而造成延迟。

      • 客户可以使用专门的传输工具,这些工具可在传输前/传输过程中压缩数据,使用高吞吐量协议,并在传输后解压数据。
      • 访问 IBM 的 Aspera,可以大大加快从本地到 IBM Power Virtual Server 位置的数据传输速度。
  3. 执行技能的可利用性。
    • 本文档中提供的选项需要具备经验丰富的数据库管理员技能,并能够与基础设施团队合作,将数据库内容迁移到 Power Virtual Server 内 IBM Power Virtual Server 工作区的新目标数据库中。

客户选择的任何迁移程序都需要在详细、精心排练的转移和切换计划中执行。

备份的注意事项和技术细节

RMAN BACKUP命令支持备份以下类型的文件:

  1. 数据文件和控制文件。
  2. 服务器参数文件。
  3. 已存档的重做日志
  4. RMAN备份

RMAN不备份与 Oracle 数据库相关的这些文件。

虽然数据库依赖于其他类型的文件,例如网络配置文件、密码文件以及 Oracle 主目录的内容,但您无法使用RMAN备份这些文件。 同样,Oracle Database 的某些功能(例如外部表)可能取决于数据文件、控制文件和重做日志以外的文件。 此过程还需要源数据库中的参数文件以及下列文件:

  1. Oracle 数据库参数文件:init<SID>.ora
  2. TNS网络配置文件:(例如:listener.oratnsnames.ora
  3. Oracle 数据库密码文件(如果存在)

RMAN不备份这些文件。 因此,您需要在备份/恢复操作中确保包含这些文件,最佳做法是将这些文件复制到与RMAN数据库备份位于同一挂载上的目录中。

当您在RMAN中执行BACKUP命令时,输出结果总是备份集或镜像副本中的一个或多个。 备份集是RMAN特有的专有格式,而镜像复制则是逐位复制文件。 默认情况下,RMAN会创建备份集。 本文仅涉及备份集。

假设

本文件假设:

  1. 如果源数据库是生产系统,则可能不会因进行完整备份而关闭,在这种情况下,将使用RMAN增量备份。
  2. 执行此过程不会更改源数据库(架构和配置)。
  3. 通过使用 Oracle RMAN选项将数据库从源迁移到目标:复制数据库或备份/恢复/恢复数据库。
  4. 目标环境中的 Oracle 家庭预先安装了与正在迁移的源实例匹配的版本。
  5. RMAN 复制、恢复/恢复功能允许修改数据库数据文件的位置,但本文档不涉及此选项。 假设数据库文件( AIX、JFS2 文件系统或 Oracle ASM磁盘组)在源环境和目标环境中的位置相同。
  6. 目标操作系统为:
    • 使用mksysb程序生成的源操作系统的精确副本(OVA或“开放虚拟设备”存档文件),或
    • AIX 的新部署版本,由 IBM 支持,并由 Oracle 认证,以支持要实例化的 Oracle 版本。

mksysb程序的文档可在以下链接中找到:

准备

探索已确认或确定了以下准备步骤。

记录源数据库的大小和配置

记录一个或多个源 Oracle 实例的当前计算、IOPS和存储大小和性能指标。

  • 目标 IBM Power Virtual Server Oracle 实例的构建应至少与现有系统的规模相匹配。
  • 在目标系统上选择磁盘层和磁盘容量以满足IOPS要求非常重要。
  • 这一发现过程应包括使用性能测试工具对源数据库进行测试,以获取指标供日后参考,并与目标系统部署进行比较。

提供最近成功备份的源数据库

请使用标准备份工具确认源 Oracle 系统最近一次成功完整备份的存在性。 您必须能够完全恢复源系统。

  • 如果无法确认,迁移/发现团队应检查RMAN备份程序。
  • 此外,发现团队应与客户数据库管理员或中小企业合作,验证数据库的完整性,并/或识别任何现有的损坏区块或架构问题。

记录源数据库

记录源数据库实例的位置和DBA管理访问权限的已知凭据。

记录 RMAN 配置

记录当前用于执行备份的 Oracle Recovery Manager (RMAN)配置,按实例。

获取这些信息的简单方法是执行以下步骤:

使用 ssh 连接 Oracle 服务器。

ssh oracle@<hostname>

检查变量 $ORACLE_SID 是否已设置。

echo $ORACLE_SID

通常显示的是SID值。 如果最后一个命令没有显示值,请使用以下命令手动设置环境变量:

setenv ORACLE_SID <SID value>

请将 <SID value> 替换为您的SID值。

使用 rman 命令连接源数据库:

rman target /

典型输出看起来类似于:

Recovery Manager: Release 19.0.0.0.0 - Production on Thu May 2 13:24:05 2024
Version 19.22.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.
connected to target database: Exx (DBID=xxxxxxxx)

使用以下命令显示RMAN配置设置:

RMAN> SHOW ALL;

存储和/或记录输出。

通过输入以下命令退出RMAN会话:

RMAN > exit;

作为参考,典型的 SHOW ALL 输出如下:

using target database control file instead of recovery catalog
RMAN configuration parameters for database with db_unique_name EXX are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 8 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE RMAN OUTPUT TO KEEP FOR 7 DAYS; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/oracle/EXX/19/dbs/snapcf_EXX.f'; # default

验证磁盘空间

确认磁盘空间足够大、格式化且已挂载,可以接受压缩的迁移数据库备份集。

  • 如果磁盘空间位于实例的本地,则可获得最佳性能。
  • 由于网络速度相对较慢,将数据库直接备份到 Cloud Object Storage 可能会导致备份执行延迟。
  • 此程序将执行备份,并应用中等压缩率,同时考虑以下因素:
    • 压缩备份文件存储大约占 Oracle 数据库空间消耗的25%。
    • 本地文件系统的容量应足以存储将目标数据库恢复到所需时间点所需的全部备份集。
    • 目标系统需要通过以下选项之一访问备份集:
      • 备份集将被复制到本地文件系统。
      • 在本地环境中安装 Aspera 代理,
      • NFS 直接安装在 Cloud Object Storage 设备上,或者使用希捷Lyve Mobile传输设备。 这并不能带来最佳性能,过去也曾有过其他观察结果。

根据网络/访问速度,可能需要将文件从 NFS 挂载复制到本地存储。

源备份集文件系统

引用了专用的本地文件系统,例如用于迁移备份集的 /backup/rman。 作为替代方案,我们还使用 10GbE 和100 GbE 成功测试了从 NFS 安装的希捷Lyve移动设备直接还原/恢复。

执行以下命令确认是否有可用空间进行备份:

df -g /backup/rman

目标上备份集的文件系统

数据库复制或还原/恢复程序需要访问备份文件集,可通过以下选项之一进行:

  • 备份集将被复制到本地文件系统。
  • 将 NFS 安装在希捷Lyve Mobile传输设备上,或
  • 一个 NFS,已安装到 IBM Cloud Object Storage,备份文件已从希捷设备复制到该邮箱。

使用 RMAN 备份源 Oracle 数据库

在本节中,我们将介绍RMAN备份集的生成,并提供两种选择。

参考信息

如需了解更多详情,请参阅以下文件: Oracle Database 备份和恢复——2024年2月

假设

  • 选项 1 过程假定将对源数据库进行一致的离线备份
  • 选项2 要求在执行备份程序之前,源数据库处于 ARCHIVELOG 模式。

注意事项

客户应权衡并行度和/或压缩度(以及分配给支持的关联资源)与备份时数据库可用性和性能要求之间的关系。

考虑将分区大小应用到备份配置中。 如果不指定 section size,则只创建少量的大型备份文件。 大文件很难处理,在数据传输过程中,如果传输失败需要重启,就会带来挑战。 此外,在将数据并行还原到目标数据库时,一些备份文件会限制并发进程的数量。

指定一个 good section size 可以控制备份文件的大小,同时还可以影响生成的文件数量,这些文件可以在 IBM Power Virtual Server 还原过程中并行处理。

请注意,中等压缩需要 Oracle 高级压缩许可证。 基本压缩效果不错,但速度明显较慢,压缩率也较低。 高压缩在压缩方面对CPU的占用率非常高,与仅使用中等压缩相比,压缩效果有限。 高压缩率还需要高级压缩许可证。

增量备份在未启用数据库块更改跟踪的情况下,会对所有数据文件进行全扫描,这会带来很大的读取工作量。 虽然启用块更改跟踪预计不会影响正在运行的数据库的性能,但为了验证这一点,应在客户环境中进行测试。

标准协议与 IBM 之间的网络传输比较 Aspera

数据传输速度较慢,使用的是标准协议,如scp/sftp。 备份文件可以直接传输到 IBM AIX LPAR in Power Virtual Server,也可以传输到 IBM Cloud Object Storage (COS)。 使用scp/sftp与 IBM COS,假定您使用的是 IBM FileManage 网关服务,或在目标 IBM Power Virtual Server 环境内或旁边安装并配置了sftp服务器,用于接收传输。

更快的选择是使用 IBM 的高性能 Aspera 产品进行数据传输。 在许多情况下,IBM Aspera 传输数据的速度比传统的基于 TCP 的协议快数倍。

IBM Aspera 的文档可在此处找到:

IBM Aspera 技术 - IBM Cloud

本参考资料还包含 加速网络传输迁移指南

备份程序选项

图 2。 IBM Aspera 备份程序
IBM Aspera 备份程序

现在介绍两种选择的具体流程。

RMAN 选项 1 - 离线备份/复制数据库

以下步骤将在数据库离线的情况下执行,并生成完全一致的备份。

关闭应用程序和数据库

在执行备份程序之前,请使用标准操作程序关闭 SAP 系统和 Oracle 数据库。

在使用多租户架构时,必须连接到根容器数据库(CDB),备份包括可插拔数据库(PDB)。

更多信息请参阅

确保记录 RMAN 配置

如准备部分 《RMAN 配置文件》 所述,在修改当前 RMAN 配置和相关参数之前,请务必保存或记录这些配置和参数。

在完成特殊的迁移备份后,需要重新使用原始的RMAN配置和参数,以便继续进行正常的计划备份操作。

备份选项 1 - 创建目标目录

oracle 用户身份登录,并执行以下命令创建目标备份目录,以匹配下一部分中描述的备份脚本。

如果目录不存在,RMAN脚本将失败。 此外,如果使用 NFS 挂载,您还需要确保 oracle 用户在 NFS 服务器上的定义文件 exports 中拥有正确的权限。 oracle 用户需要读写权限(rw )。 最好不要在RMAN备份过程中使用 NFS。 使用 JFS2 或本地安装的文件系统可以获得更好的效果。

以下两个命令创建备份目标位置,并将环境变量 ORACLE_SID 设置为 <SID>。 请将 <SID> 替换为您的系统正确的值:

mkdir -p /backup/rman/<sid>_option1
setenv ORACLE_SID <SID>

当然,只要Oracle用户能够写入目标位置,您就可以使用任何目标位置,并且您可以修改下一步的备份脚本,以使用目标目录。

备份选项 1 - 备份脚本

RMAN脚本用于执行备份选项1。 脚本中使用的命令将在脚本之后讨论。 复制并粘贴脚本,并根据您的环境进行必要的调整。

所有RMAN设置和命令都包含在 option1_backup.rman 脚本文件中:

connect target /
SHUTDOWN IMMEDIATE
STARTUP MOUNT
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/backup/rman/<sid>_option1/option1_cmp_%d_%U';
CONFIGURE DEVICE TYPE DISK PARALLELISM 60;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup/rman/<sid>_option1/option1_cf_%F';
CONFIGURE COMPRESSION ALGORITHM 'HIGH';
CONFIGURE ENCRYPTION FOR DATABASE ON ;
CONFIGURE ENCRYPTION ALGORITHM 'AES256' ;
SET ENCRYPTION ON IDENTIFIED BY passw0rd ONLY ;
BACKUP AS compressed BACKUPSET section size 6000M DEVICE TYPE DISK DATABASE TAG <YOUR TAG ID HERE> include current controlfile ;
alter database open;
quit;

使用 oracle 用户从命令行执行此脚本。

rman @option1_backup.rman

RMAN根据所请求的备份类型将数据备份到配置的默认设备。 默认情况下,RMAN在磁盘上创建备份。 如果启用了快速恢复区域,并且没有指定 FORMAT 参数,则 RMAN 会在恢复区域中创建备份,并自动为其赋予唯一的名称。 这就是为什么要在前面修改参数中的格式,这里再次强调。

以下是RMAN脚本的主要组成部分:

以挂载模式关闭和启动数据库

数据库必须先关闭,然后以“挂载模式”启动,以便离线备份选项1。 为确保备份的一致性,数据库不得打开。 数据库关闭+挂载模式通过这两行代码完成:

SHUTDOWN IMMEDIATE
STARTUP MOUNT
备份控制文件

数据库控制文件包含将备份文件还原到可用的数据库所需的RMAN目录。

此命令将控制文件包含在备份中:

CONFIGURE CONTROLFILE AUTOBACKUP ON
BACKUP AS compressed BACKUPSET section size 6000M DEVICE TYPE DISK DATABASE TAG EXX_100K_INITV3 include current controlfile ;

请注意,上述脚本中用于 DEVICE TYPE DISK 命令的 CONFIGURE CHANNEL DEVICE TYPE DISKCONFIGURE CONTROLFILE AUTOBACKUP FORMAT 包含了备份文件系统的位置!

备份并行

设置磁盘设备并行性——可能加快备份速度,缩短备份时间。 最佳并行性取决于几个因素:

  • 是否有足够的CPU资源来运行如此多的并行备份进程。 在选定的压缩和加密下,假设存储子系统能够足够快速地提供数据,每个RMAN进程通常会占用逻辑处理器的所有CPU周期。
  • 存储子系统能够支持RMAN数据文件的读取和备份位置I/O吞吐量的写入。
  • 支持备份进程读取、压缩和加密数据的可用物理内存量。
  • 如前文提到的RMAN脚本所示,我们的测试使用了并行度60,但如现在所示的并行度8,也许是在探索过程中找到最佳水平的良好起点:
CONFIGURE DEVICE TYPE DISK PARALLELISM 8 BACKUP TYPE TO BACKUPSET;
备份压缩

设置备份文件压缩。 建议大多数客户使用中等压缩。 然而,高压缩比也经过了测试,因为高压缩比在某些情况下也是一种选择。 使用“MEDIUM”和“HIGH”需要 Oracle 高级压缩许可证!

  • 已测试 CONFIGURE COMPRESSION ALGORITHM 'HIGH' ;
  • 建议防止牌照费用增加 CONFIGURE COMPRESSION ALGORITHM 'MEDIUM' ;
备份加密

启用备份加密,并根据需要修改算法(默认值为 AES128 ),并指定要使用的加密密码。 除非您使用的是TDE加密数据库,否则每次RMAN会话都需要设置加密和解密密码;否则会话将失败,并显示“钱包未打开”错误:

CONFIGURE ENCRYPTION FOR DATABASE ON ;
CONFIGURE ENCRYPTION ALGORITHM 'AES256' ;
SET ENCRYPTION ON IDENTIFIED BY passw0rd ONLY ;
Backup

然后,最终命令将触发数据库的实际备份到磁盘。 备份使用RMAN专用的备份集。 每个RMAN进程最多可从数据文件中读取 6000M 个连续数据作为备份,压缩并加密这些数据,然后将其写入目标文件系统。

最后一步是修改数据库使其打开。 创建一个特定的标签,包括 ORACLE_SID <SID>,以供识别。 设置 section size,限制备份部分的大小,以便在文件传输到目标环境失败时,提高可能需要的重传成功率。 建议使用TAG,因为它可以简化RMAN目录中多个备份的管理:

BACKUP AS compressed BACKUPSET section size 6000M DEVICE TYPE DISK DATABASE TAG <SID>_100K_INITV3 include current controlfile ;
alter database open;
备份验证和交叉检查

备份完成后,使用以下RMAN命令验证并交叉检查结果。

在RMAN提示符下,使用以下命令:

RMAN> REPORT SCHEMA;
RMAN> LIST BACKUP SUMMARY;
RMAN> BACKUP VALIDATE CHECK LOGICAL DATABASE ARCHIVELOG ALL;
RMAN> VALIDATE DATAFILE 10;
RMAN> VALIDATE BACKUPSET 3;
RMAN> CROSSCHECK BACKUP;

命令说明:

  • REPORT SCHEMA ;- 列出并显示数据库文件、表空间等信息。
  • LIST BACKUP SUMMARY ;- 列出所有现有备份。 可以使用摘要选项。
  • LIST BACKUP <TAG ID> ;- 按TAG ID列出特定备份。
  • BACKUP VALIDATE CHECK LOGICAL DATABASE ARCHIVELOG ALL;- 验证备份文件的内容。
  • VALIDATE DATAFILE 10;- 验证特定数据文件。
  • VALIDATE BACKUPSET 3;- 验证特定的备份集。
  • CROSSCHECK BACKUP;- 将备份和副本的物理现实与RMAN存储库中的逻辑记录同步。
创建PFILE

从二进制服务器参数文件(SPFILE)创建纯文本数据库参数文件(PFILE),如下所示。 数据库保持挂载模式。 请记住在命令中使用您的 <SID>

以用户 oracle 的身份执行此命令:

export ORACLE_SID=<SID>
sqlplus "/ as sysdba";

在SQL*Plus中创建参数文件:

SQL> create pfile='/backup/rman/init<SID>.ora' from spfile;

完成后,请务必将所有RMAN参数恢复为原始发现设置。

对于选项1,我们创建了一个备份,以便传输到目标系统并在目标系统上恢复。 此时,为了与迁移方案保持一致,源数据库应关闭且不再使用。

RMAN 选项 2 - 在线备份

以下备份程序将在数据库在线的情况下执行,并生成一个RMAN 0级备份和一个或多个1级(增量)备份。 要求数据库处于归档日志模式,并确保所有必需的归档重做日志都包含在备份中。

RMAN 增量备份0级备份是完整备份。 它包括完整的数据库。

RMAN增量备份1级备份是一种增量备份,可捕获自上次备份0级或1级备份以来的更改。 cummulative 选项可以改变这种行为,详情请参阅 Oracle RMAN备份概念文档。

要成功还原和恢复数据库,需要自上次完整备份以来的完整备份(级别0)和所有增量备份(级别1),包括存档的重做日志。 当将数据库移至新服务器时(包括终止源系统上的服务),最后一次增量备份为脱机备份。

在使用多租户架构时,必须连接到根容器数据库(CDB),备份包括可插拔数据库(PDB)。

更多信息请参阅 对CDB/PDB执行操作

检查数据库大小

请确保文件系统中有足够的空间来备份数据库。 使用以下SQL语句确定当前数据库的大小:

SELECT SUM (bytes)/1024/1024/1024 AS GB FROM dba_segments;

确保记录 RMAN 配置

如准备部分 “RMAN 配置文件” 所述,请务必记录当前的 RMAN 配置和相关参数。 在完成特殊备份以进行迁移后,您需要确保RMAN配置保持不变,以便继续执行常规的备份操作。

备份选项 2 - 创建目标目录

oracle 用户身份执行以下命令。

前两个命令用于创建全量和增量备份的目标备份目录。 如果您使用不同的目录,请修改下一部分中的两个备份脚本。 第三个命令设置环境变量 ORACLE_SID,将 <SID> 替换为您的系统SID值:

mkdir -p /backup/rman/<sid>_option2
mkdir -p /backup/rman/<sid>_option2_inc1

setenv ORACLE_SID <SID>

备份选项 2 - 备份脚本

完整在线备份 - 0 级

第一个RMAN脚本 option2_backup_full.rman 用于配置RMAN环境并创建初始0级(完整)在线备份。 启动此脚本中完整(0级)备份的关键命令是: BACKUP ... incremental level 0 ...

本脚本中使用的命令将在脚本之后的步骤中进一步讨论。 请记住,要替换 <sid/SID> 条目,使其与您的目录结构和系统值相匹配:

option2_backup_full.rman 脚本文件中包含了所有RMAN设置和完整备份命令:

connect target /
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/backup/rman/<sid>_option2/lev0_%d_%U';
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE DEVICE TYPE DISK PARALLELISM 60;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup/rman/<sid>_option2/lev0_cf_%F';
CONFIGURE COMPRESSION ALGORITHM 'MEDIUM';
CONFIGURE ENCRYPTION FOR DATABASE ON ;
CONFIGURE ENCRYPTION ALGORITHM 'AES256' ;
SET ENCRYPTION ON IDENTIFIED BY passw0rd ONLY ;
BACKUP  tag '<Your TAG Here>' incremental level 0 AS compressed BACKUPSET section size 6000M DEVICE TYPE DISK DATABASE INCLUDE CURRENT CONTROLFILE PLUS ARCHIVELOG;
quit;

您可以使用用户 oracle 并通过命令行直接调用脚本,并执行以下操作:

rman @option2_backup_level0.rman

运行完整(0级)备份后,预期结果应为:

Recovery Manager complete.

RMAN根据所请求的备份类型将数据备份到配置的默认设备。 默认情况下,RMAN会在磁盘上创建备份。 如果启用了快速恢复区域,并且没有指定 FORMAT 参数,则 RMAN 会在恢复区域中创建备份,并自动为其赋予唯一的名称。 这就是为什么要在前面修改参数中的格式,这里再次强调。

RMAN 如果指定了 标志,则默认情况下将所有存档的重做日志包含在0级或1级备份中。PLUS ARCHIVELOG 这可能会导致同一文件在连续的增量备份集中出现多次。

以下指令指示RMAN检查特定的已归档重做日志是否已包含在之前的备份中,如果已包含,则不要将该文件包含在新的增量备份中。

如果是,请不要将文件包含在新的增量备份中。 请注意,如果数据库的其他备份不传输到目标位置,则不应使用此选项,此时应将此选项设置为 OFF

CONFIGURE BACKUP OPTIMIZATION ON;

恢复数据库需要数据库控制文件的副本,因为其中包含将备份文件恢复到可用的数据库所需的RMAN目录。

CONFIGURE CONTROLFILE AUTOBACKUP ON;

BACKUP AS compressed BACKUPSET section size 6000M DEVICE TYPE DISK DATABASE PLUS ARCHIVELOG TAG ECOM_option1 include current controlfile;

请注意,脚本中还包含 CONFIGURE CHANNEL DEVICE TYPE DISKCONFIGURE CONTROLFILE AUTOBACKUP FORMAT for DEVICE TYPE DISK TO <directory> 命令,用于定义备份类型和文件系统位置。

设置磁盘设备并行性——可能加快备份速度并缩短备份窗口。

最佳并行性取决于几个因素:

  • CPU资源可用于运行多个并发备份进程。 在选定的压缩和加密下,假设存储子系统能够足够快速地提供数据,每个RMAN进程通常会占用逻辑处理器的所有CPU周期。
  • 存储子系统能够支持RMAN数据文件在备份位置的读写,并具有I/O吞吐量。
  • 支持备份进程读取、压缩和加密数据的可用物理内存量。
  • 数据库的大小。

如前文提到的RMAN脚本所示,我们的测试使用了并行度60,但如本文所示,并行度8可能是探索最佳水平的一个良好起点。

CONFIGURE DEVICE TYPE DISK PARALLELISM 8 BACKUP TYPE TO BACKUPSET;

设置备份文件压缩。 显示为“中等”,在某些情况下可以选择“高”。 使用“MEDIUM”和“HIGH”需要 Oracle Advanced Compression license

CONFIGURE COMPRESSION ALGORITHM 'MEDIUM' ;

启用备份加密,并根据需要修改算法(默认值为 AES128 ),并指定要使用的加密密码。 除非您使用的是TDE加密数据库,否则每次RMAN会话都需要设置加密和解密密码;否则会话将失败,并显示“钱包未打开”错误。

CONFIGURE ENCRYPTION FOR DATABASE ON;
CONFIGURE ENCRYPTION ALGORITHM 'AES256';
SET ENCRYPTION ON IDENTIFIED BY passw0rd ONLY ;

然后,最终命令将触发数据库的实际备份到磁盘。 备份使用RMAN专用的备份集。 每个RMAN进程都会从数据文件中读取 6000M 连续数据作为备份,对其进行压缩和加密,然后写入目标文件系统。 分段大小的目标是限制备份文件的大小,以便在传输失败时,可以重新传输到目标环境。

如前所述,备份中必须包含已归档的重做日志文件,而PLUS ARCHIVELOG标志可确保RMAN读取现有的归档日志。 强烈建议使用TAG,因为它可以简化RMAN目录中多个备份的管理。 “增量级别0”指定此备份为0级增量备份,这意味着所有数据都将包含在备份中。

RMAN 读取现有的存档日志。 建议使用TAG,因为它可以简化RMAN目录中多个备份的管理。 “增量级别0”指定此备份为0级增量备份,意味着所有数据都将包含在备份中。

BACKUP  tag '<Your TAG here>' incremental level 0 AS compressed BACKUPSET section size 6000M DEVICE TYPE DISK DATABASE INCLUDE CURRENT CONTROLFILE PLUS ARCHIVELOG TAG <SID>_LEV0;

对于额外的增量备份,我们建议在以下备份脚本中将 “inc1 / INC1” 替换为相应的““incN / INCN”。 请注意,建议将每组递增备份文件存储到各自的目录中,以便于管理。

增量在线备份 - 第 1 级

第二个RMAN脚本 option2_backup_inc1.rman 用于配置RMAN环境并创建初始0级(完整)在线备份。 启动此脚本中增量(1级)备份的关键命令是: BACKUP ... incremental level 1 ...

<sid> 替换为系统中的SID值,并确保脚本中定义的目标备份目录与您创建的目录相匹配。 备份选项2——创建目标目录

option2_backup_inc1.rman 脚本

connect target /
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/backup/rman/<sid>_option2_inc1/inc1_%d_%U';
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE DEVICE TYPE DISK PARALLELISM 60;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup/rman/<sid>_option2_inc1/inc1_cf_%F';
CONFIGURE COMPRESSION ALGORITHM 'MEDIUM';
CONFIGURE ENCRYPTION FOR DATABASE ON ;
CONFIGURE ENCRYPTION ALGORITHM 'AES256' ;
SET ENCRYPTION ON IDENTIFIED BY passw0rd ONLY ;
BACKUP TAG `<SID>`_INC1 incremental level 1 AS compressed BACKUPSET section size 6000M DEVICE TYPE DISK DATABASE INCLUDE CURRENT CONTROLFILE PLUS ARCHIVELOG;
quit;

用户 oracle 将环境变量 ORACLE_SID 设置为系统的SID值:

setenv ORACLE_SID <SID>

并执行增量备份脚本:

rman @option2_backup_inc1.rman

增量级别1脚本与之前讨论的级别0 RMAN脚本仅在3个方面有所不同:

  • 备份文件写入的目录。
  • TAG用于识别备份集。
  • 1级而不是0级,表明这是一次增量备份,默认情况下包含自上次1级或0级备份以来的所有更改。

最后的增量备份需要额外的准备步骤,以确定在目标环境的最终数据库恢复步骤中使用的日期/时间戳。 下一步中蓝色方框高亮显示的时间戳是数据库恢复的日期/时间。 在此日期/时间之后所做的任何更改将被放弃!

检查服务器时间和日期

以系统管理员身份连接数据库并执行命令,具体操作请参见说明。 请注意,数据库仅设置为 mount 模式,而非 opened

设置NLS日期格式用作从 date-to-stringstring-to-dates 隐式转换的格式模型,如果您选择执行时间点恢复,这一点非常重要。

下图中的第二个SQL命令强制 Oracle 写入新的日志,该命令运行后显示文件创建的日期戳,并提供一个时间戳,用于通过应用适用的日志将数据库向前滚动。

图 3。 增量时间戳
增量时间戳

通过RMAN执行最后的增量备份。

验证和交叉检查备份

备份完成后,您可以在RMAN中使用以下列出的部分命令来验证和交叉检查结果。

RMAN> REPORT SCHEMA;
RMAN> LIST BACKUP SUMMARY;
RMAN> LIST BACKUPSET <TAG ID> ;
RMAN> BACKUP VALIDATE CHECK LOGICAL DATABASE ARCHIVELOG ALL;
RMAN> VALIDATE DATAFILE 10;
RMAN> VALIDATE BACKUPSET 3;
RMAN> CROSSCHECK BACKUP;

列出并显示数据库文件、表空间等信息。

命令说明:

  • REPORT SCHEMA ;- 列出并显示数据库文件、表空间等信息。
  • LIST BACKUP SUMMARY ;- 列出所有现有备份。 可以使用摘要选项。
  • LIST BACKUP <TAG ID> ;- 按TAG ID列出特定备份。
  • BACKUP VALIDATE CHECK LOGICAL DATABASE ARCHIVELOG ALL;- 验证备份文件的内容。
  • VALIDATE DATAFILE 10;- 验证特定数据文件。
  • VALIDATE BACKUPSET 3;- 验证特定的备份集。
  • CROSSCHECK BACKUP;- 将备份和副本的物理现实与RMAN存储库中的逻辑记录同步。
创建PFILE

从二进制服务器参数文件(SPFILE)创建纯文本数据库参数文件(PFILE),如下所示。 数据库保持挂载模式。 请记住,在命令中用您的系统 SID 替换 <SID>

以用户 oracle 的身份执行以下命令:

setenv ORACLE_SID <SID>
sqlplus "/ as sysdba";

在SQL*Plus中创建参数文件:

SQL> create pfile='/backup/rman/init<SID>.ora' from spfile;

完成后,请务必将所有RMAN参数恢复为原始发现设置。

对于选项2,我们创建了两个备份集,一个是完整备份,一个是增量备份。 两者都传输到目标系统并恢复。 此时,为了与迁移方案保持一致,源数据库应关闭且不再使用。

在目标系统上还原 Oracle 数据库

本节将介绍在目标系统上恢复数据库的不同选项和步骤。

两个 RMAN 还原选项

提供两种将 Oracle Database 还原到目标系统的方法:

  1. RMAN 数据库复制和
  2. RMAN 还原/恢复数据库。

这两种方法都将使用在之前的RMAN备份部分中创建的备份。

图 4. 恢复选项
恢复选项

选项1——RMAN 数据库复制
此选项将使用RMAN的 auxiliary instance 功能,并且仅当目标服务器上存在全套一致的RMAN备份文件时,才能/应该使用此选项。 :: RMAN的“复制”命令会自动使用 resetlogs 打开目标数据库。
重置日志操作会递增数据库的化身编号,从而使目标数据库与源数据库完全独立。 重要的是,此时无法将增量级别1备份或归档的REDO日志应用到目标数据库。
选项2——RMAN还原/恢复
应使用此选项以 RMAN 增量级别 0 以及可选的一个或多个增量级别 1 备份(如上一节所述)来初步建立目标数据库。 不过,它允许在一段时间后将后续增量级别1备份和归档的REDO日志应用到目标数据库。 :: 预计会有一个最终切换时间,并采取最终的增量级1备份,将其复制/传输到目标服务器,并在目标数据库仍处于MOUNT状态时应用。 一旦应用了最终备份/存档日志,数据库将在切换时手动打开并可用。

假设

  1. 已创建一个 IBM 云账户,以及一个 IBM Power Virtual Server 工作区。
  2. 在工作区中,手动或自动程序已在 IBM Power Virtual Server 实例上安装了必要的 Oracle 网格基础设施(如果使用ASM)和 Oracle RDBMS主文件,位于 AIX。 AIX LPAR在计算、内存、存储容量和性能方面应与源系统相当,并应用兼容的硬件/软件版本。
  3. RMAN复制/恢复/复原流程可以访问所有必需的备份文件。

连接和准备 - Oracle on IBM Power Virtual Server

在目标实例命令行中,您可以使用以下RMAN过程来执行恢复。

  1. 以用户 oracle 的身份登录,然后登录到要还原数据库的 AIX Power Virtual Server。
  2. 确认:
    • 目标 IBM Power Virtual Server 系统已安装有效的 Oracle 数据库软件,其版本和补丁级别与源环境中的相同。
    • 存储 Oracle 数据文件的设备名称和表空间名称与源数据库中的名称相同。 如果没有,则需要 set newname 指令(此步骤不涉及步骤)
    • ASM磁盘组(如果使用)的名称和容量与源环境一致。
    • 备份文件可供RMAN使用,无论它们是驻留在本地文件存储、Cloud Object Storage、NFS 等中。

以下步骤选项不介绍如何安装 Oracle 软件,而是介绍如何还原源数据库。 与备份过程一样,所介绍的步骤具有代表性,不同数据库环境的具体步骤可能有所不同。

请参考特定版本的 Oracle Database 安装指南,了解 AIX 在电源系统上的安装,以及相应的GRID基础设施文档,了解ASM(以及RAC,如果相关)。

数据库安装指南(版本 19c )

网格基础设施文档(版本 19c )

检查目标服务器上的备份文件集

以下是 /backup/rman 文件夹中已暂存备份文件的预览: 请注意,文件已复制到本地 JFS/2 文件系统(部分文件列表)。

图 5. 恢复选项
恢复选项

在一个单独的文件夹中,有直接从本地 Oracle 数据库复制的各种文件,这是之前备份程序中推荐的。

图6 备份文件夹树
备份文件夹树

检查配置

现在查看 Oracle PFILE配置,并验证该文件中的设置。

检查PFILE

现在,我们将查看存储在 init<SID>.ora 中的 Oracle 参数文件,即 PFILE

检查已保存的PFILE中包含的数据库参数,并检查文件名规范。 参数 audit_file_dest= 引用了目标服务器上尚不存在的目录位置。 其他文件目标引用了应该已经创建的ASM磁盘组。

IBM Cloud 如果目标服务器中的文件位置与源环境不匹配,则需要在RMAN脚本中进行额外的配置更改,因此,当您通过 cloning 发送您的 Oracle 服务器时,请务必比较 init<SID>.ora 文件中提到的配置,并确保目标系统上存在这些位置。

图7 审计文件目的地
审计文件目的地

检查审计目录

检查并确认目标服务器上存在审计文件目录,且该目录与PFILE中列出的目录一致,并赋予正确的所有权和模式。

图8 备份文件夹树
备份文件夹树

检查 ASM 磁盘组和其他目录定义

确认PFILE中引用的ASM磁盘组在目标上存在,并且有足够的可用空间。 作为Oracle网格用户,请运行:

asmcmd lsdg

如果未使用 ASM 组,请查看 PFILE 并确认引用的目录是否存在。 此时,您可以选择以下恢复选项之一。

方案 1 - RMAN 复制数据库

此过程需要源数据库的一致性0级备份,并将内容还原到 Power Virtual Server 上的新 Oracle 实例,以创建一个复制数据库。

以下步骤应以Oracle用户身份执行:

以 NOMOUNT 模式启动目标数据库

确保 ORACLE_SID 环境已设置。 由于用户 oracle 为您的系统设置了正确的ORACLE_SID:

setenv ORACLE_SID <SID>

在 NOMOUNT 模式下启动 Oracle 实例,直接指定要使用的 pfile。 请注意,在我们的环境中,我们使用 Oracle 在 SAP 环境中,因此我们的ORACLE_HOME是 /oracle/EC9/19.0.0,您的环境可能有所不同,请更改示例中的路径,并记住在此后提到的命令中替换您自己的 Oracle <SID>

作为用户 oracle,执行SQL*Plus并作为系统数据库管理员连接到数据库:

sqlplus "/ as sysdba"

在SQL*Plus中执行以下SQL语句:

SQL> startup nomount pfile='/backup/rman/ora/initEC6.ora';
SQL> create spfile='/oracle/EC6/19.0.0/dbs/spfileEC6.ora' from pfile='/backup/rman/ora/initEC6.ora';
SQL> shutdown immediate;
SQL> startup nomount;
SQL> show parameter spfile;

spfile参数通常如下所示:

NAME                 TYPE            VALUE
---------          -------------    ---------------------------------
spfile               string          /oracle/EC6/19/dbs/spfileEC6.ora

使用 RMAN 恢复数据库的脚本 - 选项 1

创建一个RMAN复制数据库脚本,并指定相应的备份位置。 在这种情况下,文件存储在“oracle”用户的家目录中。

最理想的情况是,您使用参考值创建还原通道的数量与备份通道的数量相匹配。 如果您还记得在备份过程中,我们观察到有60个频道正在使用,因此我们在脚本中匹配了这个数字。

以下脚本仅显示前15行,显然是因为我们需要60个通道,这些通道需要添加到脚本中,您需要在 allocate auxiliary channel ch[15-60] device type disk;

用户 oracle 创建了这个脚本。

rman_duplicate.cmd 脚本:

set encryption on identified by passw0rd;
set decryption identified by passw0rd;
run {
    allocate auxiliary channel ch1 device type disk;
    allocate auxiliary channel ch2 device type disk;
    allocate auxiliary channel ch3 device type disk;
    allocate auxiliary channel ch4 device type disk;
    allocate auxiliary channel ch5 device type disk;
    allocate auxiliary channel ch6 device type disk;
    allocate auxiliary channel ch7 device type disk;
    allocate auxiliary channel ch8 device type disk;
    allocate auxiliary channel ch9 device type disk;
    allocate auxiliary channel ch10 device type disk;
    allocate auxiliary channel ch11 device type disk;
    allocate auxiliary channel ch12 device type disk;
    allocate auxiliary channel ch13 device type disk;
    allocate auxiliary channel ch14 device type disk;
    allocate auxiliary channel ch15 device type disk;
    allocate auxiliary channel ch16 device type disk;
    allocate auxiliary channel ch17 device type disk;
    allocate auxiliary channel ch18 device type disk;
    allocate auxiliary channel ch19 device type disk;
    allocate auxiliary channel ch20 device type disk;
    allocate auxiliary channel ch21 device type disk;
    allocate auxiliary channel ch22 device type disk;
    allocate auxiliary channel ch23 device type disk;
    allocate auxiliary channel ch24 device type disk;
    allocate auxiliary channel ch25 device type disk;
    allocate auxiliary channel ch26 device type disk;
    allocate auxiliary channel ch27 device type disk;
    allocate auxiliary channel ch28 device type disk;
    allocate auxiliary channel ch29 device type disk;
    allocate auxiliary channel ch30 device type disk;
    allocate auxiliary channel ch31 device type disk;
    allocate auxiliary channel ch32 device type disk;
    allocate auxiliary channel ch33 device type disk;
    allocate auxiliary channel ch34 device type disk;
    allocate auxiliary channel ch35 device type disk;
    allocate auxiliary channel ch36 device type disk;
    allocate auxiliary channel ch37 device type disk;
    allocate auxiliary channel ch38 device type disk;
    allocate auxiliary channel ch39 device type disk;
    allocate auxiliary channel ch40 device type disk;
    allocate auxiliary channel ch41 device type disk;
    allocate auxiliary channel ch42 device type disk;
    allocate auxiliary channel ch43 device type disk;
    allocate auxiliary channel ch44 device type disk;
    allocate auxiliary channel ch45 device type disk;
    allocate auxiliary channel ch46 device type disk;
    allocate auxiliary channel ch47 device type disk;
    allocate auxiliary channel ch48 device type disk;
    allocate auxiliary channel ch49 device type disk;
    allocate auxiliary channel ch50 device type disk;
    allocate auxiliary channel ch51 device type disk;
    allocate auxiliary channel ch52 device type disk;
    allocate auxiliary channel ch53 device type disk;
    allocate auxiliary channel ch54 device type disk;
    allocate auxiliary channel ch55 device type disk;
    allocate auxiliary channel ch56 device type disk;
    allocate auxiliary channel ch57 device type disk;
    allocate auxiliary channel ch58 device type disk;
    allocate auxiliary channel ch59 device type disk;
    allocate auxiliary channel ch60 device type disk;
    duplicate database to <DBSID> backup location '/backup/rman/ec6_option1' nofilenamecheck noredo;
}

用户 oracle 执行此脚本:

rman auxiliary / cmdfile=rman_duplicate.cmd

典型输出看起来类似于:

   sql clone "alter system set  db_name =
 ''EC6'' comment=
 ''Modified by RMAN duplicate'' scope=spfile";
   sql clone "alter system set  db_unique_name =
 ''EC6'' comment=
 ''Modified by RMAN duplicate'' scope=spfile";
   shutdown clone immediate;
   startup clone force nomount
   restore clone primary controlfile from  '/backup/rman/ec6_option1/option1_cf_c-2254911489-20240516-00';
   alter clone database mount;

此时,数据库已成功克隆,重置日志也已打开,显示数据库已打开状态,并提示恢复管理器操作已成功完成。

检查目标系统上的存档日志状态

目标数据库成功恢复后,使用以下命令检查归档日志状态。

以用户 oracle 的身份运行 SQL*Plus 命令:

sqlplus "/ as sysdba"

SQL*Plus 中执行以下SQL命令:

SQL> archive log list;

典型的输出结果如下:

Database log mode              No Archive Mode
Automatic archival             Disabled
Archive destination            /oracle/EC6/oraarch/EC6arch
Oldest online log sequence     1
Current log sequence           1

以归档模式重启数据库

仍然以系统管理员身份使用 SQL*Plus,使用 NORMAL、IMMEDIATE 或 TRANSACTIONAL 选项关闭数据库实例:

SHUTDOWN IMMEDIATE

启动实例并挂载数据库:

STARTUP MOUNT

将数据库置于存档模式:

ALTER DATABASE ARCHIVELOG;

现在打开服务器上的数据库:

ALTER DATABASE OPEN;

并确认您的更改:

ARCHIVE LOG LIST;

最后,在这个目标系统上创建一个新的数据库备份,其中也包括存档文件。 如前文 “使用RMAN备份源文件 Oracle Database”部分所述

选择使用 nofilenamechecknoredo 与选项的原因 duplicate database

nofilenamecheck
选项 nofilenamecheck 将停止RMAN通过比较与复制备份的控制文件所包含的信息来预检查目标系统的目录和文件位置。 如果您想使用相同的文件系统位置、SID等将源数据库还原为1-2-1副本,这是必要的。 如果没有该选项,您会收到警告,并停止还原,指出已发现冲突,目标文件位置将恢复为与源文件位置匹配。 如果出现这种情况,请将 nofilenamecheck 添加到还原命令中并重新尝试,还原即可正常工作。
noredo
如前所述,必须在 rman_duplicate.cmd 脚本中的重复数据库命令中添加 noredo 选项。
这告诉RMAN您要还原完整的 offline 备份,并且不检查任何重写日志。 Oracle DBA在尝试使用备份命令中提到的 创建重复备份时,已经知道会出现这些问题。PLUS ARCHIVELOG

选项 2 - RMAN 还原/恢复数据库

Power Virtual Server 该程序通过初始不一致的数据集建立了一个 Oracle 数据库。 然后,它应用增量备份和归档重做日志来恢复特定时间点的数据库版本。

以 NOMOUNT 模式启动目标数据库

以下步骤应由用户 oracle 执行。 请按照惯例,将 <SID> 替换为您的系统SID值:

setenv ORACLE_SID <SID>

NOMOUNT 模式启动 Oracle 实例,直接指定要使用的配置文件。 请注意,在我们的环境中,我们使用 Oracle 在 SAP 环境中,因此我们的ORACLE_HOME是 /oracle/EC9/19.0.0,您的环境可能有所不同,因此请修改示例中的路径,并记住在此后提到的命令中替换您自己的 Oracle <SID>

sqlplus "/ as sysdba"
SQL> startup nomount pfile='/backup/rman/ora/initEC6.ora';
SQL> create spfile='/oracle/EC6/19.0.0/dbs/spfileEC6.ora' from pfile='/backup/rman/ora/initEC6.ora';
SQL> shutdown immediate;
SQL> startup nomount;
SQL> show parameter spfile;

显示参数的输出通常如下所示:

NAME                 TYPE            VALUE
---------          -------------    ---------------------------------
spfile               string          /oracle/EC6/19/dbs/spfileEC6.ora

获取备份文件集中的配置文件路径

控制文件(cf)已包含在完整备份(0级)中。 确定备份 option2 level0 文件集中控制文件的完整路径。

示例:

find /backup/rman/ec6_option2 -name "lev0_cf_*"

find命令会打印出所有与名称模式匹配的文件名,包括路径:

/backup/rman/ec6_option2/lev0_cf_c-2252531432-20240529-01

如果没有输出,请参考您使用选项2级别0程序创建的备份文件,以确定控制文件的位置,并检查备份文件集是否在目标服务器上以及位于何处。

使用 RMAN 恢复数据库 0 级备份的脚本 - 选项 2

修改恢复脚本,使其反映正确的控制文件,然后执行RMAN脚本,从0级备份还原数据库,并通过 recover database 应用该备份中包含的任何归档重做日志,因为 restore database 不应用归档重做日志。

请注意使用备份标记来指定我们要从哪个备份中恢复。 控制文件中的RMAN目录可能列出了多个备份。 为了进行测试,我使用了之前创建的备份部分中使用的相同备份标签,因此,为特定备份使用备份标签是一个很好的建议。

请记住,在执行脚本之前,数据库应在 nomount 中启动,控制文件的位置必须根据您的文件/备份位置进行调整,如下例所示。

option2_restore_level0.rman 脚本

connect target /
connect target /
set ENCRYPTION ALGORITHM 'AES256' ;
SET DECRYPTION IDENTIFIED BY passw0rd;
run {
  restore controlfile from '/backup/rman/ec6_option2/lev0_cf_c-2252531432-20240529-01';
  alter database mount;
  restore database from tag IBMECC02_EC6_LEV0;
  recover database;
}

还原脚本说明

请根据您的 Oracle 环境/安装情况,将 archiveredologscontrolfiles 替换为正确的位置。

备份文件是加密的,RMAN需要加密密码才能还原数据库文件。

SET DECRYPTION IDENTIFIED BY passw0rd;

我们从包含RMAN目录的0级备份中恢复数据库控制文件,我们需要使用该目录将备份文件映射到数据文件以及数据文件列表及其预期位置。

restore controlfile from '/backup/rman/ec6_option2/lev0_cf_c-2252531432-20240529-01';

然后,我们将数据库更改为 mount mode,这是下一步骤所需的。

alter database mount;

使用我们分配给0级备份的TAG,我们指示RMAN从该特定备份还原数据库。

restore database from tag IBMECC02_EC6_LEV0;

最后一步,我们将任何包含存档日志的0级备份应用到还原的数据库中。 请注意,这不会打开数据库,以便我们以后将增量备份和/或归档日志应用到数据库中。

recover database;

运行还原数据库 level0 脚本

确保数据库实例启动时 startup nomount

用户 oracle 执行还原脚本:

rman @restore_option2_lev0.rman

示例输出内容繁多,在此不一一列举。

恢复增量备份(第 1 级)

RMAN 0级完全备份已成功恢复。 下一步是恢复所有增量级别1备份集。

恢复增量备份(第 1 级)--最终备份除外

将剩余的增量级别1备份集和归档日志编入目标目录。 如果提供了多个增量备份,则这是一个迭代过程。

对于所有增量备份(最后一次除外),您只需执行

recover database ;

通过这一步,增量备份集被编目。

编目最终增量备份(第 1 级)

最后的增量备份要求恢复操作只能持续到特定时间,以便能够打开数据库!

目标数据库可以保持 MOUNT 状态,并根据需要连续应用增量级别1和归档的REDO日志。 将新的备份文件和归档日志编目,并恢复到最终切换准备就绪。

以下命令假定所有增量备份都存储在 /backup/rman 下的目录中。

仍然在SQL*Plus中,执行以下SQL命令:

RMAN> catalog start with '/backup/rman';

示例输出,仅显示第一个增量级别1备份中的备份文件:

searching for all files that match the pattern /backup/rman

List of Files Unknown to the Database
=====================================
File Name: /backup/rman/ec6_option2_inc1/inc1_EC6_dk2s0rg6_1460_1_1
File Name: /backup/rman/ec6_option2_inc1/inc1_EC6_dl2s0rgc_1461_1_1
File Name: /backup/rman/ec6_option2_inc1/inc1_EC6_dl2s0rgc_1461_2_1
File Name: /backup/rman/ec6_option2_inc1/inc1_EC6_dm2s0rgc_1462_1_1
File Name: /backup/rman/ec6_option2_inc1/inc1_EC6_dn2s0rgc_1463_1_1
File Name: /backup/rman/ec6_option2_inc1/inc1_EC6_do2s0rgc_1464_1_1
File Name: /backup/rman/ec6_option2_inc1/inc1_EC6_dp2s0rgc_1465_1_1
File Name: /backup/rman/ec6_option2_inc1/inc1_EC6_dq2s0rge_1466_1_1
File Name: /backup/rman/ec6_option2_inc1/inc1_EC6_dr2s0rgh_1467_1_1
File Name: /backup/rman/ec6_option2_inc1/inc1_EC6_ds2s0rgn_1468_1_1
        ...Lines Omitted ...
File Name: /backup/rman/ibmecc02/ec6_option2_inc1/inc1_EC6_eo2s0rlq_1496_1_1
File Name: /backup/rman/ibmecc02/ec6_option2_inc1/inc1_EC6_ep2s0rlu_1497_1_1
File Name: /backup/rman/ibmecc02/ec6_option2_inc1/inc1_EC6_eq2s0rm3_1498_1_1
File Name: /backup/rman/ibmecc02/ec6_option2_inc1/inc1_EC6_er2s0rm6_1499_1_1
File Name: /backup/rman/ibmecc02/ec6_option2_inc1/inc1_EC6_es2s0rma_1500_1_1
File Name: /backup/rman/ibmecc02/ec6_option2_inc1/inc1_EC6_eu2s0rmi_1502_1_1
File Name: /backup/rman/ibmecc02/ec6_option2_inc1/inc1_cf_c-2252531432-20240529-02

Do you really want to catalog the above files (enter YES or NO)? YES
cataloging files...
cataloging done

将最终增量备份(第 1 级)恢复到给定时间点

对于所有增量备份(最终备份除外),您可以在RMAN中执行以下操作:

请记住,由于备份是在加密状态下创建的,因此您需要更新RMAN中的配置,以便使用密码解密备份,否则您将遇到 ORA-19913: unable to decrypt backup 之类的错误,ORA-28365: wallet is not open

RMAN> SET ENCRYPTION ALGORITHM 'AES256' ;
RMAN> SET DECRYPTION IDENTIFIED BY passw0rd;
RMAN> recover database ;

在将最终增量备份文件编目后,恢复操作需要达到备份中确定的日期/时间

在最后一次恢复操作之后,预计不会再从恢复的角度对数据库进行任何更改。 设置时间和日期格式:

RMAN> alter session set nls_date_format='DD-MM-YYYY HH24:mi:SS' ;

您可以在此处找到日期范围示例:

RMAN> recover database until time '13-01-2024 11:52:12';

启动数据库

在按照描述对临时存档的 REDO 日志和最终的 RMAN 增量级别 1 进行分类和恢复后,数据库即可打开。

以用户 oracle 的身份运行sql plus:

sqlplus "/ as sysdba"
SQL> alter database open resetlogs ;

检查数据库模式

检查并确保在数据库恢复后,存档模式已启用。

用户 oracle 执行sqlplus命令:

sqlplus "/ as sysdba"

并仔细检查存档日志列表:

SQL> archive log list;

至此,数据库迁移到 Power Virtual Server 的还原/恢复方法已经完成。