RMAN(Recovery Manager)是一个Oracle数据库客户端,它在数据库上执行备份和恢复任务和自动管理备份策略。它大大地简化了备份,还原(restore)和恢复(recover)数据库文件。
RMAN环境包括在备份数据时扮演各个角色的工具和数据库。RMAN环境至少包括以下组件:
1)目标(target)数据库,RMAN使用TARGET关键字连接的数据库。目标数据库是RMAN执行备份和恢复操作的数据库。RMAN总是在数据库的控制文件中维护关于它对数据库的操作的元数据(metadata)。RMAN元数据也称为RMAN仓库(repository)。
2)RMAN客户端,Oracle数据库的可执行文件。用来解析命令,指引服务器会话来执行这些命令,和在目标数据库的控制文件中记录它的活动。RMAN可执行程序自动与数据库一起安装,通常如同其他数据库可执行文件一样位于相同的目录。例如,在Linux上RMAN客户端位于$ORACLE_HOME/bin。
有些环境使用以下可选的组件:
3)快速恢复区域(fast recovery area),数据库可以存储和管理与备份和恢复相关的文件的磁盘位置。可以使用初始化参数DB_RECOVERY_FILE_DEST和DB_RECOVERY_FILE_DEST_SIZE设置快速恢复区域的位置和大小。
4)恢复目录(recovery catalog),一个单独的数据库模式(schema),用来记录RMAN对一个或多个目标数据库的活动。如果控制文件丢失,恢复目录保留的RMAN仓库元数据在控制文件丢失后让还原和恢复变得更容易。数据库可能会覆盖控制文件中的旧记录,但RMAN会在恢复目录中永久地维护记录直到用户删除它们为止。
5)介质管理软件
RMAN需要应用程序来与顺序介质设备(sequential media device)比如磁带库交互。介质管理器在备份和恢复中控制这些设备,管理装载(load),标记(label),和卸载(unload)介质。介质管理设备有时被称为SBT(system backup to tape)设备。
这个章节讲解如何使用RMAN来做最基本的配置,不涉及恢复目录(recovery catalog)或介质管理器(media manager)。
在使用RMAN执行任何操作前,必须连接到目标数据库。
RMAN客户端在操作系统的命令提示符下使用命令rman启动。RMAN显示如下的命令提示符:
% rman
RMAN>
RMAN连接到数据库的指定和认证方式像SQL*Plus连接到数据库。唯一的区别是RMAN连接到主或辅助数据库要求SYSDBA或SYSBACKUP权限。任何用户都可以被授予该权限。
可以使用命令行选项或使用CONNECT TARGET连接到数据库。下面的示例启动rman,然后使用用户sbu通过Oracle Net连接到目标数据库,用户具有SYSBACKUP权限。
% rman
RMAN> CONNECT TARGET “sbu@orcl AS SYSBACKUP”;
target database Password: password
connected to target database: PROD (DBID=39525561)
使用EXIT退出RMAN客户端:
RMAN> EXIT
RMAN命令行选项语法:
RMAN
[ TARGET connectStringSpec | { CATALOG connectStringSpec } | LOG [‘] filename [’] [ APPEND ]
…
]…
connectStringSpec::=
[‘] [userid] [/ [password]] [@net_service_name] [’]
下面的示例将RMAN会话的输出附加到文本文件/tmp/msglog.log:
% rman TARGET / LOG /tmp/msglog.log APPEND
RMAN备份和恢复环境可以为每个目标数据库做预配置。即使退出和重启RMAN,配置是持久的,可以应用到目标数据库所有接下来的操作。
RMAN配置设置可以指定备份的设备,设置到这些设备的连接(称为通道),设置备份的策略等。
显示数据库当前的配置:
RMAN> SHOW ALL;
输出列出了重新创建这个配置的CONFIGURE命令。
使用BACKUP命令来备份文件。RMAN备份数据到为请求的备份类型设置的缺省设备中。
缺省情况下,RMAN在磁盘上创建备份。如果启用了快速恢复区域和没有指定FORMAT参数,那么RMAN在恢复区域创建备份和自动给它们唯一的名称。
缺省情况下,RMAN创建备份集(backup set)而不是映像拷贝(image copy)。备份集包含一个或多个备份片,它们以只有RMAN可以访问的格式写成的物理文件。多路复用的备份集(multiplexed backup set)包括来自多个输入文件的数据块。RMAN可以将备份集写到磁盘或磁带。
如果指定了BACKUP AS COPY选项,那么RMAN拷贝以映像拷贝的方式拷贝每个文件,它们是在磁盘上创建的数据库文件的逐位拷贝。映像拷贝等同于使用操作系统命令Linux的cp或Windows的COPY来创建的拷贝,但记录在RMAN仓库中,所以可以被RMAN使用。可以在数据库打开时使用RMAN来创建映像拷贝。
BACKUP命令包含大量的选项,参数,和子语句来控制备份输出。
下表列出一些常用的选项。
选项 | 描述 | 示例 |
---|---|---|
FORMAT | 指定备份片和拷贝的位置和名称。必须使用替代变量来产生唯的名称。最常用的替代变量是%U,用来产生唯一的名称。其它变量包括替代DB_NAME的%d,备份集时间戳的%t,备份集序号的%s,备份片序号的%p。 | BACKUP FORMAT ‘AL_%d/%t/%s/%p’ ARCHIVELOG LIKE’%arc_dest%'; |
TAG | 指定用户定义的字符串作为备份的标记。如果不指定TAG,RMAN分配默认的包括日期和时间的TAG。TAG总是以大写的方式保存在RMAN仓库中。 | BACKUP TAG ‘weekly_full_db_bkup’ DATABASE MAXSETSIZE 10M; |
如果数据库运行在归档模式(ARCHIVELOG),可以在数据库打开时进行备份。
如果备份包含在它的检查点之后的更改,它被称为不一致的备份。如果存在需要用来恢复备份的归档redo日志,打开状态的数据库的备份与一致性备份一样可以为数据提供有效的保护。
在数据库打开时备份数据库和归档redo日志:
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;
如果数据库运行在非归档模式(NOARCHIVELOG),唯一有效的数据库备份是一致性备份。
为了让备份一致,数据库必须在一致性关闭后挂载。在还原备份后,不明确要求进行恢复,但会丢失备份之后的所做的任何事务。可以使用一致性备份中的归档日志来恢复以最小化丢失的数据。
执行一致性数据库备份:
1) 一致性关闭数据库,然后挂载它。
例如,执行以下命令来保证数据库处于一致性状态。
RMAN> SHUTDOWN IMMEDIATE;
RMAN> STARTUP FORCE DBA;
RMAN> SHUTDOWN IMMEDIATE;
RMAN> STARTUP MOUNT;
2) 运行备份数据库命令。
RMAN> BACKUP DATABASE;
或为数据库的所有数据文件创建映像拷贝备份:
RMAN> BACKUP AS COPY DATABASE;
3)打开数据库,恢复正常操作。
RMAN> ALTER DATABASE OPEN;
增量备份捕获前一次的增量备份之后数据库所做的块级别的更改。
如果指定BACKUP INCREMENTAL,那么RMAN创建数据库的一个增量备份。增量备份一般比全量数据库备份更小和更快。使用增量备份来恢复比单独使用redo日志更快。
增量备份策略的起点是级别0的增量备份,它会备份数据库的所有块。级别0的增量备份在内容上等同于全量备份。然而,不像全量备份,级别0的增量备份是作为增量备份策略的一部分来考虑的。
级别1的增量备份只包含前一次增量备份之后的块更改。如果在当前或父数据库转生(incarnation)中没有级别0的增量备份存在,当运行级别1的备份时,RMAN会自动创建级别0的备份。
注:当非归档模式的数据库打开时,不能做增量备份。只有在数据库在一致性关闭之后再挂载起来,才能进行增量备份。
级别1的增量备份可以是累积的增量备份(cumulative incremental backup),包含自最近的级别0备份以来的所有数据块更改,或差异的增量备份(differential incremental backup),只包含最近的增量备份以来的数据块更改。增量备份默认是差异的增量备份。
在还原操作中,RMAN首先从级别0的备份中还原,然后自动应用增量备份和需要的redo日志。这会重新应用自备份开始以来对数据库所做的更改。
创建数据库的增量备份:
创建级别0的增量备份,作为增量备份策略的基准:
BACKUP INCREMENTAL LEVEL 0 DATABASE;
创建级别1的累积增量备份:
BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE;
创建级别1的差异增量备份:
BACKUP INCREMENTAL LEVEL 1 DATABASE;
增量更新的备份(incrementally updated backup)让你可以执行有效的不断增量的备份策略。
RMAN增量更新的备份具有以下主要特性:
1) 策略要求一个级别0的数据文件拷贝作为基准。这个拷贝有系统定义或用户定义的标签。
2) 定期地,级别1的差异备份会使用与级别0数据文件拷贝相同的标签创建。命令BACKUP FOR RECOVER OF COPY指定增量备份只包含自最近使用相同标签的增量备份以来的更改块。
3) 定期地,增量备份会应用到级别0的数据文件拷贝。因为这个数据文件拷贝会使用最近的更改来更新,它会需要更少的介质恢复。
下表讲解了使用哪些选项与FOR RECOVER OF COPY一起来执行增量更新的备份策略。
备份选项 | 描述 | 示例 |
---|---|---|
FOR RECOVER OF COPY WITH TAG ‘tag_name’ | 使用TAG为备份策略来鉴别充当基准的数据文件拷贝的标签。RMAN自动分配相同的标签给拷贝的每个级别1的备份。如果没有使用指定标签的级别0的数据文件拷贝存在当前数据库或父数据库转生中,那么RMAN使用指定的标签创建一个级别0的数据文件拷贝。 | BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG ‘incr_update’ DATABASE; |
FOR RECOVER OF COPY DATAFILECOPY FORMAT ‘format’ | 指定RMAN在哪里创建数据文件拷贝,如果拷贝不存在的话。如果增加一个新的数据文件到数据库,那么不需要更改脚本,因为RMAN会自动创建增量备份常规所要求的级别0的拷贝。 | BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY DATAFILECOPY FORMAT ‘/disk2/df1.cpy’ DATABASE; |
执行增量更新的备份策略:
–通过应用前一天执行的级别1的增量备份,向前滚动级别0的数据库拷贝
RECOVER COPY OF DATABASE
WITH TAG ‘incr_update’;
–创建一个级别1的增量备份
BACKUP
INCREMENTAL LEVEL 1
FOR RECOVER OF COPY WITH TAG ‘incr_update’
DATABASE;
RMAN验证(validation)检查一个备份来确认它是否可以被还原。验证也检查损坏块和缺失的文件。
使用VALIDATE命令来确认所有数据文件存在,位于正确的位置,没有物理损坏。选项CHECK LOGICAL也同时检查逻辑块损坏。
验证数据库文件:
执行以下命令来验证所有数据库文件和归档redo日志文件的物理和逻辑损坏:
BACKUP VALIDATE CHECK LOGICAL
DATABASE ARCHIVELOG ALL;
可以使用VALIDATE命令来检查个别的数据块,如下所示:
VALIDATE DATAFILE 4 BLOCK 10 TO 13;
也可以验证备份集,以下示例通过备份集key来指定备份集,在LIST BACKUP命令的输出可以看到:
VALIDATE BACKUPSET 3;
RMAN支持使用命令文件来管理重复的任务比如周备份。
命令文件是客户端侧的包含RMAN命令的文本文件,完全如在RMAN提示符下输入一样。可以使用任何文件扩展名。
存储脚本是命令文件的可替代方法,允许脚本对任何能够连接到目标数据库和恢复目录的RMAN客户端可用。
创建和运行命令文件:
1)使用文本编辑器创建命令文件:
# my_command_file.txt
CONNECT TARGET /
BACKUP DATABASE PLUS ARCHIVELOG;
LIST BACKUP;
EXIT
2)启动RMAN,运行命令文件的内容:
@/my_dir/my_command_file.txt # runs specified command file
也可以使用命令文件来启动RMAN运行:
% rman @/my_dir/my_command_file.txt
RMAN使用存储在RMAN仓库的信息来产生备份活动的报告。
使用RMAN命令LIST和REPORT来报告备份操作。使用SHOW ALL命令来显示当前的RMAN配置。另外,RMAN提供全面的视图集来生成自定义的报告。
命令LIST BACKUP和LIST COPY显示关于列在RMAN仓库中的备份和数据文件拷贝的信息。
可以使用以下选项来控制LIST的输出格式:
选项 | 示例 | 解释 |
---|---|---|
BY BACKUP | LIST BACKUP OF DATABASE BY BACKUP (list backup of spfile /controlfile /archivelog /datafile /tablespace) | 以备份集的输出来组织,这是报告的缺省模式。 |
BY FILE | LIST BACKUP BY FILE | 根据哪些文件被备份来显示备份 |
SUMMARY | LIST BACKUP SUMMARY | 显示概要输出 |
EXPIRED | LIST EXPIRED COPY | 列出记录在RMAN仓库中在上次运行CROSSCHECK命令时没有在期望的磁盘或磁带位置上存在的备份。过期的备份可能已被操作系统工具删除掉。 |
RECOVERABLE | LIST BACKUP RECOVERABLE | 列出在RMAN仓库中的状态为AVAILABLE和可以还原和恢复的数据文件备份或拷贝 |
列出备份和拷贝:
LIST BACKUP OF DATABASE;
LIST COPY OF DATAFILE 1, 2;
LIST BACKUP OF ARCHIVELOG FROM SEQUENCE 10;
LIST BACKUPSET OF DATAFILE 1;
命令REPORT执行比LIST命令更复杂的报告分析。
下表显示REPORT命令的主要选项。
选项 | 示例 | 解释 |
---|---|---|
NEED BACKUP | REPORT NEED BACKUP DATABASE | 显示哪些文件在当前保留策略下需要备份。使用可选项REDUNDANCY和RECOVERY WINDOW参数来指定不同的标准。REPORT NEED BACKUP redundancy 2; REPORT NEED BACKUP recovery window of 7days; |
OBSOLETE | REPORTOBSOLETE | 列出在配置的备份保留策略下过期的备份。使用可选项REDUNDANCY和RECOVERY WINDOW参数来指定不同的标准。 |
SCHEMA | REPORT SCHEMA | 报告当前时间(默认)或其它时间的数据库中的表空间和数据文件 |
UNRECOVERABLE | REPORT UNRECOVERABLE | 列出自从上次数据文件备份后以来,不可恢复操作在它们里面的对象上执行过的所有的数据文件 |
下面的示例报告根据当前配置的备份保留策略过期的备份:
REPORT OBSOLETE;
报告数据库中的数据文件和临时文件:
REPORT SCHEMA;
RMAN仓库元数据总是会存储在目标数据库的控制文件中。RMAN维护命令在管理备份时使用这些元数据。
使用CROSSCHECK命令来和存储介质上的文件(操作系统上存储的实际的物理文件备份,避免在系统中手动删除了实际的物理文件备份后,导致信息与RMAN仓库的记录不一致)同步RMAN备份和拷贝的逻辑记录。
如果备份在磁盘上,CROSSCHECK命令确认文件的头部是否有效。如果备份在磁带上,RMAN查询RMAN仓库来获取备份片的名称和位置。在删除备份和拷贝前进行交叉检查是一种好的方法。
执行CROSSCHECK命令:
CROSSCHECK BACKUP;
CROSSCHECK COPY;
命令DELETE从磁盘和磁带上移除RMAN备份和拷贝,在控制文件仓库中更新移除的文件的状态,从恢复目录中删除记录(如果使用catalog)。
如果交互运行RMAN,不指定NOPROMPT选项,那么DELETE命令显示文件列表和提示在删除列表中的任何文件前进行确认的信息。命令DELETE OBSOLETE非常有用,因为RMAN删除记录在RMAN仓库中的过期而不再需要的备份和数据文件拷贝。可以在DELETE命令中使用选项来指定哪些是过期的或使用配置的备份保留策略。
删除过期的备份和拷贝:
DELETE OBSOLETE;
Data Recovery Advisor是Oracle数据库工具,它为诊断持续的数据错误提供一个基础架构,提交修复选项给客户,和在用户的请求下执行修复。
故障是一个被Health Montior检测到的持续的数据损坏。示例包括物理和逻辑数据块损坏和缺失数据文件。
每个故障有一个故障优先级和故障状态。优先级可以是CRITICAL,HIGH或者LOW。状态可以是OPEN或CLOSED。
可以运行LIST FAILURE命令(RAC数据库不支持)来显示所有已知的故障。如果故障存在,那么在相同的会话中运行ADVISE FAILURE命令来确认恢复选项。ADVISE FAILURE输出显示手动和自动修复选项。首先尝试手动修复问题。如果不能手动修复问题,那么可以回顾自动修复部分。
自动修复选项描述了一个为一个或多个故障准备的服务器管理(server-managed)的修复。修复尽可能地整合在一起,这样一个修复就可以修复多个故障。修复选项指示哪个选项可以被执行和执行修复操作时是否有数据丢失。
如果不想使用Data Recovery Advisor来自动修复故障,那么可以使用脚本作为恢复策略的基准。
RMAN> LIST FAILURE;
Database Role: PRIMARY
List of Database Failures
=========================
Failure ID Priority Status Time Detected Summary
---------- -------- --------- ------------- -------
142 HIGH OPEN 23-APR-13 One or more non-system datafiles are missing
101 HIGH OPEN 23-APR-13 Datafile 1: '/disk1/oradata/prod/system01.dbf'
contains one or more corrupt blocks
RMAN> ADVISE FAILURE;
Database Role: PRIMARY
List of Database Failures
=========================
Failure ID Priority Status Time Detected Summary
---------- -------- --------- ------------- -------
142 HIGH OPEN 23-APR-13 One or more non-system datafiles are missing
101 HIGH OPEN 23-APR-13 Datafile 1: '/disk1/oradata/prod/system01.dbf'
contains one or more corrupt blocks
analyzing automatic repair options; this may take some time
using channel ORA_DISK_1
analyzing automatic repair options complete
Mandatory Manual Actions
========================
no manual actions available
Optional Manual Actions
=======================
1. If file /disk1/oradata/prod/users01.dbf was unintentionally renamed or moved, restore it
Automated Repair Options
========================
Option Repair Description
------ ------------------
1 Restore and recover datafile 28; Perform block media recovery of
block 56416 in file 1
Strategy: The repair includes complete media recovery with no data loss
Repair script: /disk1/oracle/log/diag/rdbms/prod/prod/hm/reco_660500184.hm
使用RMAN的REPAIR FAILURE命令来修复检测到的故障。
在RMAN会话中运行LIST FAILURE和ADVISE FAILURE之后,可以运行REPAIR FAILURE来执行修复选项。如果执行REPAIR FAILURE时不带其它选项,那么RMAN使用当前会话中最近的ADVISE FAILURE命令的第一个修复选项。或者,指定从最近的ADVISE FAILURE命令中获取的修复选项序号。
RMAN> REPAIR FAILURE;
缺省情况下,REPAIR FAILURE在开始执行前提示确认信息。在执行修复之后,Data Recovery Advisor重新评估所有可能已经修复的当前存在的故障的可能性。Data Recovery Advisor总是验证故障仍然是相关的和自动关闭修复的故障。如果因为一个错误导致修复失败未完成,那么错误会触发一个新的评估和重新评估存在的故障和修复选项。
可以使用闪回数据库来倒回整个数据库到一个过去的时间。不像介质恢复,不需要还原数据文件来返回数据库到一个过去的状态。
使用RMAN的FLASHBACK DATABASE命令,数据库必须在之前已经被配置为产生闪回日志。闪回数据库通过倒回对运行命令时存在的数据文件的更改来工作。不能使用闪回数据库来修复介质故障或缺失的数据文件。
当执行FLASHBACK DATABASE时,数据库必须处于挂载状态。可以闪回数据库到闪回数据库窗口范围内的任何时间。如果先前有创建一个还原点,那是很方便的,但不是必需的。
使用闪回数据库到回数据库:
1)确保数据库在挂载状态。
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
2)以下示例显示了不同形式的闪回数据库命令。
FLASHBACK DATABASE TO SCN 861150;
FLASHBACK DATABASE
TO RESTORE POINT BEFORE_CHANGES;
FLASHBACK DATABASE
TO TIMESTAMP TO_DATE(04-DEC-2009 03:30:00’,‘DD-MON-YYYY HH24:MI:SS’);
3)在执行闪回数据库后,以只读方式打开数据库,运行一些查询来验证数据库内容。
ALTER DATABASE OPEN READ ONLY;
4) 如果对结果满意,那么执行以下命令来关闭和打开数据库。
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE OPEN RESETLOGS;
使用RESTORE和RECOVER命令来还原和恢复物理数据库文件。
还原(restore)数据文件是从备份中按照需要找出它们来进行恢复操作。介质恢复(media recovery)是应用来自redo日志和增量备份的更改到还原的数据文件,将数据文件向前滚动到期望的SCN或时间点。
由于介质故障损坏数据库文件时,为了恢复数据库,首先要确保有必要的备份。
可以使用RESTORE … PREVIEW命令来报告,但不还原RMAN可以用来还原到指定时间的备份。RMAN查询元数据,但不实际读取备份文件。运行这个命令时数据库可以打开。
预览(preview)数据库还原和恢复:
1)列出当前的表空间和数据文件:
RMAN> REPORT SCHEMA;
2)运行RESTORE DATABASE和PREVIEW选项。
下面的命令指定SUMMARY,这样备份元数据就不会显示在冗余模式:
RMAN> restore database preview summary;
Starting restore at 22-APR-22
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=9753 instance=orcl1 device type=DISK
List of Backups
===============
Key TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag
------- -- -- - ----------- --------------- ------- ------- ---------- ---
10 B F A DISK 20-APR-22 1 1 NO TAG20220420T192807
using channel ORA_DISK_1
List of Archived Log Copies for database with db_unique_name ORCL
=====================================================================
Key Thrd Seq S Low Time
------- ---- ------- - ---------
470 1 152 A 20-APR-22
Name: +RECO/ORCL/ARCHIVELOG/2022_04_20/thread_1_seq_152.429.1102534235
…
484 2 142 A 21-APR-22
Name: +RECO/ORCL/ARCHIVELOG/2022_04_21/thread_2_seq_142.437.1102619691
488 2 143 A 21-APR-22
Name: +RECO/ORCL/ARCHIVELOG/2022_04_21/thread_2_seq_143.440.1102623637
recovery will be done up to SCN 24758270
Media recovery start SCN is 24758270
Recovery must be done beyond SCN 24758270 to clear datafile fuzziness
Finished restore at 22-APR-22
使用RESTORE DATABASE和RECOVER DATABASE命令来恢复整个数据库。
必须具有之前对需要的所有文件做的备份。这个场景假设可以还原所有数据文件到它们原来的位置。如果原来的位置不可以访问,那么使用SET NEWNAME来设置新的还原位置。
还原整个数据库:
1)将数据库置于挂载模式。
下面的示例停止数据库实例(如果它启动的话)和挂载数据库:
RMAN> STARTUP FORCE MOUNT;
2)还原数据库。
下面的示例使用预先配置的磁盘通道来还原数据库:
RMAN> RESTORE DATABASE;
3)还原数据库。
RMAN> RECOVER DATABASE;
4)打开数据库。
RMAN> ALTER DATABASE OPEN;
使用RESTORE TABLESPACE和RECOVER TABLESPACE命令在数据库打开时恢复个别的表空间。在这种情况中,必须将需要恢复的表空间脱机,还原和恢复表空间,再将恢复的表空间联机。
如果不能还原数据文件到原来的位置,那么在RUN块中使用RMAN的SET NEWNAME来指定新的文件名称和位置。之后,使用SWITCH DATAFILE ALL命令来更新控制文件来反映所有在RUN块中使用SET NEWNAME命令指定的数据文件的新名称。
当数据库打开时恢复个别表空间:
1)将要恢复的表空间脱机。
RMAN> ALTER TABLESPACE users OFFLINE;
2)还原和恢复表空间。
下面在RMAN提示符下执行的RUN命令,为表空间USERS的数据文件设置新的名称。
RUN
{
SET NEWNAME FOR DATAFILE ‘/disk1/oradata/prod/users01.dbf’
TO ‘/disk2/users01.dbf’;
RESTORE TABLESPACE users;
SWITCH DATAFILE ALL; # update control file with new file names
RECOVER TABLESPACE users;
}
3)将表空间联机。
RMAN> ALTER TABLESPACE users ONLINE;
也可以使用RESTORE DATAFILE和RECOVER DATAFILE在数据文件级别恢复。
RMAN可以恢复个别损坏的数据文件块。
当RMAN为备份对文件执行完整的扫描时,任何损坏的数据块都会列在V$DATABASE_BLOCK_CORRUPTION。损坏通常会在alert日志,跟踪文件或SQL查询结果中报告。
恢复数据块:
1)获取损坏数据块的块号。
RMAN> SELECT NAME, VALUE FROM V$DIAG_INFO;
2)恢复所有损坏的块。
RMAN> RECOVER CORRUPTION LIST;
也可以恢复个别的块。
RMAN> RECOVER DATAFILE 1 BLOCK 233, 235 DATAFILE 2 BLOCK 100 TO 200;
来源:《Oracle Database Backup and Recovery User’s Guide,19c》