Oracle®10g数据库备份和恢复快速入门指南

Oracle®数据库备份和恢复快速入门指南

10g2版(10.2

B14193-03

200511

Oracle数据库备份和恢复快速入门指南有三个目的:

。介绍Oracle数据库的备份和恢复的基本概念,恢复管理器(RMAN),以及Oracle建议您使用的备份和恢复工具 

。为其余的备份和恢复文档集指明方向

。作为使用最频繁的RMAN命令,选项,和视图的一个方便快速参考

本文档按以下几个部分进行组织:

。备份和恢复文档集概述

RMAN环境概述

RMAN的启动和退出

。配置RMAN环境的持久性设置

。备份数据库文件

。还原和恢复数据库文件

RMAN操作上的报告

RMAN信息库管理

。重复任务:RMAN和脚本

RMAN的语法快速参考

。备份和恢复的视图

1备份和恢复文档集概述

除了本快速入门指南外,在备份和恢复文档集中还有三卷。

Oracle数据库备份和恢复基础解释备份和恢复的概念和更详细使用RMAN进行备份,恢复和报告的最常用的技术,以及为如何规划备份和恢复策略提供了更多的信息。

Oracle数据库备份和恢复高级用户指南介绍RMAN的体系结构,备份和恢复的概念和机制,高级恢复技术如基于时间点的恢复和数据库闪回功能,备份和恢复性能调优等深层次的信息。它还包括用户管理的备份和恢复,使用主机操作系统的设施代替RMAN。此卷对于更复杂的数据库部署的备份和恢复,以及更精密的恢复情景是必不可少的。

Oracle数据库备份和恢复参考为所有恢复管理器命令提供了完整语法和语义信息,并讲解了用于报告数据库备份和恢复活动的视图。

2 RMAN环境概述

与数据库一起安装的恢复管理器(RMAN)是一种Oracle数据库客户端,它执行数据库备份和恢复任务和自动管理​​您的备份策略。它大大简化了备份,还原和恢复数据库文件的过程。

RMAN环境包括实用工具和为备份提供数据的数据库。在最低限度下, RMAN环境必须包含以下内容:

。需要备份的目标数据库;

RMAN客户端,它解释备份和恢复命令,指示服务器会话来执行这些命令,并在目标数据库的控制文件中记录备份和恢复活动。

某些环境中也会使用下列可选组件:

。一个闪回恢复区,一个磁盘上的位置用来使该数据库可以存储和管理备份和恢复相关的文件;

。介质管理软件,按RMAN的需要提供备份设备如磁带驱动器的接口;

。恢复目录数据库,用来记录对一个或多个目标数据库进行的RMAN活动的一个单独的数据库。

关于目标数据库

目标数据库是您使用RMAN备份,还原,或恢复的数据库。

关于RMAN客户端

RMAN是面向命令行的数据库客户端,与SQL * Plus非常类似,具有自己的命令语法。你可以从RMAN客户端发出RMAN命令和SQL语句来执行和报告备份和恢复操作。

RMAN可以采取互动式输入或从纯文本文件(称为命令文件)读取输入。 RMAN与一个或多个目标数据库服务器上实际执行工作的服务器进程进行通信。您还可以通过企业管理器访问RMAN;其详细信息请参阅Oracle企业管理器管理者指南。

RMAN可执行文件通常安装在数据库中其他的可执行文件相同的目录内。例如,在Unix系统上,RMAN的可执行文件位于$ORACLE_HOME/bin中。

关于RMAN信息库

RMANRMAN信息库中维护目标数据库的元数据以及此数据库的备份和恢复操作。除此之外,RMAN存储其自己的配置设置,目标数据库模式,归档重做日志,在磁盘或磁带上的所有备份文件的信息。RMANLISTREPORT,  SHOW 命令显示RMAN信息库中的资料。

RMAN信息库中数据主要存储的始终是目标数据库的控制文件。初始化参数CONTROL_FILE_RECORD_KEEP_TIME控制在这些备份记录被重用来保存最近的备份信息之前在控制文件中保存它们多久。

RMAN信息库中的数据的另一个副本也可以保存在恢复目录中。

关于恢复目录

使用恢复目录保存RMAN信息库中的信息,如果控制文件丢失,从而更容易在控制文件的丢失后进行还原和恢复。 (备份的控制文件可能不包含最近的可用备份的完整信息)。由于控制文件记录数量上的限制,恢复目录也可以比控制文件储存更多的备份历史。

除了RMAN信息库中记录,恢复目录也可以保存RMAN存储脚本,即常见的备份任务的RMAN命令序列。集中存储在恢复目录中的脚本用起来比工作命令文件更方便。

除了存储脚本,是否使用恢复目录RMAN的其他所有功能使用起来没什么差别。关于恢复目录的详细信息,请参阅Oracle数据库备份和恢复高级用户指南

关于闪回恢复区

自动的基于磁盘的备份和恢复功能通过管理闪回恢复区中的所有与备份和恢复相关的文件,简化了管理备份和恢复相关的磁盘空间和文件。你可以使用初始化参数DB_RECOVERY_FILE_DESTDB_RECOVERY_FILE_DEST_SIZE设置磁盘上的闪回恢复区的位置和大小的。您还可以指定何时备份可能被丢弃的保留策略。 RMAN然后管理您的备份存储,在需要空间时删除过时的备份以及已经复制到磁带的备份,只要空间允许就尽可能保留许多磁盘上的备份。这最大限度地减少从磁带恢复过程中的数据恢复操作,缩短还原时间和恢复时间。

关于介质管理

为了访问如磁带库这样的顺序介质设备,RMAN使用第三方介质管理软件。一个介质管理器控制备份和恢复过程中的这些设备,管理介质的装载,标记和卸载等功能。介质管理设备有时也被称为SBT(系统备份到磁带)设备。

Oracle备份解决方案计划(BSP)用于帮助供应商为他们的设备开发介质管理软件。对于已经在他们的环境中使用介质管理软件企业来说,很多这种软件产品可以直接与RMAN进行集成。与介质管理软件供应商联系以便获取详细信息看他们是否参与了BSP以及是否具有一个RMAN兼容的介质管理层。

关于RMAN通道

RMAN使用目标数据库实例的服务器会话来执行所有的备份,还原和恢复操作。被称为RMAN通道由RMAN使用的每个服务器会话。

一个通道可以是一个磁盘通道,用于备份任务执行磁盘的I/O,或一个SBT通道,它是用于与介质管理器进行交互。

在一系列RMAN命令开始时,你可以使用RMANALLOCATE CHANNEL命令,分配通道,指定用于任务的服务器会话的数目,并设置影响每个服务器会话的行为的配置。 (请注意,为了使用ALLOCATE CHANNEL,你必须将命令组合在一起放在RUN块中共用这一分配的通道。RMAN RUN命令在控制脚本:RUN命令中描述。)

您还可以使用RMAN CONFIGURE命令配置通道,指定通道的持久设置,如果你不明确为特定任务分配通道,RMAN在此默认情况下将分配此持久设置的通道。作为配置设置的结果所分配的通道有时被称为自动通道。如果明确分配了任何通道,那么配置通道设置将被忽略。

RMAN作业中使用的通道数量控制的并行运行任务的数量。当备份或恢复文件,RMAN尽量利用所有可用的通道自动安排任务。

RMAN连接到目标数据库时一个磁盘通道立即开始,只要RMAN还在连接便一直保留此通道。这个通道被称为默认的通道,它不用于批量数据传输,如备份或恢复数据库文件所涉及的任务。

3启动和退出的RMAN

在您的操作系统的命令提示符下通过执行RMAN命令而启动RMAN客户端。

RMAN必须连接到目标数据库(具有SYSDBA权限)才能执行备份和恢复任务。 如果您正在使用恢复目录的话,RMAN也可以连接到恢复目录数据库。使用命令行选项或使用connect命令指定目标数据库和恢复目录数据库。

下列命令说明在启动RMAN时将RMAN连接到目标数据库和恢复目录:

% rman TARGET / CATALOG cat_usr/pwd@cat_str 

不使用恢复目录的情况下,连接到目标数据库:

% rman TARGET SYS/pwd@target_str 
 
没有连接到目标数据库而启动RMAN
% rman

一旦启动,RMAN显示“RMAN>” 提示你输入命令。

常用RMAN命令行选项的语法

RMAN 
[ TARGET [=] connectStringSpec 
| { CATALOG [=] connectStringSpec } 
| LOG [=] ['] filename ['] [ APPEND ]
.
.
. 
]...
 
connectStringSpec::=
['] [userid] [/ [password]] [@net_service_name] [']

下面例子将输出追加RMAN会话文本文件$ORACLE_HOME/dbs/log/msglog.log后面

% rman TARGET / LOG $ORACLE_HOME/dbs/log/msglog.log APPEND

要退出RMAN客户端,在RMAN提示符下键入EXIT

RMAN> EXIT

 

4配置RMAN环境的持久性设置

你可以使用RMAN CONFIGURE命令来创建RMAN环境的持久设置,这种设置将作用于所有后续操作,即使你退出并重新启动RMAN。这些配置项的设置,可以指定diskSBT通道行为,备份目的地,影响备份的备份策略,以及其他的配置项。下面介绍一些常用的配置设置。有关配置设置的更多信息请参阅Oracle数据库备份和恢复基础。

查看当前的设置

下列命令将显示所有可配置设置:

RMAN> SHOW ALL;

其输出列出重新创建当前配置项的所有配置命令。

配置磁盘设备和通道

默认情况下,RMAN的所有操作自动分配一个磁盘通道,如果没有指定目的地,则指示所有备份备份到磁盘。如果您的数据库使用闪回恢复区,并且没有在BACKUP命令中指定其他的备份位置,那么备份到闪回恢复区上。否则,假定磁​​盘备份被存储在与平台相关的默认位置。

通过使用具有 FORMAT子句的命令CONFIGURE CHANNELDEVICE TYPE DISK,您还可以配置一个磁盘通道的格式,为备份指定不同的默认位置。

下面的命令配置RMAN写磁盘备份到/tmp目录:

RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/tmp/%U';

当进行备份时格式说明符%U将用特定文件的唯一文件名替换。关于配置磁盘备份的目的地的更多细节请参阅Oracle数据库备份和恢复高级用户指南。

要撤消默认为备份磁盘上的位置的配置,请使用下列CONFIGURE命令来清除设置:

RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT CLEAR;

RMAN将写入备份到默认位置。

配置磁带设备和通道

在配置您的介质管理软件后,可以使介质管理器RMAN备份的默认位置:

RMAN> CONFIGURE DEFAULT DEVICE TYPE TO sbt;

一些介质管理器需要PARMS的的字符串来配置设备的设置:

RMAN> CONFIGURE CHANNEL DEVICE TYPE sbt PARMS='ENV=mml_env_settings';

可以配置多个通道以便并行执行备份。下列命令配置在RMAN作业中使用三个SBT渠道:

RMAN> CONFIGURE DEVICE TYPE sbt PARALLELISM 3;
配置保留策略

保留策略用来控制数据库备份保留多久,并决定了你可以恢复你的数据库回到过去有多远。保留策略可以设置成恢复窗口(你需要能够恢复数据库成为回到过去有多远),或冗余值(必须保留每个文件多少份备份)。选择一个有效的保留策略,是您的备份策略的一个重要组成部分。

此命令确保RMAN的保留所需要的所有备份将数据库恢复到在过去7天内任意的时间点:

RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;

此命令确保RMAN保留每个数据文件的三个备份:

RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY 3;

使用DELETE OBSOLETE立即删除保留策略不再需要的备份。 (闪回恢复区中存储的备份,你不需要执行此步骤。数据库在需要空间时将自动删除在闪回恢复区中过时的备份以及已经备份到介质管理器的文件。)

您还可以使用BACKUPCHANGE命令的KEEP选项为单个备份覆盖配置的保留策略 - 例如,强制保留一个重要的数据库变化之前所进行的特定备份。

配置控制文件自动备份

每次RMAN备份后,作为一种保护RMAN信息库的方式,可以自动备份控制文件。下面的命令配置RMAN创建这些控制文件自动备份

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;

默认情况下,RMAN自动生成控制文件自动备份的名称,并把它们存储在闪回恢复区。以下命令配置RMAN写入控制文件自动备份到/mybackupdir目录:

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT 
           FOR DEVICE TYPE DISK TO '/mybackupdir/cf%F';

格式字符串%F元素由DBID,一天,一个月,一年,以及生成一个唯一文件名的序列号组成。%F必须包含在任何控制文件自动备份格式中。

还原配置设置的默认值

通过运行带 CLEAR选项的命令,重置任何CONFIGURE设置为其默认值,如下所示:

RMAN> CONFIGURE CHANNEL DEVICE TYPE sbt CLEAR;
RMAN> CONFIGURE RETENTION POLICY CLEAR;
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK CLEAR;

 

5备份数据库文件

使用RMAN BACKUP命令备份文件。你通常会预先设定的默认设备和通道;  BACKUP备份你的数据到备份请求类型的配置的默认设备和通道。

如果指定为BACKUP AS COPY,那么RMAN复制映像副本,即在磁盘上创建数据库文件的位-位拷贝文件。这些文件与您可以通过操作系统命令如在Linux上的cpWindows COPY创建相同文件的副本都是一致的,但通过使用BACKUP AS COPY它们记录在RMAN信息库中,从而RMAN在进行还原操作时可以使用它们。请注意不能在磁带上创建映像副本。

下列命令创建数据库中的所有数据文件的映像副本备份:

RMAN> BACKUP AS COPY DATABASE;

如果指定BACKUP AS BACKUPSET,那么RMAN备份集中存储备份。备份集由一个或多个备份件构成,所谓备份件是包含备份数据的物理文件,它们是按照只有RMAN可以访问的格式生成的。只有RMAN可以创建和还原备份集。可以写入到磁盘或磁带上,并且备份集是RMAN可以写入备份到磁带上的唯一方式。

下面的命令使用配置的通道按备份集的格式在磁带上创建一个数据库和归档日志的备份:

RMAN> BACKUP DEVICE TYPE sbt DATABASE PLUS ARCHIVELOG;
注意:
在磁盘上按备份集备份数据文件可以节省磁盘空间和时间,因为RMAN备份时可以跳过一些未使用的数据文件块。备份集,一旦写到磁盘上,便可以用BACKUP BACKUPSET命令移动到磁带上。请参阅Oracle数据库备份和恢复参考有关详细信息关于未使用块压缩的描述。

备份单独的文件

通过使用各种选项,您可以备份单个表空间,数据文件和控制文件,服务器参数文件,备份集,如下列例子所示:

RMAN> BACKUP ARCHIVELOG COMPLETION TIME BETWEEN 
        'SYSDATE-31' AND 'SYSDATE-7';
RMAN> BACKUP TABLESPACE system, users, tools;
RMAN> BACKUP AS BACKUPSET DATAFILE 
        'ORACLE_HOME/oradata/trgt/users01.dbf', 
        'ORACLE_HOME/oradata/trgt/tools01.dbf';
RMAN> BACKUP DATAFILE 1,3,5;
RMAN> BACKUP CURRENT CONTROLFILE TO '/backup/curr_cf.copy';
RMAN> BACKUP SPFILE;
RMAN> BACKUP BACKUPSET ALL;

 

备份选项

下面是一些经常使用的备份命令选项:

参数    例子             说明
FORMAT    FORMAT '/tmp/%U'    指定一个备份件和副本的位置和名称。你必须使用代换变量来生成唯一的文件名。
TAG        TAG 'monday_bak'    指定用户定义的字符串作为备份标签。如果你不指定一个标签,那么RMAN分配一个默认的日期和时间标签。

下列BACKUP命令说明这些选项:

RMAN> BACKUP FORMAT='AL_%d/%t/%s/%p' ARCHIVELOG LIKE '%arc_dest%';
RMAN> BACKUP TAG 'weekly_full_db_bkup' DATABASE MAXSETSIZE 10M;
RMAN> BACKUP COPIES 2 DEVICE TYPE sbt BACKUPSET ALL;

 

增量备份

如果你指定BACKUP INCREMENTALRMAN将创建数据库的增量备份。增量备份以块为单位捕捉数据库中以前增量备份以来块的变化。增量备份策略的起始点是0级增量备份,而0级增量备份备份了数据库中的所有块。 1增量备份,定期执行,它只包含以前增量备份以来更改的数据块。这些增量备份可以是累积的(包括最新的0级备份以来更改的所有块)或差异的(无论最近期的增量备份是0级或1级,只包括最近期的增量备份以来改变的块)。

一般说来,与创建完整数据库备份相比,增量备份都比较小并且速度较快。从增量备份恢复比只使用重做日志恢复快。从增量备份的还原过程中,0级备份为出发点,然后在1级备份的基础上对更改的块进行更新,此时尽可能避免使用重做日志进行重做。使用增量备份的恢复,不需要额外的努力。如果增量备份是可用的,那么RMAN将在恢复过程中使用它们。

增量更新备份

RMAN增量更新备份功能,使得可以具有更有效的增量备份过程。从1级备份的变化可用于向前滚形成0级增量备份的映像副本,所以,它包括创建的1级增量备份SCN的所有变化。恢复使用更新后的0级增量备份速度更快,因为使用了来自1级增量备份所有更改。

参见《Oracle数据库备份和恢复基础》获取关于增量备份和增量更新备份更多的细节和例子。

验证备份

你可以对不会产生任何输出的RMAN备份进行测试。通过测试验证确认某个备份是否可以运行,通过确认所有数据库文件存在,并且在正确的位置上,并且没有物理和逻辑的损坏。例如:

RMAN> BACKUP VALIDATE DATABASE ARCHIVELOG ALL;

 

6还原和恢复数据库文件

RMAN使用RESTORE  RECOVER 命令还原和恢复物理数据库文件。还原数据文件是从备份中取回恢复操作所需要的文件。而恢复则是从重做日志和增量备份中将改变用于已经还原的数据文件,以便将数据文件前推到所需的SCN或时间点。

恢复整个数据库

在整个数据库使用RESTORE DATABASERECOVER DATABASE 命令。例如:

RMAN> STARTUP FORCE MOUNT;
RMAN> RESTORE DATABASE;
RMAN> RECOVER DATABASE;
RMAN> ALTER DATABASE OPEN;

注意还原或恢复整个数据库时,数据库必须不是打开的。

恢复当前的表空间

当数据库是打开的状态下可使用RESTORE TABLESPACE  RECOVER TABLESPACE 命令恢复单个表空间。先将要恢复表空间脱机,然后还原和恢复它,最后将恢复了表空间联机。以下步骤恢复users表空间:

RMAN> SQL 'ALTER TABLESPACE users OFFLINE';
RMAN> RESTORE TABLESPACE users;
RMAN> RECOVER TABLESPACE users;
RMAN> SQL 'ALTER TABLESPACE users ONLINE';
 
恢复当前数据文件

当数据库是打开的状态下可使用RESTORE DATAFILE  RECOVER DATAFILE命令恢复当前的单个数据文件。先将需要恢复的数据文件脱机,然后还原和恢复此数据文件,最后使数据文件联机。例如,还原和恢复数据文件7

RMAN> SQL 'ALTER DATABASE DATAFILE 7 OFFLINE';
RMAN> RESTORE DATAFILE 7;
RMAN> RECOVER DATAFILE 7;
RMAN> SQL 'ALTER DATABASE DATAFILE 7 ONLINE';
 
恢复个别的数据块

RMAN可以恢复个别损坏的数据文件块。当RMAN对要进行备份的文件执行完整扫描时,会将文件中任何损坏的块列入V$DATABASE_BLOCK_CORRUPTION。损坏通常会在警报日志、跟踪文件或SQL查询结果中进行报告。使用BLOCKRECOVER修复损坏的块:

RMAN> BLOCKRECOVER CORRUPTION LIST;

还可以恢复单个块,在这个例子中所示:

RMAN> BLOCKRECOVER DATAFILE 7 BLOCK 233, 235 DATAFILE 4 BLOCK 101;
 
验证还原

你可以运行一个RESTORE... VALIDATE 操作,以确认还原操作可以顺利完成。 RMAN的决定操作所需的备份集,数据文件副本,归档日志,并扫描它们以便检验是否可用。例如:

RMAN> RESTORE DATABASE VALIDATE;
7 RMAN操作上的报告

RMAN LISTREPORT命令,生成基于RMAN信息库中的备份活动的报告。使用SHOW ALL显示当前的RMAN配置。你还可以查询备份和恢复的视图中所述的视图。

列出备份

运行LIST BACKUPLIST COPY命令显示在资料库中所罗列的备份和数据文件副本的信息。您可以显示特定的对象,如下面的例子:

RMAN> LIST BACKUP OF DATABASE;
RMAN> LIST COPY OF DATAFILE 1, 2, 3;
RMAN> LIST BACKUP OF ARCHIVELOG FROM SEQUENCE 1437;
RMAN> LIST CONTROLFILECOPY "/tmp/cf.cpy";
RMAN> LIST BACKUPSET OF DATAFILE 1;

对于备份,你可以控制这些选项列表的输出格式:

参数                     例子                                                                说明
BY BACKUP            LIST BACKUP OF DATABASE BY BACKUP           通过备份集组织输出。这是显示的默认模式。
BY FILE                  LIST BACKUP BY FILE                                     按那些已经备份的文件清单列出备份信息。
SUMMARY              LIST BACKUP SUMMARY                                      显示摘要输出。默认情况下,输出是冗长的(VERBOSE)。

对于备份和副本,您有以下附加选项:

参数                        例子                                                       说明
EXPIRED                LIST EXPIRED COPY                             列出记录在RMAN信息库中的备份,并且这些备份在执行最后一个CROSSCHECK命令时并未在磁盘或磁带所期望的位置上。可能通过RMAN以外的方式已删除这些备份。
RECOVERABLE      LIST BACKUP RECOVERABLE               列出可用的数据文件的备份或副本,它们可在当前数据库的化身上进行还原和恢复。

数据库文件和备份报告

REPORT命令执行比LIST更复杂的分析。一些主要的选项是:

参数                        例子                                                       说明
NEED BACKUP       REPORT NEED BACKUP DATABASE    显示在当前的保留策略下哪些文件需要备份。使用可选的REDUNDANCY  RECOVERY WINDOW参数来指定不同的标准。
OBSOLETE             REPORT OBSOLETE                             列出根据配置的保留策略已经过时的备份。使用可选的REDUNDANCY  RECOVERY WINDOW参数来指定不同的标准。
UNRECOVERABLE  REPORT UNRECOVERABLE                  列出所有这样的数据文件,自上次备份以来已经对这些文件中的某个对象执行了一个不可恢复的操作。
SCHEMA                REPORT SCHEMA                                 报告在当前时间(默认)或不同的时间数据库中的表空间和数据文件。

通过V$打头的视图监测RMAN 

作业的进展和完成的状态信息存储在V$RMAN_STATUS中。V$RMAN_OUTPUT包含所有RMAN作业的文字输出。

要查看在V$RMAN_STATUS中的作业的状态信息,使用以下查询:

SELECT OPERATION, STATUS, MBYTES_PROCESSED, START_TIME, END_TIME from
V$RMAN_STATUS;

RMAN作业正在执行时,为了获取与进程关联的通道,可以在SQL * Plus中运行下面的查询:

SQL> COLUMN CLIENT_INFO FORMAT a30
SQL> COLUMN SID FORMAT 999
SQL> COLUMN SPID FORMAT 9999
 
SQL> SELECT s.SID, p.SPID, s.CLIENT_INFO
      FROM V$PROCESS p, V$SESSION s
      WHERE p.ADDR = s.PADDR
      AND CLIENT_INFO LIKE 'rman%';

RMAN作业正在执行时,为了计算RMAN作业进度,在执行的SQL * Plus中运行下面的查询:

SQL> SELECT SID, SERIAL#, CONTEXT, SOFAR, TOTALWORK,
       ROUND(SOFAR/TOTALWORK*100,2) "% COMPLETE"
       FROM V$SESSION_LONGOPS 
       WHERE OPNAME LIKE 'RMAN%' AND OPNAME NOT LIKE '%aggregate%' 
       AND TOTALWORK != 0 AND SOFAR <> TOTALWORK;
8管理RMAN信息库

RMAN信息库元数据总是存储在目标数据库的控制文件中。你也可以在一个单独的数据库中创建恢复目录,RMAN将在恢复目录记录数据库的元数据。

监控控制文件中的记录

如果你不使用恢复目录,然后最终RMAN控制文件中的记录都将被覆盖。为了确定多长时间的记录被保持在目标数据库的参数文件中设置初始化参数:

CONTROL_FILE_RECORD_KEEP_TIME = number_of_days_to_keep
 
交叉检查备份

CROSSCHECK命令检查库中的RMAN备份和副本是否通过RMAN仍然可读的。假设你已经配置了自动通道,你可以执行下列命令:

RMAN> CROSSCHECK BACKUP; # checks RMAN backups on configured devices
RMAN> CROSSCHECK COPY; # checks RMAN image copies on configured devices

如果备份存储介质管理器和SBT通道都没有配置,那么在SBT设备上执行CROSSCHECKDELETE命令之前你必须分配一个维护通道:

RMAN> ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE sbt;
RMAN> CROSSCHECK BACKUP;
 
删除通过RMAN创建的备份

DELETE命令删除DISKSBT设备上的RMAN备份和副本,并在控制文件中的相关对象标记为 DELETED,并从恢复目录(如果您使用目录)中删除记录。例如:

RMAN> DELETE BACKUPSET 101, 102, 103;
RMAN> DELETE CONTROLFILECOPY '/tmp/cf.cpy';
RMAN> DELETE NOPROMPT ARCHIVELOG UNTIL SEQUENCE = 7300;
RMAN> DELETE BACKUP OF SPFILE TABLESPACE users DEVICE TYPE sbt;
RMAN> DELETE BACKUP OF DATABASE LIKE '/tmp%'; # pattern match
RMAN> DELETE ARCHIVELOG ALL BACKED UP 2 TIMES TO DEVICE TYPE sbt;

DELETE命令下面的选项也非常有用:

参数                      例子                                               说明
EXPIRED                DELETE EXPIRED                                 删除通过CROSSCHECK命令标记为过期(即未找到)的备份和副本。
OBSOLETE             DELETE OBSOLETE                              删除根据保留策略过时的备份和副本。REDUNDANCY  RECOVERY WINDOW参数覆盖配置的策略。
NOPROMPT            DELETE NOPROMPT OBSOLETE          指定当删除文件时无需提示确认删除。

对备份和副本进行编目和取消编目

CATALOG命令将可用备份的信息加入到RMAN信息库中。使用此命令来记录非RMAN的其他工具所创建的备份,例如操作系统级工具创建的数据文件副本。您还可以使用此命令将RMAN创建的不再在RMAN信息库中列出的备份重新加入RMAN信息库中。 RMAN在还原和恢复操作可以使用这些备份。例如:

RMAN> CATALOG DATAFILECOPY '/backup/users01.bak'; # copy made with operating system copy cmd
RMAN> CATALOG LIKE '/backup' 

注意第二个例子中,增加了所有可用的备份文件路径/备份RMAN信息库中,包括在目录中的文件/backup/users01.bak,在子目录的文件,如/ backup/tuesday/users01.bak.old,以及名称以/backup开始的文件,如/backup-2001/users01.bak.old。当为CATALOG LIKE选定参数时要当心。

CHANGE ... UNCATALOG语法允许你删除RMAN信息库中的备份和副本的信息。如果您使用操作系统命令手动删除备份,可用CHANGE ... UNCATALOG更新信息库,以反映这一变化。例如:

RMAN> CHANGE CONTROLFILECOPY '/tmp/cf.cpy' UNCATALOG;
RMAN> CHANGE BACKUPSET 121,122,127,203,300 UNCATALOG;

 

9重复任务:RMAN和脚本ok

在执行一个命令时当通过使用配置的通道和其他设置减少许多共同的RMAN操作,你的备份程序可能包括经常使用的多步骤的过程。RMAN支持使用存储脚本(在Oracle数据库备份和恢复高级用户指南中讨论)和命令文件,以帮助管理这些经常性的任务。RMAN RUN命令提供了某种程度的脚本控制流。

使用命令文件

命令文件是包含RMAN命令的客户端的文本文件,就像你在RMAN提示符下输入的命令一样,其中。通过使用RMAN @命令,执行命令文件的内容:

RMAN> @/my_dir/my_command_file.txt  # runs specified command file 

可以使用任何文件扩展名。您也可以启动RMAN执行命令文件,如下所示:

% rman @/my_dir/my_command_file.txt  
控制脚本:RUN命令

RUN命令可以让你发出一系列RMAN命令,作为一组来执行。如果其中一个命令失败,块中的剩余命令将不会被执行。但是请注意, RMAN仍然会尝试执行失败的命令尽可能多的任务。

这里是一个RUN命令的例子:

RUN {
    BACKUP ARCHIVELOG ALL DELETE ALL INPUT;
    BACKUP INCREMENTAL LEVEL 0 TAG mon_bkup DATABASE;
}

如果一个或多个归档日志备份失败,RMAN仍然会备份所有可以备份的归档日志,因为这些任务都是由一个BACKUP命令产生的。然而,增量备份命令BACKUP ARCHIVELOG命令后的命令不会被执行。

RUN块中如果出现SET, SWITCH DATAFILE, ALLOCATE CHANNEL命令,在RUN块期间它们会覆盖CONFIGURE命令设置通道配置和其他备份参数。细节请参考Oracle数据库备份和恢复参考。

如果一个命令失败,使用命令文件中的RUN块停止其继续执行。

10 RMAN
语法快速参考

本节给出了最常见的RMAN命令,以及它们最常用的选项的一个概览。这里记录的命令包括:

·        @

·        BACKUP

·        CHANGE

·        CONFIGURE

·        CROSSCHECK

·        DELETE

·        LIST

·        RECOVER

·        REPORT

·        RESTORE

·        RUN

·        SET

·        SHOW


下面小节中列出几个命令使用的参数:

·  archivelogRecordSpecifier

·  completedTimeSpec

·  datafileSpec

·  deviceSpecifier

·  maintQualifier

·  untilClause


语法说明中使用垂直椭圆表示不经常使用的参数和选项。请参阅《Oracle数据库备份和恢复参考》有关RMAN命令的语法和语义完整的文档。

@

读取命令文件,并依次执行每个命令。

@filename
archivelogRecordSpecifier

此子句规定归档重做日志的范围。

ARCHIVELOG 
{ ALL 
| LIKE 'string_pattern' 
| archlogRange [LIKE 'string_pattern' [THREAD [=] integer]]
}
 
{ { { UNTIL TIME | FROM TIME } [=] 'date_string'
  | { TIME BETWEEN 'date_string' AND
    | FROM TIME [=] 'date_string' UNTIL TIME [=]
    } 
    'date_string' 
  | UNTIL SCN [=] integer 
  | SCN BETWEEN integer AND integer 
  | FROM SCN [=] integer [UNTIL SCN [=] integer]
  }
  [THREAD [=] integer]
| { UNTIL SEQUENCE [=] integer
  | FROM SEQUENCE [=] integer [UNTIL SEQUENCE [=] integer] 
  | SEQUENCE [BETWEEN integer AND] integer
  }
  [THREAD [=] integer]
}

 

BACKUP

备份数据库文件,归档日志,备份和副本。

BACKUP 
[ ( 
  (FULL | INCREMENTAL LEVEL [=] integer) 
  | [ (FULL | INCREMENTAL LEVEL [=] integer) ]
  AS (COPY | BACKUPSET) 
  | AS (COPY | BACKUPSET) 
  (FULL | INCREMENTAL LEVEL [=] integer)
  )
] 
[backupOperand [backupOperand]...] backupSpec [backupSpec]...
[PLUS ARCHIVELOG [backupSpecOperand [backupSpecOperand]...]];  
 
 
backupOperand::=
{ FORMAT [=] 'format_string' [, 'format_string']... 
| CHANNEL ['] channel_id [']
| CUMULATIVE
| MAXSETSIZE [=] integer [ K | M | G ]
| TAG [=] ['] tag_name [']
| keepOption
| SKIP { OFFLINE | READONLY | INACCESSIBLE }
| VALIDATE
| NOT BACKED UP [SINCE TIME [=] 'date_string']
| COPIES [=] integer
| DEVICE TYPE deviceSpecifier
.
.
.
}
 
backupSpec::=
[(] 
{ BACKUPSET 
  { {ALL | completedTimeSpec } 
  | primary_key) [, primary_key]...
  }
| COPY OF { DATABASE 
          | TABLESPACE ['] tablespace_name ['] [, ['] tablespace_name [']]...
          | DATAFILE datafileSpec [, datafileSpec]...
          }
| DATAFILE datafileSpec [, datafileSpec]... 
| DATAFILECOPY 'filename' [, 'filename']...   
| DATAFILECOPY FROM TAG [=] ['] tag_name ['] [, ['] tag_name [']]... 
| DATAFILECOPY { ALL | LIKE 'string_pattern' }
| TABLESPACE ['] tablespace_name ['] [, ['] tablespace_name [']]... 
| DATABASE 
| archivelogRecordSpecifier
| CURRENT CONTROLFILE [FOR STANDBY] 
| CONTROLFILECOPY 'filename'
| SPFILE
}
[backupSpecOperand [backupSpecOperand]...] 
 
backupSpecOperand::=
{ FORMAT [=] 'format_string' [, 'format_string']... 
| CHANNEL ['] channel_id [']
| CUMULATIVE
| MAXSETSIZE [=] integer [ K | M | G ]
| TAG [=] ['] tag_name [']
| keepOption
| SKIP { OFFLINE | READONLY | INACCESSIBLE }
| NOT BACKED UP [ SINCE TIME [=] 'date_string' 
                | integer TIMES 
                ]
| DELETE [ALL] INPUT
.
.
.
}
 
CHANGE

更新RMAN信息库中备份或副本的状态。

CHANGE 
{ { BACKUP | COPY } [OF listObjList] [ maintQualifier [maintQualifier]...]
| archivelogRecordSpecifier
| recordSpec [DEVICE TYPE deviceSpecifier [, deviceSpecifier]...]
}
{ AVAILABLE | UNAVAILABLE | UNCATALOG | keepOption } 
[DEVICE TYPE deviceSpecifier [, deviceSpecifier]...];

completedTimeSpec

COMPLETED
{ AFTER [=] 
| BETWEEN 'date_string' AND | BEFORE [=] } 'date_string'

更改持久RMAN配置设置。

CONFIGURE 
{ deviceConf 
| backupConf 
| { AUXNAME FOR DATAFILE datafileSpec 
  | SNAPSHOT CONTROLFILE NAME
  }
  { TO 'filename' | CLEAR }
| cfauConf
};
 
deviceCon::=
{ DEFAULT DEVICE TYPE { TO deviceSpecifier | CLEAR }
| DEVICE TYPE deviceSpecifier { PARALLELISM integer | CLEAR }
| [AUXILIARY] CHANNEL [integer] DEVICE TYPE deviceSpecifier
  { allocOperandList | CLEAR }
}
 
allocOperandList::=
{ PARMS [=] 'channel_parms' 
| FORMAT [=] 'format_string' [, 'format_string']...
| { MAXPIECESIZE [=] integer | RATE [=] integer } [ K | M | G ] 
.
.
.
}...
connectStringSpec::=
['] [userid] [/ [password]] [@net_service_name] [']
 
backupConf::=
{ RETENTION POLICY { TO { RECOVERY WINDOW OF integer DAYS
                           | REDUNDANCY [=] integer
                           | NONE
                         }
                      | CLEAR
                    }
| MAXSETSIZE { TO { integer [ K | M | G ]
                    | UNLIMITED
                   }
               | CLEAR
              }
| { ARCHIVELOG | DATAFILE }
  BACKUP COPIES FOR DEVICE TYPE deviceSpecifier
  { TO integer | CLEAR }
| BACKUP OPTIMIZATION { ON | OFF | CLEAR }
| EXCLUDE FOR TABLESPACE tablespace_name [CLEAR]
}
 
cfauConf::==
CONTROLFILE AUTOBACKUP
{ ON
| OFF
| CLEAR
| FORMAT FOR DEVICE TYPE deviceSpecifier { TO 'format string' | CLEAR }
}

 

CROSSCHECK

检查是否备份片,代理副本,磁盘副本仍然存在。

CROSSCHECK
{ 
  { BACKUP [OF listObjList] 
  | COPY [OF listObjList] 
  | archivelogRecordSpecifier 
  } [maintQualifier [maintQualifier]...] 
| recordSpec [DEVICE TYPE deviceSpecifier [, deviceSpecifier]...]
};
 
listObjList::=
[ DATAFILE datafileSpec [, datafileSpec]... 
| TABLESPACE ['] tablespace_name ['] [, ['] tablespace_name [']]... 
| archivelogRecordSpecifier 
| DATABASE [SKIP TABLESPACE ['] tablespace_name ['] [, ['] tablespace_name [']]...] 
| CONTROLFILE
| SPFILE
]...
 
recordSpec::=
{ { BACKUPPIECE | PROXY } 
  { 'media_handle' [, 'media_handle']... 
  | primary_key [, primary_key]... 
  | TAG [=] ['] tag_name [']
  }
| BACKUPSET primary_key [, primary_key]...
| { CONTROLFILECOPY | DATAFILECOPY }
  { { primary_key [, primary_key]... 
    | 'filename' [, 'filename']...
    } 
  | TAG [=] ['] tag_name ['] [, ['] tag_name [']]...
  }
| ARCHIVELOG
  { primary_key [, primary_key]... 
  | 'filename' [, 'filename']...
  }
}

 

datafileSpec

datafileSpec::=
{ 'filename'| integer }
 
DELETE

从磁盘或磁带介质删除备份和副本,并更新RMAN信息库中相应的记录。

DELETE [FORCE] [NOPROMPT] 
{ [EXPIRED] 
  { 
    { BACKUP [OF listObjList]
    | COPY   [OF listObjList] 
    | archivelogRecordSpecifier
    } [maintQualifier [maintQualifier]...]
  | recordSpec [DEVICE TYPE deviceSpecifier [, deviceSpecifier]...] 
  }
| OBSOLETE [obsOperandList]
  [DEVICE TYPE (deviceSpecifier [, deviceSpecifier]...]
};
 
obsOperandList::=
[ REDUNDANCY [=] integer | RECOVERY WINDOW OF integer DAYS ]...

 

deviceSpecifier

deviceSpecifier::=
{ DISK | ['] media_device ['] }

LIST


列出记录在资料库的备份和副本。

LIST 
{ INCARNATION [OF DATABASE [['] database_name [']]] 
| [EXPIRED]
  { listObjectSpec  
    [ maintQualifier | RECOVERABLE [untilClause] ]... 
  | recordSpec
  }
};
 
listObjectSpec::=
{ BACKUP [OF listObjList] [listBackupOption]
| COPY [OF listObjList]
| archivelogRecordSpecifier
}
 
listObjectList::=
[ DATAFILE datafileSpec [, datafileSpec]... 
| TABLESPACE ['] tablespace_name ['] [, ['] tablespace_name [']]... 
| archivelogRecordSpecifier 
| DATABASE [SKIP TABLESPACE ['] tablespace_name ['] 
  [, ['] tablespace_name [']]...] 
| CONTROLFILE
| SPFILE
]...
 
listBackupOption::=
[ [BY BACKUP] [VERBOSE]
| SUMMARY
| BY { BACKUP SUMMARY | FILE }
]

maintQualifier

{ TAG [=] ['] tag_name [']
| completedTimeSpec
| LIKE 'string_pattern'
| DEVICE TYPE deviceSpecifier [, deviceSpecifier]...
| BACKED UP integer TIMES TO DEVICE TYPE deviceSpecifier
}

RECOVER


依据RMAN备份和副本执行介质恢复。

RECOVER [DEVICE TYPE deviceSpecifier [, deviceSpecifier]...] 
recoverObject [recoverOptionList];
 
recoverObject::=
{ DATABASE 
  [ untilClause
  | [untilClause] SKIP [FOREVER] TABLESPACE 
    ['] tablespace_name ['] [, ['] tablespace_name [']]...
  ]
| TABLESPACE ['] tablespace_name ['] [, ['] tablespace_name [']]...
| DATAFILE datafileSpec [, datafileSpec]...
}
 
recoverOptionList::=
{ DELETE ARCHIVELOG [MAXSIZE {integer [K | M | G]}]
| CHECK READONLY 
| NOREDO 
| { FROM TAG | ARCHIVELOG TAG } [=] ['] tag_name [']
.
.
.
}...

REPORT

报告备份数据库状态:哪些文件是在数据库中,哪些文件需要备份,备份是否是过时的或无法恢复的。

REPORT 
{ { NEED BACKUP [ { INCREMENTAL | DAYS } [=] integer 
                  | REDUNDANCY [=] integer 
                  | RECOVERY WINDOW OF integer DAYS)
                  ] 
  | UNRECOVERABLE
  } 
  reportObject 
| SCHEMA [atClause] 
| OBSOLETE [obsOperandList]
}
[ DEVICE TYPE deviceSpecifier [,deviceSpecifier]... ] 
 
reportObject::=
[ DATAFILE datafileSpec [, datafileSpec]... 
| TABLESPACE ['] tablespace_name ['] [, ['] tablespace_name [']]... 
| DATABASE [SKIP TABLESPACE ['] tablespace_name ['] [, ['] tablespace_name [']]...]
]
 
atClause::=
{ AT TIME [=] 'date_string'
| AT SCN [=] integer
| AT SEQUENCE [=] integer THREAD [=] integer
}
 
obsOperandList::= 
[ REDUNDANCY [=] integer | RECOVERY WINDOW OF integer DAYS ]...

RESTORE

根据RMAN备份和副本进行还原。

RESTORE
[(] restoreObject [(restoreSpecOperand [restoreSpecOperand]...] [)]... 
[ CHANNEL ['] channel_id ['] 
| PARMS [=] 'channel_parms' 
| FROM { BACKUPSET | DATAFILECOPY } 
| untilClause 
| FROM TAG [=] ['] tag_name ['] 
| VALIDATE 
| DEVICE TYPE deviceSpecifier [, deviceSpecifier]... 
.
.
.
]...;
 
restoreObject::=
{ CONTROLFILE [TO 'filename']
| DATABASE 
  [SKIP [FOREVER] TABLESPACE 
   ['] tablespace_name ['] [, ['] tablespace_name [']]...
  ]
| DATAFILE datafileSpec [, datafileSpec]...
| TABLESPACE ['] tablespace_name ['] [, ['] tablespace_name [']]...
| archivelogRecordSpecifier
| SPFILE [TO [PFILE] 'filename']
}
 
restoreSpecOperand::=
{ CHANNEL ['] channel_id [']
| FROM TAG [=] ['] tag_name [']
| PARMS [=] 'channel_parms'
| FROM 
  { AUTOBACKUP 
    [{ MAXSEQ | MAXDAYS } [=] integer)]... 
  | 'media_handle'
  }
}

RUN

一些RMAN命令只能在RUN块内有效。

RUN { 
  ...
}

SET


创建仅适用于当前RMAN会话的设置。

SET { set_rman_option [;] | set_run_option; }
 
set_rman_option::=
{ ECHO { ON | OFF }
| DBID [=] integer
| CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE deviceSpecifier TO 'frmt_string'
 
set_run_option::=
{ NEWNAME FOR DATAFILE datafileSpec TO { 'filename' | NEW }
| ARCHIVELOG DESTINATION TO 'log_archive_dest'
| untilClause
| COMMAND ID TO 'string'
| CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE deviceSpecifier TO 'frmt_string'
.
.
.
}

SHOW

显示当前启用的CONFIGURE命令。

SHOW 
{ RETENTION POLICY 
| [DEFAULT] DEVICE TYPE 
| [AUXILIARY] CHANNEL [FOR DEVICE TYPE deviceSpecifier] 
| MAXSETSIZE 
| { DATAFILE | ARCHIVELOG } BACKUP COPIES 
| BACKUP OPTIMIZATION 
| SNAPSHOT CONTROLFILE NAME 
| AUXNAME 
| EXCLUDE
| CONTROLFILE AUTOBACKUP [FORMAT] 
| ALL
};

untilClause

{ UNTIL TIME [=] 'date_string'
| UNTIL SCN [=] integer
| UNTIL SEQUENCE [=] integer THREAD [=] integer
}

 

11 备份和恢复视图

下表描述您可以使用的查询 RMAN 信息库的视图。   V$ 视图反映存储在数据库控制文件中的 RMAN 信息库,而恢复目录视图反映了存储在恢复目录中的 RMAN 信息库。

有关 V$ 视图的详细信息请参阅 Oracle 数据库参考,有关恢复目录视图的详细信息请参见 Oracle 数据库备份和恢复参考。

控制文件的 V$ 视图                     恢复目录视图                               视图描述
V$ARCHIVED_LOG                RC_ARCHIVED_LOG                 
归档和未归档重做日志
V$BACKUP_DATAFILE          RC_BACKUP_CONTROLFILE     
控制文件备份集
V$BACKUP_CORRUPTION RC_BACKUP_CORRUPTION      
在数据文件备份中的损坏块范围
V$BACKUP_DATAFILE          RC_BACKUP_DATAFILE            
数据文件备份集
V$BACKUP_FILES                 RC_BACKUP_FILES                   RMAN
备份库中的副本。
V$BACKUP_PIECE                RC_BACKUP_PIECE                 
备份片
V$BACKUP_REDOLOG        RC_BACKUP_REDOLOG          
归档日志的备份
V$BACKUP_SET                    RC_BACKUP_SET                    
备份集
V$BACKUP_SPFILE              RC_BACKUP_SPFILE               
服务器参数文件备份集
V$DATAFILE_COPY               RC_CONTROLFILE_COPY         
磁盘上的控制文件副本
V$COPY_CORRUPTION      RC_COPY_CORRUPTION          
有关数据文件副本损坏的信息
V$DATABASE                          RC_DATABASE                         
注册在恢复目录( RC_DATABASE )中的数据库或当前加载的数据库( V$DATABASE )相关的信息
V$DATABASE_BLOCK_CORRUPTION RC_DATABASE_BLOCK_CORRUPTION
最近期的 RMAN 备份或复制所标记的数据库坏块
V$DATABASE_INCARNATION RC_DATABASE_INCARNATION
所有数据库目录中注册的化身
V$DATAFILE                           RC_DATAFILE                           
所有注册在恢复目录中的数据文件
V$DATAFILE_COPY             RC_DATAFILE_COPY                
数据文件映像副本
V$LOG_HISTORY                 RC_LOG_HISTORY                   
联机重做日志的历史信息
V$OFFLINE_RANGE            RC_OFFLINE_RANGE               
数据文件脱机范围
V$PROXY_ARCHIVEDLOG RC_PROXY_ARCHIVEDLOG     
代理副本创建的归档日志备份
V$PROXY_CONTROLFILE  RC_PROXY_CONTROLFILE
代理副本创建的控制文件备份
V$PROXY_DATAFILE           RC_PROXY_DATAFILE
V $ DATAFILE 代理副本创建的数据文件备份
V$LOG
V$LOGFILE           RC_REDO_LOG                         自上次目录重新同步以来数据库中的所有化身的联机重做日志
V$
THREAD                              RC_REDO_THREAD                  自上次目录重新同步以来数据库中的所有化身的所有重做线程
N/A                                            RC_RESYNC                            
恢复目录重新同步
V$RMAN_CONFIGURATION RC_RMAN_CONFIGURATION     RMAN
的持久性配置设置
V $TABLESPACE                RC_TABLESPACE                     
在恢复目录中注册的所有表空间,所有删掉的表空间,属于旧的化身的表空间,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值