天天看点

rman手册开始和退出RMANRMAN配置RMAN备份RMAN增量备份RMAN备份的查询和报告RMAN恢复(RECOVER)恢复管理维护任务

  1. 开始和退出RMAN
  2. RMAN配置
  3. RMAN备份
  4. RMAN增量备份
  5. RMAN备份的查询和报告
  6. RMAN恢复RECOVER
  7. 恢复管理维护任务

RMAN参考手册

ORACLE备份分为物理备份和逻辑备份两种:物理备份就是转储ORACLE物理文件(如数据文件、控制文件、归档日志文件等),一旦数据库发生故障,我们可以利用这些文件进行还原;逻辑备份就是对数据库对象(如用户、表、存储过程等)利用EXPORT等工具进行导出工作,我们可以利用IMPORT等工具把逻辑备份文件导入到数据库。RMAN备份是一种物理备份,可以用RMAN来备份数据文件、控制文件、参数文件、归档日志文件。我们在数据库出现问题的时候可以通过RMAN物理备份恢复到数据库的失效点。

开始和退出RMAN

进入RMAN恢复管理器2种方式:

1、直接在系统命令提示符敲入rman命令,进入rman控制台后执行connect

D:/>rman

恢复管理器: Release 10.2.0.2.0 - Production on 星期四 1月 4 10:08:52

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

RMAN> connect target /

连接到目标数据库: ROME (DBID=252956976)

RMAN>

2、在系统命令提示符下敲入target和catalog(没有此项默认非catalog方式,控制文件记录rman操作的详细信息)的用户和密码

# example of operating system authentication

D:/>rman TARGET /

# example of Oracle Net authentication

D:/>rman TARGET SYS/[email protected] NOCATALOG

D:/>rman TARGET / CATALOG rman/[email protected]

D:/>rman TARGET SYS/[email protected] CATALOG rman/[email protected]

RMAN> exit

恢复管理器完成。

注:我们将在以后章节讲述带有恢复目录的RMAN操作。

我们可以看一下rman可以连接的数据库的类型如下:

Target database RMAN connects you to the target database, which is the database that you are backing up or recovering, with the SYSDBA privilege. If you do not have this privilege, then the connection fails.
Recovery catalog database This database is optional. By default, RMAN runs in NOCATALOG mode.
Auxiliary database You can connect to a standby database, duplicate database, or auxiliary instance (standby instance or tablespace point-in-time recovery instance).

Note:

You do not need to specify the SYSDBA option because RMAN uses this option implicitly and automatically.

RMAN配置

执行show all命令可以显示rman的当前配置。

RMAN> show all;

使用目标数据库控制文件替代恢复目录

RMAN 配置参数为:

CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default

CONFIGURE BACKUP OPTIMIZATION OFF; # default

CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default

CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default

CONFIGURE DEVICE TYPE DISK PARALLELISM 1 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 ARCHIVELOG DELETION POLICY TO NONE; # default

CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:/ORACLE/PRODUCT/10.2.0/DB_1/DATABASE/S

NCFROME.ORA'; # default

如果想恢复某项设置,我们执行如下命令:CONFIGURE... CLEAR,例如:

注:大部分配置项的值都是TO后边的内容,个别的除外,例如:

CONFIGURE ENCRYPTION FOR DATABASE OFF

RMAN> configure retention policy to redundancy 2;

新的 RMAN 配置参数:

CONFIGURE RETENTION POLICY TO REDUNDANCY 2;

已成功存储新的 RMAN 配置参数

RMAN> show all;

RMAN 配置参数为:

CONFIGURE RETENTION POLICY TO REDUNDANCY 2;

CONFIGURE BACKUP OPTIMIZATION OFF; # default

CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default

CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default

CONFIGURE DEVICE TYPE DISK PARALLELISM 1 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 ARCHIVELOG DELETION POLICY TO NONE; # default

CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:/ORACLE/PRODUCT/10.2.0/DB_1/DATABASE/S

NCFROME.ORA'; # default

RMAN> configure retention policy clear;

旧的 RMAN 配置参数:

CONFIGURE RETENTION POLICY TO REDUNDANCY 2;

RMAN 配置参数已成功重置为默认值

RMAN> show all;

RMAN 配置参数为:

CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default

CONFIGURE BACKUP OPTIMIZATION OFF; # default

CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default

CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default

CONFIGURE DEVICE TYPE DISK PARALLELISM 1 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 ARCHIVELOG DELETION POLICY TO NONE; # default

CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:/ORACLE/PRODUCT/10.2.0/DB_1/DATABASE/S

NCFROME.ORA'; # default

下面详细讲一下rman的各项配置的含义:

1、 Configuring the Default Device Type for Backups

配置缺省备份设备

缺省情况下rman默认的备份设备为磁盘disk,我们也可以配置其他介质作为rman的备份设备如磁带等。

RMAN> CONFIGURE DEFAULT DEVICE TYPE TO sbt;

RMAN> CONFIGURE DEFAULT DEVICE TYPE TO DISK;

关于设备的类型要参考设备提供商给的说明文档,按照他们提供的设备名进行备份设备的配置。

2、Configuring the Default Backup Type for Disk Backups

     配置磁盘备份的备份类型:备份集或者镜像拷贝(文件拷贝)

RMAN> CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COPY; # image copies

RMAN> CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO BACKUPSET; # uncompressed

注:镜像拷贝只适用于磁盘备份,磁带等其他介质只支持备份集。镜像拷贝是对数据文件等的拷贝,占用空间大消耗时间长,所以不建议使用。

如果备份类型是备份集的话,我们还可以制定下面的压缩参数:

RMAN> CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COMPRESSED BACKUPSET;

RMAN> CONFIGURE DEVICE TYPE sbt BACKUP TYPE TO COMPRESSED BACKUPSET;这里要注意如果想要恢复Compressed,我们可以再次执行以下命令,而不是用clear命令来清除Compressed参数。

RMAN> CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO BACKUPSET;

RMAN> CONFIGURE DEVICE TYPE sbt BACKUP TYPE TO BACKUPSET;

另外备份类型还支持并行度参数PARALLELISM,默认值为1,我们可以适当调节该参数来加快备份速度。

Configuring Disk Devices and Channels

配置磁盘设备和通道

Rman通过通道连接到目标数据库,通道执行着rman的全部工作,缺省情况下rman为所有的操作分配1个通道。

CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT 'd:/ora_df%t_s%s_p%p';

如果是asm磁盘可以按照如下配置:

CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '+dgroup1';

如果是磁带设备可以按照如下配置:

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

通过PARMS指定备份设备对应的串。

4、Configuring Control File and Server Parameter File Autobackup

    配置控制文件和参数文件自动备份

我们可以通过下面命令来启用和停用控制文件自动备份。

CONFIGURE CONTROLFILE AUTOBACKUP ON;

CONFIGURE CONTROLFILE AUTOBACKUP OFF;

如果控制文件自动备份启动,每次控制文件内容发生变化的时候,oracle 自动在如下目录下(如果没有指定控制文件备份格式,并且安装了快速恢复区flash recovery area的话)备份控制文件。 …/flash_recovery_area/SID/AUTOBACKUP/2007_01_04/。

5、Configuring the Control File Autobackup Format

配置控制文件自动备份格式

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'd:/cf_%F';

如果是asm存储设备,可以如下设置控制文件自动备份格式:

CONFIGURE CONTROLFILE AUTOBACKUP FOR DEVICE TYPE DISK TO '+dgroup1';

清除控制文件自动备份格式命令如下:

CONFIGURE CONTROLFILE AUTOBACKUP FOR DEVICE TYPE DISK CLEAR;

CONFIGURE CONTROLFILE AUTOBACKUP FOR DEVICE TYPE sbt CLEAR;

当然我们也可以在执行rman操作的设置备份格式,如:

RMAN> SET CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE sbt TO 'controlfile_%F';

RMAN> BACKUP AS COPY DATABASE;

以上设置在整个rman操作控制台生效。

RMAN> RUN {

       SET CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/tmp/%F.bck';

       BACKUP AS BACKUPSET DEVICE TYPE DISK DATABASE;

      }

这个set设置在rman程序块生效。

6、Configuring the Backup Retention Policy

配置备份保留策略

备份保留策略有2种方式:一种是基于时间的保留策略,一种是基于冗余度的保留策略。

based on a recovery window (the maximum number of days into the past for which you can recover) or redundancy (how many copies of each backed-up file to keep).

Configuring a Recovery Window-Based Retention Policy

RECOVERY WINDOW参数指出了最大保留时间为从当前日期到多少天前。

CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;

Rman将保留着这期间的任何全库备份和level 0的增量备份,同时rman也保留着归档日志和level 1的增量备份,以便于可以做这个期间的基于时间点的恢复。Rman不会删除过期的备份,如果我们用REPORT OBSOLETE可以看到过期的备份并且执行DELETE OBSOLETE来删除过期的备份。

Configuring a Redundancy-Based Retention Policy

REDUNDANCY参数指出了我们想保留几份备份文件。

CONFIGURE RETENTION POLICY TO REDUNDANCY 3;

查看当前备份保留策略:

RMAN> SHOW RETENTION POLICY;

如果我们执行以下命令来清除备份保留策略,rman将不会将任何备份标记为过期。

CONFIGURE RETENTION POLICY TO NONE;

RMAN备份

Rman可以备份数据文件、归档日志、控制文件、参数文件、备份集文件(其他rman操作备份产生)。

Rman备份文件有两种存储方式:镜像拷贝和备份集。两者是有区别的,备份集只备份使用过的数据块而镜像拷贝是拷贝整个数据文件。

最简单的一个全库备份Whole Database Backups命令如下:

RMAN> BACKUP DATABASE;  # uses automatic channels to make backup

RMAN> SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT'; # switches logs and archives all logs

备份集:

备份集是rman按照逻辑结构存储备份的一种文件格式。备份集可以包含多个数据文件、归档文件、控制文件和参数文件,但是数据文件和归档文件不能放在一个备份集内。也可以把一个备份集备份到另外一个备份集(合并备份集)。一个文件不能备份到2个备份集内。

备份片:

一个备份集可以由一个或者多个备份片组成。

注意:

这里解释一个概念

Full and Incremental Datafile Backups全部和增量数据文件备份,这里的full和a whole database backup是有区别的。a whole database backup是备份全部数据文件和当前控制文件和参数文件。以后我们讲到的增量备份只是针对数据文件而言。

备份可以自己执行格式,也可以使用默认格式:

RMAN> BACKUP DATABASE FORMAT '/tmp/%U';  # %U generates a unique filename

RMAN> BACKUP DATABASE TAG = 'weekly_backup';   # gives the backup a tag

identifier

备份表空间:

BACKUP DEVICE TYPE sbt MAXSETSIZE = 10M TABLESPACE users, tools;

备份数据文件、镜像拷贝:

BACKUP DEVICE TYPE sbt DATAFILE 1,2,3,4 DATAFILECOPY 'd:/system01.dbf';

当然我们也可以单独备份镜像拷贝文件:

BACKUP DEVICE TYPE sbt DATAFILECOPY '/tmp/system01.dbf';

注意上边这个是把数据文件1234和以前做的镜像拷贝同时备份。

备份控制文件:

我们可以直接执行BACKUP CURRENT CONTROLFILE命令来备份控制文件

我们可以在任何backup命令后边加上INCLUDE CURRENT CONTROLFILE操作来备份控制文件。

一个全库备份包含了单前控制文件,这里要注意控制文件自动备份和手动备份的区别,后者可以在任何修改控制文件的操作执行后自动备份控制文件,而前者则不能,我们在讲rman配置的时候也提到过这些。下面给几个例子:

BACKUP CURRENT CONTROLFILE TAG = mondaypmbackup;

BACKUP DEVICE TYPE sbt TABLESPACE users INCLUDE CURRENT CONTROLFILE;

--生成控制文件镜像拷贝

BACKUP AS COPY CURRENT CONTROLFILE FORMAT '/tmp/control01.ctl';

--备份控制文件镜像拷贝

BACKUP DEVICE TYPE sbt CONTROLFILECOPY '/tmp/control01.ctl';

备份参数文件:

BACKUP DEVICE TYPE sbt SPFILE;

备份归档日志:

我们可以直接执行BACKUP ARCHIVELOG或者在备份数据文件和控制文件的同时指定BACKUP ... PLUS ARCHIVELOG操作来一起备份归档日志。

我们可以备份全部归档日志,也可以指定参数来备份部分归档日志:

BACKUP ARCHIVELOG ALL;

BACKUP ARCHIVELOG FROM TIME 'SYSDATE-30' UNTIL TIME 'SYSDATE-7'

备份归档开始执行的时候,rman会发出一个切换日志的命令(我们可以从v$log观察),然后归档所有非当前日志,然后再执行归档日志的备份。

在备份完归档日志后我们可以指定DELETE INPUT or DELETE ALL INPUT这两个参数,来删除备份集中已经备份过的或者全部归档日志文件。

下面再给出几个示例备份归档的命令:

RMAN> BACKUP ARCHIVELOG LIKE 'ORACLE/ARC/DEST/LOG%';

RMAN> BACKUP ARCHIVELOG ALL;

RMAN> BACKUP ARCHIVELOG FROM LOGSEQ 20 UNTIL LOGSEQ 50 THREAD 1;

RMAN> BACKUP ARCHIVELOG FROM SCN 1 UNTIL SCN 9999;

我们可以使用如下命令在进行其他备份的同时来备份归档日志文件:

RMAN> BACKUP ... PLUS ARCHIVELOG

上述命令的执行过程如下:

执行ALTER SYSTEM ARCHIVE LOG CURRENT命令。

执行BACKUP ARCHIVELOG ALL命令。如果backup optimization参数设置为enabled,rman将不备份那些已经备份过的归档日志文件。

备份在BACKUP命令中指定的备份内容。

执行ALTER SYSTEM ARCHIVE LOG CURRENT命令。

备份在BACKUP命令执行过程中产生的其他的归档日志文件。

压缩备份集:

BACKUP AS COMPRESSED BACKUPSET DATABASE PLUS ARCHIVELOG;

BACKUP AS COMPRESSED BACKUPSET DATAFILE 1,2,4;

为了能在灾难性损坏的时候有效的恢复数据库,我们需要保留一些机器配置、操作系统和数据库的一些基础信息。

数据库服务器机器名称、IP地址、操作系统版本和补丁号、磁盘数量和驱动器号、磁盘容量和剩余空间、数据文件名称、数据库SID、DBID、ORACLE版本和补丁号、常用的RMAN备份脚本等等。

RMAN增量备份

我们可以用RMAN进行数据库、表空间和数据文件的增量备份。

如果数据库运行在归档模式,在数据库OPEN状态我们可以进行增量备份;如果数据库处于非归档方式,在数据库CLOSE状态我们也可以进行增量备份。增量备份只备份上次备份以来变化过的数据块。

每个数据块都包含一个system change number (SCN),记录着该数据块的最后改变。在进行增量备份的时候,RMAN将没给数据块的SCN和父级增量备份的CHECKPOINT SCN进行比较,如果该数据块的SCN大于等于父级的CHECKPOINT SCN,RMAN将备份该数据块。

为了提高数据库增量备份的性能,我们可以指定变化跟踪文件来监控数据块的改变:

SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING;

SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE 'd:/rman_change.f' REUSE;

SQL> ALTER DATABASE DISABLE BLOCK CHANGE TRACKING;

可以通过以下命令查询:

SQL> SELECT FILENAME,STATUS FROM V$BLOCK_CHANGE_TRACKING

移动跟踪文件:

SQL>SELECT filename FROM V$BLOCK_CHANGE_TRACKING;

SQL>SHUTDOWN IMMEDIATE;

SQL>HOST COPY OLDFILE NEWFILE

SQL>STARTUP MOUNT;

SQL>ALTER DATABASE RENAME FILE ‘OLDFILE' TO ‘NEWFILE’;

SQL>ALTER DATABASE OPEN;

如果不能关闭数据库,必须禁用跟踪文件然后移动跟踪文件:

ALTER DATABASE DISABLE BLOCK CHANGE TRACKING;

ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE 'new_location';

增量备份分为两种:差异增量备份和累积增量备份。缺省的增量备份是差异增量备份。

差异增量备份:备份同级或者上级(如果有同级备份,先找同级)备份(差异或者累积)以来变化的数据块。如果找不到同级或者上级(知道LEVEL0),如果ORACLE版本>=10.0.0,RMAN将COPY从数据文件创建开始所有的数据块作为LEVEL1备份;如果ORACLE版本<10.0.0,RMAN将生成LEVEL0备份。

如下图所示:

周日:RMAN备份所有被使用过的数据块。

周一至周六:RMAN备份自从上次LEVEL0或者LEVEL1备份以来变化的数据块。

累积增量备份:备份上级备份以来变化的数据块。

如下图所示:

周日:RMAN备份所有被使用过的数据块。

周一至周六:RMAN备份自从上次LEVEL0备份以来变化的数据块。

我们可以看出累积增量备份备份文件要比差异增量备份文件大,因为累积增量备份重复备份了同级别备份的数据块。

制定一个恰当的备份策略是很重要的,通常我们在有50%的数据块改变的时候,进行一次LEVEL0级别的备份。可以通过以下查询来获得数据块增量备份已经备份50%以上的数据块。

SELECT FILE#, INCREMENTAL_LEVEL, COMPLETION_TIME, BLOCKS, DATAFILE_BLOCKS

  FROM V$BACKUP_DATAFILE

  WHERE INCREMENTAL_LEVEL > 0

  AND BLOCKS / DATAFILE_BLOCKS > .5

  ORDER BY COMPLETION_TIME;

增量备份示例:

RMAN> BACKUP INCREMENTAL LEVEL 0 DATABASE;

RMAN> BACKUP INCREMENTAL LEVEL 1 TABLESPACE SYSTEM DATAFILE 'ora_home/oradata/ tools01.dbf';

RMAN> BACKUP INCREMENTAL LEVEL = 1 CUMULATIVE TABLESPACE users;

增量追加备份:前滚镜像拷贝

ORACLE文档原文:Incrementally Updated Backups: Rolling Forward Image Copy Backups。

增量追加备份工作原理:首先创建一个文件镜像拷贝,然后定期把从上次镜像拷贝最大SCN以来变化的数据块追加到镜像拷贝文件中。增量追加备份可以达到快速恢复的目的,如果是每天进行增量追加的话,在进行恢复的时候,我们最多应用一天的REDO数据就可以完成恢复。

创建增量追加备份,格式如下:

BACKUP... FOR RECOVER OF COPY WITH TAG

一个基础的增量追加备份示例:简称basic脚本

RUN {

   RECOVER COPY OF DATABASE WITH TAG 'incr_update';

   BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG 'incr_update'

       DATABASE;

   }

为了理解上述脚本,我们先看一下如果没有数据文件拷贝和增量备份运行这两个脚本的情况。

1、如果没有LEVEL0备份或者备份文件拷贝,执行BACKUP INCREMENTAL LEVEL 1... FOR RECOVER OF COPY WITH TAG...不能产生LEVEL1增量备份文件,但是RMAN会按照指定的tag在DATAFILE对应的目录下创建一分镜像文件拷贝。

2、如果没有LEVEL0备份或者备份文件拷贝,执行RECOVER COPY OF DATABASE WITH TAG...则生成一些信息但是不产生错误。

我们看一下整个basic脚本的执行情况:

第一次运行该脚本没有数据文件拷贝和增量备份所以执行RECOVER COPY OF DATABASE WITH TAG 'incr_update'没有任何结果;执行BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG 'incr_update' DATABASE将产生数据文件的镜像文件拷贝。

第二次运行该脚本,由于第一次运行的时候BACKUP INCREMENTAL LEVEL 1... FOR RECOVER OF COPY WITH TAG...命令产生一个镜像文件拷贝,但是没有LEVEL1的增量备份,所以执行RECOVER COPY OF DATABASE WITH TAG 'incr_update'还是没有任何结果;执行BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG 'incr_update' DATABASE将产生LEVEL1增量备份。

第三次运行该脚本,执行RECOVER COPY OF DATABASE WITH TAG 'incr_update'命令将把第二次执行该脚本产生的LEVEL1增量备份追加到镜像文件拷贝,同时又产生一个新的LEVEL1增量备份文件。

以后再执行该脚本都是把上次产生的LEVEL1的增量备份追加到镜像文件拷贝,然后再产生一个新的LEVEL1的增量备份文件。

如果需要恢复,我们首先恢复镜像文件拷贝和最后一次LEVEL1增量备份,最后应用REDO。

RMAN备份的查询和报告

LIST命令:

LIST BACKUP;       # lists backup sets, image copies, and proxy copies

LIST BACKUPSET;    # lists only backup sets and proxy copies

LIST COPY;         # lists only disk copies

LIST BACKUP BY FILE; # shows backup sets, proxy copies, and image copies

LIST COPY BY FILE;   # shows only disk copies

LIST EXPIRED BACKUP;

LIST EXPIRED BACKUP BY FILE;

LIST BACKUP SUMMARY;  # lists backup sets, proxy copies, and disk copies

LIST EXPIRED BACKUP SUMMARY;

LIST BACKUP OF DATABASE;    # lists backups of all files in database

LIST COPY OF DATAFILE 'ora_home/oradata/trgt/system01.dbf'; # lists copy of specified datafile

LIST BACKUPSET 213;     # lists specified backup set

LIST DATAFILECOPY '/tmp/tools01.dbf';   # lists datafile copy

LIST BACKUPSET TAG 'weekly_full_db_backup';     # specify a backup set by tag

LIST COPY OF DATAFILE 'ora_home/oradata/trgt/system01.dbf' DEVICE TYPE sbt; # specify a backup or copy by device type

LIST BACKUP LIKE '/tmp/%';  # specify a backup by directory or path

LIST COPY OF DATAFILE 2 COMPLETED BETWEEN '10-DEC-2002' AND '17-DEC-2002';  # specify a backup or copy by a range of completion dates

LIST ARCHIVELOG ALL BACKED UP 2 TIMES TO DEVICE TYPE sbt;   # specify logs backed up at least twice to tape

LIST BACKUP OF DATAFILE 1;

LIST BACKUP OF TABLESPACE;

LIST BACKUP OF DATAFILE;

LIST BACKUP ARCHIVELOG ALL; #简要信息

LIST BACKUP OF ARCHIVELOG ALL;  #详细信息

LIST BACKUP OF CONTROFILE;

LIST BACKUP OF SPFILE;

举个例子:

RMAN>list backup summary;

RMAN> list backup summary;

备份列表

===============

关键字     TY LV S 设备类型 完成时间   段数 副本数 压缩标记

------- -- -- - ----------- ---------- ------- ------- ---------- ---

1       B  F  A DISK        02-1月 -07 1       1       NO      TAG20070102T162107

2       B  F  A DISK        02-1月 -07 1       1       NO         TAG20070102T162107

3       B  F  A DISK        03-1月 -07 1       1       NO         TAG20070103T151828

4       B  F  A DISK        03-1月 -07 1       1       NO         TAG20070103T151828

5       B  F  A DISK        03-1月 -07 1       1       NO         TAG20070103T152054

…………….

14      B  A  X DISK        04-1月 -07 1       1       NO         TAG20070104T083259

15      B  A  X DISK        04-1月 -07 1       1       NO         TAG20070104T083259

…………….

79      B  0  A DISK        12-1月 -07 1       1       NO         TAG20070112T135430

80      B  1  A DISK        12-1月 -07 1       1       NO         TAG20070112T135540

B 表示 backup

F 表示 FULL

A 表示 archive log

0 1 表示 incremental backup

S 说明备份状态 (A AVAILABLE   X EXPIRED )

如果我们进行OPEN RESETLOGS方式恢复数据库,RMAN将会记录一个标记 (INCARNATION)。我们在做增量备份的时候,可以以当前的或者以前的标记做为基础;如果保留了足够的归档日志文件,我们也可以以当前的或者以前的标记进行恢复reset database to incarnation 1;关于这方面恢复我们将在以后进行详细示例阐述。

RMAN> LIST INCARNATION;

如果这册了多个数据库我们用带有OF DATABASE参数的命令来区别不同数据库。

RMAN> LIST INCARNATION OF DATABASE prod3;

RMAN> LIST INCARNATION OF DATABASE;

DB Key  Inc Key DB Name  DB ID            STATUS  Reset SCN  Reset Time

------- ------- -------- ---------------- ------  ---------- ----------

1       1       RDBMS    774627068        PARENT  1          21-OCT-03

2       2       RDBMS    774627068        CURRENT 173832     21-OCT-03

REPORT命令:

报告需要备份的文件:

我们首先要执行交叉校验,然后可以利用REPORT命令报告需要备份的,RMAN根据我们的备份保留策略来给出结果。

CROSSCHECK BACKUP;  # crosschecks backup sets and proxy copies

CROSSCHECK COPY;    # crosschecks only disk copies of archived redo logs, datafiles and control file

RMAN>REPORT NEED BACKUP;

RMAN 保留策略将应用于该命令

将 RMAN 保留策略设置为冗余 1

文件冗余备份少于1个

文件 #bkps 名称

---- ----- -----------------------------------------------------

5    0     E:/ORACLE/ORADATA/ROME/TEST.DBF

我们也可以给出DAYS参数来按照我们的要求时间让RMAN给出需要备份的结果。如下例:

REPORT NEED BACKUP DAYS = 1 DATABASE;  # needs min 1 days of logs to recover

REPORT NEED BACKUP DAYS = 10 TABLESPACE SYSTEM;

REPORT NEED BACKUP DAYS = 5 DATAFILE '…/tools01.dbf';

我们也可以报告那些文件需要进行增量备份:

REPORT NEED BACKUP INCREMENTAL = 1 DATABASE;

REPORT NEED BACKUP INCREMENTAL = 3 TABLESPACE SYSTEM;

REPORT NEED BACKUP INCREMENTAL = 5 DATAFILE '…/users01.dbf';

报告过期备份:

CROSSCHECK BACKUP;

# lists backups that not needed to recover the database to within last week

REPORT OBSOLETE RECOVERY WINDOW OF 7 DAYS;

# lists backups that are superfluous because more than 2 copies are on tape

REPORT OBSOLETE REDUNDANCY = 2 DEVICE TYPE sbt;

ORPHAN参数报告在同一个标记 (INCARNATION)中间断的备份,前一个备份和后一个备份不连续,也就是说同一个标记(INCARNATION)中两个备份中间有被删除的备份。

REPORT OBSOLETE ORPHAN;

删除过期备份:

# delete obsolete backups displayed when you issue REPORT OBSOLETE

DELETE OBSOLETE;

# delete obsolete backups according to a specified recovery window

DELETE OBSOLETE RECOVERY WINDOW OF 7 DAYS;

# delete obsolete backups according to a specified redundancy

DELETE OBSOLETE REDUNDANCY = 2;

报告数据库方案:

REPORT SCHEMA AT TIME 'SYSDATE-14';     # schema as it was two weeks ago

REPORT SCHEMA AT SCN 1000;              # schema as it was at scn 1000

REPORT SCHEMA AT SEQUENCE 100 THREAD 1; # schema as it was at sequence 100

REPORT SCHEMA AT SCN 1000;

RMAN恢复(RECOVER)

两个重要的恢复命令:

RESTORE:按照RMAN存储库的条目从备份文件恢复需要的文件。

RECOVER:使用数据文件和REDO文件进行完全的或者时间点的数据库媒体恢复。

RMAN恢复概要:

1、 首先要确定需要恢复哪些文件,控制文件、参数文件、归档日志文件和数据文件。

2、 选择正确的恢复方式。例如恢复一个单独的表空间或者数据文件,可以在数据库OPEN状态下把需要恢复的表空间或者数据文件OFFLINE,如果需要恢复所有的数据文件,必须关闭数据库然后在数据库MOUNT状态执行RESTORE。

3、 用RESTORE命令从备份恢复丢失的数据库文件的时候,可以把备份数据库文件恢复原始位置或者恢复到一个新的位置(例如原始磁盘损坏),例如我们想把控制文件恢复到新的位置,则必须要修改SPFILE;如果想把数据文件或者REDO文件恢复到其他位置,则必须修改CONTROLFILE。

4、 如果从备份中恢复了数据文件,必须执行RECOVER来执行数据库恢复。

恢复的最终结果就是要让我们可以再次使用数据库。例如丢失了控制文件而从备份执行恢复我们需要RESTART数据库;如果恢复了个别的表空间或者数据文件我们最终需要把恢复的表空间或者数据文件ONLINE。

总之,执行数据库恢复是要根据具体情况来决定我们到底概要执行什么样的操作的。例如仅仅恢复了SPFILE的话,我们不必执行媒体恢复RECOVER操作。如果我们丢失了部分CONTROLFILE,数据库会自动SHUTDOWN,我们可以从有效的CONTROLFILE拷贝覆盖已经损坏的CONTROLFILE,或者修改参数文件中的

CONTROL_FILES

参数,把已经损坏的控制文件去掉,这样我么就可以再次启动我们的数据库了;如果我们从备份中恢复了CONTROLFILE,尽管我们没有恢复数据文件,我们也必须要执行媒体恢复并且用带有OPEN RESETLOGS参数的方式来OPEN数据库。

数据库的状态和数据文件的位置决定了什么时候该执行恢复,该如何恢复,我们可以按照如下方式来检查是否有数据库文件需要执行媒体恢复。

检查数据库的状态:

SQL>SELECT STATUS FROM V$INSTANCE;

如果数据库处在OPEN状态,我们可以检查哪些数据库文件处于需要恢的的状态:

SQL>COL FILE# FORMAT 999

SQL>COL STATUS FORMAT A7

SQL>COL ERROR FORMAT A10

SQL>COL TABLESPACE_NAME FORMAT A10

SQL>COL NAME FORMAT A30

SQL>SELECT FILE#, STATUS, ERROR, RECOVER, TABLESPACE_NAME, NAME

SQL>FROM V$DATAFILE_HEADER

SQL>WHERE RECOVER = 'YES' OR (RECOVER IS NULL AND ERROR IS NOT NULL);

如果ERROR列不为NULL或者RECOVER列不等于’NO’,检查硬件和操作系统问题;

如果不是以上问题则需要对结果数据进行RESTORE。

如果ERROR列为NULL并且RECOVER列为’YES’,则该文件可以进行恢复。如果我们是做全库恢复,我们只要把结果集中的数据文件进行恢复就可以,如果我们想做基于时间点的恢复,则必须恢复所有的数据文件或者Flashback Database。

我们可以按照以下SQL来查询需要恢复的数据文件和错误:

SELECT FILE#, ERROR, ONLINE, ONLINE_STATUS, CHANGE#, TIME

FROM V$RECOVER_FILE;

我们可以关联

V$DATAFILE

and

V$TABLESPACE

两个视图来得到表空间和数据文件的名字:

SELECT r.FILE# AS df#, d.NAME AS df_name, t.NAME AS tbsp_name,

d.STATUS, r.ERROR, r.CHANGE#, r.TIME

FROM V$RECOVER_FILE r, V$DATAFILE d, V$TABLESPACE t

WHERE t.TS# = d.TS#

AND d.FILE# = r.FILE#;

预恢复操作:

RESTORE

命令支持预操作。我们在执行RESTORE操作之前可以执行RESTORE…PREVIEW来检验一下备份文件是否有效,如下给出几个示例:

RESTORE DATABASE PREVIEW;

RESTORE TABLESPACE users PREVIEW;

RESTORE DATAFILE 3 PREVIEW;

RESTORE ARCHIVELOG FROM LOGSEQ 200 PREVIEW;

RESTORE ARCHIVELOG FROM TIME 'SYSDATE-7' PREVIEW;

RESTORE ARCHIVELOG FROM SCN 234546 PREVIEW;

我们可以利用CHANGE命令来修改给分集的状态,例如:

RMAN> restore datafile 5 preview;

启动 restore 于 19-1月 -07

使用通道 ORA_DISK_1

备份集列表

===================

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间

------- ---- -- ---------- ----------- ------------ ----------

92      Full    9.09M      DISK        00:00:01     19-1月 -07

BP 关键字: 87   状态: AVAILABLE  已压缩: NO  标记: TAG20070119T100745

段名:D:/TEST.BAK

备份集 92 中的数据文件列表

文件 LV 类型 Ckp SCN    Ckp 时间   名称

---- -- ---- ---------- ---------- ----

5       Full 963842     19-1月 -07 E:/ORACLE/ORADATA/ROME/TEST.DBF

在资料档案库中未找到 SCN 963842 后生成的归档日志

介质恢复启动 SCN 是 963842

恢复范围必须超出 SCN 963842 才能清除数据文件模糊性

完成 restore 于 19-1月 -07

RMAN> change backupset 92 unavailable;

不能使用更改的备份段

备份段 handle=D:/TEST.BAK recid=87 stamp=612266866

1 对象已更改为 UNAVAILABLE 状态

RMAN> restore datafile 5 preview;

启动 restore 于 19-1月 -07

使用通道 ORA_DISK_1

备份集列表

===================

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间

------- ---- -- ---------- ----------- ------------ ----------

90      Full    257.89M    DISK        00:00:31     16-1月 -07

BP 关键字: 85   状态: AVAILABLE  已压缩: NO  标记: TAG20070116T093035

段名:D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/ROME/BACKUPSET/2007_01_16/O1_M

F_NNNDF_TAG20070116T093035_2TRBP0F5_.BKP

备份集 90 中的数据文件列表

文件 LV 类型 Ckp SCN    Ckp 时间   名称

---- -- ---- ---------- ---------- ----

5       Full 833817     16-1月 -07 E:/ORACLE/ORADATA/ROME/TEST.DBF

已存档的日志副本列表

关键字     Thrd Seq     S 短时间     名称

------- ---- ------- - ---------- ----

28      1    17      A 15-1月 -07 D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/R

OME/ARCHIVELOG/2007_01_17/O1_MF_1_17_2TWBZJX9_.ARC

29      1    18      A 17-1月 -07 D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/R

OME/ARCHIVELOG/2007_01_18/O1_MF_1_18_2TY5T8F5_.ARC

30      1    19      A 18-1月 -07 D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/R

OME/ARCHIVELOG/2007_01_18/O1_MF_1_19_2TY5XNL2_.ARC

31      1    20      A 18-1月 -07 D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/R

OME/ARCHIVELOG/2007_01_18/O1_MF_1_20_2TY61NDP_.ARC

32      1    21      A 18-1月 -07 D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/R

OME/ARCHIVELOG/2007_01_18/O1_MF_1_21_2TY62DNJ_.ARC

33      1    22      A 18-1月 -07 D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/R

OME/ARCHIVELOG/2007_01_18/O1_MF_1_22_2TZ4C43X_.ARC

介质恢复启动 SCN 是 833817

恢复范围必须超出 SCN 833817 才能清除数据文件模糊性

完成 restore 于 19-1月 -07

RMAN> restore datafile 5 preview;

启动 restore 于 19-1月 -07

使用通道 ORA_DISK_1

备份集列表

===================

BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间

------- ---- -- ---------- ----------- ------------ ----------

92      Full    9.09M      DISK        00:00:01     19-1月 -07

BP 关键字: 87   状态: AVAILABLE  已压缩: NO  标记: TAG20070119T100745

段名:D:/TEST.BAK

备份集 92 中的数据文件列表

文件 LV 类型 Ckp SCN    Ckp 时间   名称

---- -- ---- ---------- ---------- ----

5       Full 963842     19-1月 -07 E:/ORACLE/ORADATA/ROME/TEST.DBF

在资料档案库中未找到 SCN 963842 后生成的归档日志

介质恢复启动 SCN 是 963842

恢复范围必须超出 SCN 963842 才能清除数据文件模糊性

完成 restore 于 19-1月 -07

我们可以用RESTORE... PREVIEW SUMMARY命令来预览恢复的汇总信息。

RESTORE DATABASE PREVIEW SUMMARY;

RESTORE TABLESPACE users PREVIEW SUMMARY;

RESTORE DATAFILE 3 PREVIEW SUMMARY;

RESTORE ARCHIVELOG FROM LOGSEQ 200 PREVIEW SUMMARY;

RESTORE ARCHIVELOG FROM TIME 'SYSDATE-7' PREVIEW SUMMARY;

RESTORE ARCHIVELOG FROM SCN 234546 PREVIEW SUMMARY;

RMAN> restore datafile 5 preview summary;

启动 restore 于 19-1月 -07

使用通道 ORA_DISK_1

备份列表

===============

关键字     TY LV S 设备类型 完成时间   段数 副本数 压缩标记

------- -- -- - ----------- ---------- ------- ------- ---------- ---

92      B  F  A DISK        19-1月 -07 1       1       NO         TAG20070119T10

0745

在资料档案库中未找到 SCN 963842 后生成的归档日志

介质恢复启动 SCN 是 963842

恢复范围必须超出 SCN 963842 才能清除数据文件模糊性

完成 restore 于 19-1月 -07

RMAN> change backupset 92 unavailable;

不能使用更改的备份段

备份段 handle=D:/TEST.BAK recid=87 stamp=612266866

1 对象已更改为 UNAVAILABLE 状态

RMAN> restore datafile 5 preview summary;

启动 restore 于 19-1月 -07

使用通道 ORA_DISK_1

备份列表

===============

关键字     TY LV S 设备类型 完成时间   段数 副本数 压缩标记

------- -- -- - ----------- ---------- ------- ------- ---------- ---

90      B  F  A DISK        16-1月 -07 1       1       NO         TAG20070116T09

3035

已存档的日志副本列表

关键字     Thrd Seq     S 短时间     名称

------- ---- ------- - ---------- ----

28      1    17      A 15-1月 -07 D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/R

OME/ARCHIVELOG/2007_01_17/O1_MF_1_17_2TWBZJX9_.ARC

29      1    18      A 17-1月 -07 D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/R

OME/ARCHIVELOG/2007_01_18/O1_MF_1_18_2TY5T8F5_.ARC

30      1    19      A 18-1月 -07 D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/R

OME/ARCHIVELOG/2007_01_18/O1_MF_1_19_2TY5XNL2_.ARC

31      1    20      A 18-1月 -07 D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/R

OME/ARCHIVELOG/2007_01_18/O1_MF_1_20_2TY61NDP_.ARC

32      1    21      A 18-1月 -07 D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/R

OME/ARCHIVELOG/2007_01_18/O1_MF_1_21_2TY62DNJ_.ARC

33      1    22      A 18-1月 -07 D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/R

OME/ARCHIVELOG/2007_01_18/O1_MF_1_22_2TZ4C43X_.ARC

介质恢复启动 SCN 是 833817

恢复范围必须超出 SCN 833817 才能清除数据文件模糊性

完成 restore 于 19-1月 -07

RESTORE

...

VALIDATE

VALIDATE BACKUPSET

一样可以检测备份文件有效性,是否可以进行恢复。

RESTORE ... VALIDATE #tests whether RMAN can restore a specific object from a backup.

RMAN chooses which backups to use.

VALIDATE BACKUPSET #tests the validity of a backup set that you specify

RESTORE CONTROLFILE VALIDATE;

RESTORE TABLESPACE SYSTEM VALIDATE;

RESTORE ARCHIVELOG ALL VALIDATE;

VALIDATE BACKUPSET 1121,1122;

简单讲述一下全库恢复和恢复个别表空间或数据文件

如果想实现上述恢复,必要条件如下:

1、 当前控制文件完好

2、 必须具备恢复需要的数据文件备份、增量备份和归档日志备份

3、 如果任何一个数据文件没有备份,必须具备自从文件创建以来的在线REDO和归档REDO,这样RMAN可以重新创建数据文件,过程就是先创建空的数据文件,然后再应用归档REDO和在线REDO

恢复案例一:全库恢复

如果丢失了所有的数据文件,存在有效的当前控制文件和参数文件,必须进行全库恢复。

SQL> shutdown immediate

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

删除所有数据文件。

SQL> startup

ORACLE 例程已经启动。

Total System Global Area  167772160 bytes

Fixed Size                  1288340 bytes

Variable Size            104859500 bytes

Database Buffers           54525952 bytes

Redo Buffers                7098368 bytes

数据库装载完毕。

ORA-01157: 无法标识/锁定数据文件 1 - 请参阅 DBWR 跟踪文件

ORA-01110: 数据文件 1: 'D:/ORACLE/PRODUCT/10.2.0/ORADATA/ROME/SYSTEM01.DBF'

SQL> startup mount

ORACLE 例程已经启动。

Total System Global Area  167772160 bytes

Fixed Size                  1288340 bytes

Variable Size             104859500 bytes

Database Buffers           54525952 bytes

Redo Buffers                7098368 bytes

数据库装载完毕。

C:/Documents and Settings/Administrator>set oracle_sid=rome

C:/Documents and Settings/Administrator>rman target /

恢复管理器: Release 10.2.0.2.0 - Production on 星期二 1月 23 15:09:53 2007

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

已连接到目标数据库: ROME (DBID=252956976, 未打开)

RMAN> restore database;

启动 restore 于 23-1月 -07

使用目标数据库控制文件替代恢复目录

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=155 devtype=DISK

通道 ORA_DISK_1: 正在开始恢复数据文件备份集

通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件

正将数据文件00001恢复到D:/ORACLE/PRODUCT/10.2.0/ORADATA/ROME/SYSTEM01.DBF

正将数据文件00002恢复到F:/ORACLE/ORADATA/ROME/UNDOTBS01.DBF

正将数据文件00003恢复到D:/ORACLE/PRODUCT/10.2.0/ORADATA/ROME/SYSAUX01.DBF

正将数据文件00004恢复到D:/ORACLE/PRODUCT/10.2.0/ORADATA/ROME/USERS01.DBF

正将数据文件00005恢复到E:/ORACLE/ORADATA/ROME/TEST.DBF

通道 ORA_DISK_1: 正在读取备份段 D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/ROM

E/BACKUPSET/2007_01_23/O1_MF_NNNDF_TAG20070123T150249_2VCDRVRW_.BKP

通道 ORA_DISK_1: 已恢复备份段 1段句柄 = D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/ROME/BACKUPSET/2007_01_23/

O1_MF_NNNDF_TAG20070123T150249_2VCDRVRW_.BKP 标记 = TAG20070123T150249

通道 ORA_DISK_1: 恢复完成, 用时: 00:07:03

完成 restore 于 23-1月 -07

SQL> recover database;

完成介质恢复。

SQL> alter database open;

数据库已更改。

几点说明:

1、RMAN> RESTORE DATABASE CHECK READONLY;

对于存在只读表空间的情况,如果我们是在有效备份之前把表空间设置为只读的情况,RMAN会跳过只读表空间的恢复。

SQL> alter tablespace test read only;

表空间已更改。

做全库备份。

SQL> shutdown immediate

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

删除所有数据文件

SQL> startup mount

ORACLE 例程已经启动。

Total System Global Area  167772160 bytes

Fixed Size                  1288340 bytes

Variable Size             104859500 bytes

Database Buffers           54525952 bytes

Redo Buffers                7098368 bytes

数据库装载完毕。

RMAN> restore database;

启动 restore 于 23-1月 -07

使用目标数据库控制文件替代恢复目录

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=155 devtype=DISK

未处理数据文件 5, 因为文件是只读的

通道 ORA_DISK_1: 正在开始恢复数据文件备份集

通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件

正将数据文件00001恢复到D:/ORACLE/PRODUCT/10.2.0/ORADATA/ROME/SYSTEM01.DBF

正将数据文件00002恢复到F:/ORACLE/ORADATA/ROME/UNDOTBS01.DBF

正将数据文件00003恢复到D:/ORACLE/PRODUCT/10.2.0/ORADATA/ROME/SYSAUX01.DBF

正将数据文件00004恢复到D:/ORACLE/PRODUCT/10.2.0/ORADATA/ROME/USERS01.DBF

通道 ORA_DISK_1: 正在读取备份段 D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/ROM

E/BACKUPSET/2007_01_23/O1_MF_NNNDF_TAG20070123T154106_2VCH0LSW_.BKP

通道 ORA_DISK_1: 已恢复备份段 1

段句柄 = D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/ROME/BACKUPSET/2007_01_23/

O1_MF_NNNDF_TAG20070123T154106_2VCH0LSW_.BKP 标记 = TAG20070123T154106

通道 ORA_DISK_1: 恢复完成, 用时: 00:01:46

完成 restore 于 23-1月 -07

RMAN> restore database check readonly;

启动 restore 于 23-1月 -07

使用通道 ORA_DISK_1

正在略过数据文件 1; 已恢复到文件 D:/ORACLE/PRODUCT/10.2.0/ORADATA/ROME/SYSTEM01.

DBF

正在略过数据文件 2; 已恢复到文件 F:/ORACLE/ORADATA/ROME/UNDOTBS01.DBF

正在略过数据文件 3; 已恢复到文件 D:/ORACLE/PRODUCT/10.2.0/ORADATA/ROME/SYSAUX01.

DBF

正在略过数据文件 4; 已恢复到文件 D:/ORACLE/PRODUCT/10.2.0/ORADATA/ROME/USERS01.D

BF

通道 ORA_DISK_1: 正在开始恢复数据文件备份集

通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件

正将数据文件00005恢复到E:/ORACLE/ORADATA/ROME/TEST.DBF

通道 ORA_DISK_1: 正在读取备份段 D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/ROM

E/BACKUPSET/2007_01_23/O1_MF_NNNDF_TAG20070123T154106_2VCH0LSW_.BKP

通道 ORA_DISK_1: 已恢复备份段 1

段句柄 = D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/ROME/BACKUPSET/2007_01_23/

O1_MF_NNNDF_TAG20070123T154106_2VCH0LSW_.BKP 标记 = TAG20070123T154106

通道 ORA_DISK_1: 恢复完成, 用时: 00:00:03

完成 restore 于 23-1月 -07

2、RMAN> RECOVER DATABASE DELETE ARCHIVELOG MAXSIZE 25MB;

在进行RESTORE操作的时候可以加上DELETE ARCHIVELOG参数来删除由于RESTORE操作产生的归档日志(已经应用到数据文件)以节约磁盘空间;MAXSIZE限制了产生的归档日志文件的最大值,如果恢复过程中产生的日志大于所设置的最大值,将会报错,只能重新设置更大的MAXSIZE值。

恢复案例二:恢复个别表空间或者数据文件

1、 确认数据库处于MOUNT或者OPEN状态。

2、 将表空进OFFLINE:ALTER TABLESPACE ... OFFLINE IMMEDIATE。

3、 恢复表空间或者数据文件。

SQL> alter tablespace test read write;

表空间已更改。

RMAN> sql 'alter tablespace test offline immediate';

sql 语句: alter tablespace test offline immediate

RMAN> restore tablespace "TEST";

启动 restore 于 23-1月 -07

使用通道 ORA_DISK_1

通道 ORA_DISK_1: 正在开始恢复数据文件备份集

通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件

正将数据文件00005恢复到E:/ORACLE/ORADATA/ROME/TEST.DBF

通道 ORA_DISK_1: 正在读取备份段 D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/ROM

E/BACKUPSET/2007_01_23/O1_MF_NNNDF_TAG20070123T160914_2VCJOCY8_.BKP

通道 ORA_DISK_1: 已恢复备份段 1

段句柄 = D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/ROME/BACKUPSET/2007_01_23/

O1_MF_NNNDF_TAG20070123T160914_2VCJOCY8_.BKP 标记 = TAG20070123T160914

通道 ORA_DISK_1: 恢复完成, 用时: 00:00:03

完成 restore 于 23-1月 -07

RMAN> recover tablespace "TEST";

启动 recover 于 23-1月 -07

使用通道 ORA_DISK_1

正在开始介质的恢复

介质恢复完成, 用时: 00:00:04

完成 recover 于 23-1月 -07

RMAN> sql 'alter tablespace test online';

sql 语句: alter tablespace test online

几个不同类型的文件恢复案例:

恢复案例三:恢复控制文件

全部控制文件丢失,需要从备份的控制文件恢复。恢复了控制文件后必须要进行RECOVER恢复然后用RESETLOGS参数打开数据库,我们也可以把控制文件恢复到其他位置(不是在参数文件中给出的控制文件位置)。本例假定没有使用恢复目录,我们将在以后介绍带有恢复目的RMAN备份如何恢复控制文件。如果没有恢复目录,用RMAN只能在NOMOUNT状态从备份中进行控制文件的恢复。

从自动备份控制文件恢复:

RMAN> configure controlfile autobackup on;

旧的 RMAN 配置参数:

CONFIGURE CONTROLFILE AUTOBACKUP OFF;

新的 RMAN 配置参数:

CONFIGURE CONTROLFILE AUTOBACKUP ON;

已成功存储新的 RMAN 配置参数

RMAN> show all;

RMAN 配置参数为:

CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default

CONFIGURE BACKUP OPTIMIZATION OFF; # default

CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default

CONFIGURE CONTROLFILE AUTOBACKUP ON;

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default

CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO BACKUPSET PARALLELISM 1;

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 ARCHIVELOG DELETION POLICY TO NONE; # default

CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:/ORACLE/PRODUCT/10.2.0/DB_1/DATABASE/S

NCFROME.ORA'; # default

RMAN> backup database;

启动 backup 于 24-1月 -07

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=143 devtype=DISK

通道 ORA_DISK_1: 启动全部数据文件备份集

通道 ORA_DISK_1: 正在指定备份集中的数据文件

输入数据文件 fno=00002 name=F:/ORACLE/ORADATA/ROME/UNDOTBS01.DBF

输入数据文件 fno=00001 name=D:/ORACLE/PRODUCT/10.2.0/ORADATA/ROME/SYSTEM01.DBF

输入数据文件 fno=00003 name=D:/ORACLE/PRODUCT/10.2.0/ORADATA/ROME/SYSAUX01.DBF

输入数据文件 fno=00004 name=D:/ORACLE/PRODUCT/10.2.0/ORADATA/ROME/USERS01.DBF

输入数据文件 fno=00005 name=E:/ORACLE/ORADATA/ROME/TEST.DBF

通道 ORA_DISK_1: 正在启动段 1 于 24-1月 -07

通道 ORA_DISK_1: 已完成段 1 于 24-1月 -07

段句柄=D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/ROME/BACKUPSET/2007_01_24/O1

_MF_NNNDF_TAG20070124T091006_2VFDHGYR_.BKP 标记=TAG20070124T091006 注释=NONE

通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:25

完成 backup 于 24-1月 -07

启动 Control File and SPFILE Autobackup于 24-1月 -07段 handle=D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/ROME/AUTOBACKUP/2007_01_2

4/O1_MF_S_612695432_2VFDJ95V_.BKP comment=NONE

完成 Control File and SPFILE Autobackup 于 24-1月 -07

SQL> shutdown immediate

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

删除所有的控制文件。

SQL> startup

ORACLE 例程已经启动。

Total System Global Area  167772160 bytes

Fixed Size                  1288340 bytes

Variable Size             104859500 bytes

Database Buffers           54525952 bytes

Redo Buffers                7098368 bytes

ORA-00205: ?????????, ??????, ???????

SQL> shutdown immediate

ORA-01507: ??????

ORACLE 例程已经关闭。

SQL> startup nomount

ORACLE 例程已经启动。

Total System Global Area  167772160 bytes

Fixed Size                  1288340 bytes

Variable Size             104859500 bytes

Database Buffers           54525952 bytes

Redo Buffers                7098368 bytes

RMAN> SET DBID 252956976;

正在执行命令: SET DBID

RMAN>  restore controlfile from autobackup;

启动 restore 于 24-1月 -07

使用目标数据库控制文件替代恢复目录

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=155 devtype=DISK

恢复区域目标: d:/oracle/product/10.2.0/flash_recovery_area

用于搜索的数据库名 (或数据库的唯一名称): ROME

通道 ORA_DISK_1: 在恢复区域中找到自动备份

通道 ORA_DISK_1: 已找到的自动备份: D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/

ROME/AUTOBACKUP/2007_01_24/O1_MF_S_612695432_2VFDJ95V_.BKP

通道 ORA_DISK_1: 从自动备份复原控制文件已完成

输出文件名=D:/ORACLE/PRODUCT/10.2.0/ORADATA/ROME/CONTROL01.CTL

输出文件名=F:/ORACLE/ORADATA/ROME/CONTROL02.CTL

输出文件名=E:/ORACLE/ORADATA/ROME/CONTROL03.CTL

完成 restore 于 24-1月 -07

RMAN> sql 'alter database mount';

sql 语句: alter database mount

释放的通道: ORA_DISK_1

RMAN> recover database;

启动 recover 于 24-1月 -07

启动 implicit crosscheck backup 于 24-1月 -07

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=155 devtype=DISK

已交叉检验的 21 对象

完成 implicit crosscheck backup 于 24-1月 -07

启动 implicit crosscheck copy 于 24-1月 -07

使用通道 ORA_DISK_1

已交叉检验的 1 对象

完成 implicit crosscheck copy 于 24-1月 -07

搜索恢复区域中的所有文件

正在编制文件目录...

目录编制完毕

已列入目录的文件的列表

=======================

文件名: D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/ROME/AUTOBACKUP/2007_01_24/

O1_MF_S_612714183_2VFYT8Y8_.BKP

使用通道 ORA_DISK_1

正在开始介质的恢复

存档日志线程 1 序列 1 已作为文件 D:/ORACLE/PRODUCT/10.2.0/ORADATA/ROME/REDO02A.L

OG 存在于磁盘上

存档日志文件名 =D:/ORACLE/PRODUCT/10.2.0/ORADATA/ROME/REDO02A.LOG 线程 =1 序列 =

1

介质恢复完成, 用时: 00:00:03

完成 recover 于 24-1月 -07

RMAN> sql 'alter database open resetlogs';

sql 语句: alter database open resetlogs

从包含控制文件的全库备份恢复:

RMAN> configure controlfile autobackup off;

旧的 RMAN 配置参数:

CONFIGURE CONTROLFILE AUTOBACKUP ON;

新的 RMAN 配置参数:

CONFIGURE CONTROLFILE AUTOBACKUP OFF;

已成功存储新的 RMAN 配置参数

RMAN> backup database;

启动 backup 于 24-1月 -07

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=157 devtype=DISK

通道 ORA_DISK_1: 启动全部数据文件备份集

通道 ORA_DISK_1: 正在指定备份集中的数据文件

输入数据文件 fno=00002 name=F:/ORACLE/ORADATA/ROME/UNDOTBS01.DBF

输入数据文件 fno=00001 name=D:/ORACLE/PRODUCT/10.2.0/ORADATA/ROME/SYSTEM01.DBF

输入数据文件 fno=00003 name=D:/ORACLE/PRODUCT/10.2.0/ORADATA/ROME/SYSAUX01.DBF

输入数据文件 fno=00004 name=D:/ORACLE/PRODUCT/10.2.0/ORADATA/ROME/USERS01.DBF

输入数据文件 fno=00005 name=E:/ORACLE/ORADATA/ROME/TEST.DBF

通道 ORA_DISK_1: 正在启动段 1 于 24-1月 -07

通道 ORA_DISK_1: 已完成段 1 于 24-1月 -07

段句柄=D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/ROME/BACKUPSET/2007_01_24/O1

_MF_NNNDF_TAG20070124T152907_2VG2P400_.BKP 标记=TAG20070124T152907 注释=NONE

通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:25

通道 ORA_DISK_1: 启动全部数据文件备份集

通道 ORA_DISK_1: 正在指定备份集中的数据文件

备份集中包括当前控制文件

在备份集中包含当前的 SPFILE

通道 ORA_DISK_1: 正在启动段 1 于 24-1月 -07

通道 ORA_DISK_1: 已完成段 1 于 24-1月 -07

段句柄=D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/ROME/BACKUPSET/2007_01_24/O1

_MF_NCSNF_TAG20070124T152907_2VG2PZ6C_.BKP 标记=TAG20070124T152907 注释=NONE

通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:03

完成 backup 于 24-1月 -07

SQL> shutdown immediate

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

删除所有控制文件。

SQL> startup nomount

ORACLE 例程已经启动。

Total System Global Area  167772160 bytes

Fixed Size                  1288340 bytes

Variable Size             104859500 bytes

Database Buffers           54525952 bytes

Redo Buffers                7098368 bytes

C:/Documents and Settings/Administrator>rman target /

恢复管理器: Release 10.2.0.2.0 - Production on 星期三 1月 24 15:37:54 2007

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

连接到目标数据库: rome (未装载)

RMAN> RESTORE CONTROLFILE FROM 'D:/oracle/product/10.2.0/flash_recovery_area/ROM

E/BACKUPSET/2007_01_24/O1_MF_NCSNF_TAG20070124T152907_2VG2PZ6C_.BKP';

启动 restore 于 24-1月 -07

使用目标数据库控制文件替代恢复目录

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=155 devtype=DISK

通道 ORA_DISK_1: 正在复原控制文件

通道 ORA_DISK_1: 恢复完成, 用时: 00:00:04

输出文件名=D:/ORACLE/PRODUCT/10.2.0/ORADATA/ROME/CONTROL01.CTL

输出文件名=F:/ORACLE/ORADATA/ROME/CONTROL02.CTL

输出文件名=E:/ORACLE/ORADATA/ROME/CONTROL03.CTL

完成 restore 于 24-1月 -07

RMAN> sql 'alter database mount';

sql 语句: alter database mount

释放的通道: ORA_DISK_1

RMAN> recover database;

启动 recover 于 24-1月 -07

启动 implicit crosscheck backup 于 24-1月 -07

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=155 devtype=DISK

已交叉检验的 24 对象

完成 implicit crosscheck backup 于 24-1月 -07

启动 implicit crosscheck copy 于 24-1月 -07

使用通道 ORA_DISK_1

已交叉检验的 1 对象

完成 implicit crosscheck copy 于 24-1月 -07

搜索恢复区域中的所有文件

正在编制文件目录...

目录编制完毕

已列入目录的文件的列表

=======================

文件名: D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/ROME/BACKUPSET/2007_01_24/O

1_MF_NCSNF_TAG20070124T152907_2VG2PZ6C_.BKP

使用通道 ORA_DISK_1

正在开始介质的恢复

存档日志线程 1 序列 1 已作为文件 D:/ORACLE/PRODUCT/10.2.0/ORADATA/ROME/REDO02A.L

OG 存在于磁盘上

存档日志文件名 =D:/ORACLE/PRODUCT/10.2.0/ORADATA/ROME/REDO02A.LOG 线程 =1 序列 =

1

介质恢复完成, 用时: 00:00:02

完成 recover 于 24-1月 -07

RMAN> sql 'alter database open resetlogs';

sql 语句: alter database open resetlogs

我们可以利用dbms_backup_restore包来恢复控制文件。

RMAN> backup database;

启动 backup 于 24-1月 -07

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=143 devtype=DISK

通道 ORA_DISK_1: 启动全部数据文件备份集

通道 ORA_DISK_1: 正在指定备份集中的数据文件

输入数据文件 fno=00002 name=F:/ORACLE/ORADATA/ROME/UNDOTBS01.DBF

输入数据文件 fno=00001 name=D:/ORACLE/PRODUCT/10.2.0/ORADATA/ROME/SYSTEM01.DBF

输入数据文件 fno=00003 name=D:/ORACLE/PRODUCT/10.2.0/ORADATA/ROME/SYSAUX01.DBF

输入数据文件 fno=00004 name=D:/ORACLE/PRODUCT/10.2.0/ORADATA/ROME/USERS01.DBF

输入数据文件 fno=00005 name=E:/ORACLE/ORADATA/ROME/TEST.DBF

通道 ORA_DISK_1: 正在启动段 1 于 24-1月 -07

通道 ORA_DISK_1: 已完成段 1 于 24-1月 -07

段句柄=D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/ROME/BACKUPSET/2007_01_24/O1

_MF_NNNDF_TAG20070124T120738_2VFPWCXS_.BKP 标记=TAG20070124T120738 注释=NONE

通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:25

通道 ORA_DISK_1: 启动全部数据文件备份集

通道 ORA_DISK_1: 正在指定备份集中的数据文件

备份集中包括当前控制文件

在备份集中包含当前的 SPFILE

通道 ORA_DISK_1: 正在启动段 1 于 24-1月 -07

通道 ORA_DISK_1: 已完成段 1 于 24-1月 -07

段句柄=D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/ROME/BACKUPSET/2007_01_24/O1

_MF_NCSNF_TAG20070124T120738_2VFPX6G5_.BKP 标记=TAG20070124T120738 注释=NONE

通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:03

完成 backup 于 24-1月 -07

SQL> shutdown immediate

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

删除所有控制文件。

SQL> startup nomount

ORACLE 例程已经启动。

Total System Global Area  167772160 bytes

Fixed Size                  1288340 bytes

Variable Size             104859500 bytes

Database Buffers           54525952 bytes

Redo Buffers                7098368 bytes

SQL> DECLARE

2  devtype varchar2(256);

3  done boolean;

4  BEGIN

5  devtype:=sys.dbms_backup_restore.deviceAllocate(type=>'',ident=>'');

6  sys.dbms_backup_restore.restoreSetDatafile;

7  sys.dbms_backup_restore.restoreControlfileTo(cfname=>'D:/oracle/product/10.

2.0/oradata/rome/Control01.ctl');

8  sys.dbms_backup_restore.restoreBackupPiece(done=>done,handle=>'D:/oracle/pr

oduct/10.2.0/flash_recovery_area/ROME/BACKUPSET/2007_01_24/O1_MF_NCSNF_TAG200701

24T120738_2VFPX6G5_.BKP', params=>null);

9  sys.dbms_backup_restore.deviceDeallocate;

10  exception when others then

11  dbms_output.put_line(sqlerrm);

12  END;

13  /

PL/SQL 过程已成功完成。

RMAN> restore database;

启动 restore 于 24-1月 -07

启动 implicit crosscheck backup 于 24-1月 -07

使用目标数据库控制文件替代恢复目录

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=155 devtype=DISK

已交叉检验的 17 对象

完成 implicit crosscheck backup 于 24-1月 -07

启动 implicit crosscheck copy 于 24-1月 -07

使用通道 ORA_DISK_1

已交叉检验的 1 对象

完成 implicit crosscheck copy 于 24-1月 -07

搜索恢复区域中的所有文件

正在编制文件目录...

目录编制完毕

已列入目录的文件的列表

=======================

文件名: D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/ROME/BACKUPSET/2007_01_24/O

1_MF_NCSNF_TAG20070124T120738_2VFPX6G5_.BKP

使用通道 ORA_DISK_1

通道 ORA_DISK_1: 正在开始恢复数据文件备份集

通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件

正将数据文件00001恢复到D:/ORACLE/PRODUCT/10.2.0/ORADATA/ROME/SYSTEM01.DBF

正将数据文件00002恢复到F:/ORACLE/ORADATA/ROME/UNDOTBS01.DBF

正将数据文件00003恢复到D:/ORACLE/PRODUCT/10.2.0/ORADATA/ROME/SYSAUX01.DBF

正将数据文件00004恢复到D:/ORACLE/PRODUCT/10.2.0/ORADATA/ROME/USERS01.DBF

正将数据文件00005恢复到E:/ORACLE/ORADATA/ROME/TEST.DBF

通道 ORA_DISK_1: 正在读取备份段 D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/ROM

E/BACKUPSET/2007_01_24/O1_MF_NNNDF_TAG20070124T120738_2VFPWCXS_.BKP

通道 ORA_DISK_1: 已恢复备份段 1

段句柄 = D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/ROME/BACKUPSET/2007_01_24/

O1_MF_NNNDF_TAG20070124T120738_2VFPWCXS_.BKP 标记 = TAG20070124T120738

通道 ORA_DISK_1: 恢复完成, 用时: 00:01:45

完成 restore 于 24-1月 -07

RMAN> recover database;

启动 recover 于 24-1月 -07

使用通道 ORA_DISK_1

正在开始介质的恢复

存档日志线程 1 序列 26 已作为文件 D:/ORACLE/PRODUCT/10.2.0/ORADATA/ROME/REDO02A.

LOG 存在于磁盘上

存档日志文件名 =D:/ORACLE/PRODUCT/10.2.0/ORADATA/ROME/REDO02A.LOG 线程 =1 序列 =

26

介质恢复完成, 用时: 00:00:02

完成 recover 于 24-1月 -07

RMAN> sql 'alter database open resetlogs';

sql 语句: alter database open resetlogs

如果使用了Flash Recovery Area,RMAN自动执行CROSSCHECK检查控制文件中涉及到的备份文件和竞相拷贝(磁盘备份),如果是使用磁带备份RMAN不会自动进行CROSSCHECK检查,需要我们恢复完控制文件后执行下列检查操作:

RMAN> CROSSCHECK BACKUP DEVICE TYPE SBT;

如果我们的RMAN是带有恢复目录的话,则在恢复的时候不用进行SET DBID操作,直接执行如下命令即可:

RMAN>  restore controlfile;

我们可以在数据库处于任何状态的情况下把控制文件恢复到参数文件中设置的控制文件以外的位置:

RMAN〉restore controlfile to ‘...’ from ‘...’;

恢复案例四:恢复参数文件

SQL> shutdown immediate

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

删除参数文件。

数据库关闭状态丢失参数文件:

C:/Documents and Settings/Administrator>rman target /

恢复管理器: Release 10.2.0.2.0 - Production on 星期三 1月 24 16:16:25 2007

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

已连接到目标数据库 (未启动)

RMAN> set dbid 252956976

正在执行命令: SET DBID

RMAN> RESTORE SPFILE FROM 'D:/oracle/product/10.2.0/flash_recovery_area/ROME/BAC

KUPSET/2007_01_24/O1_MF_NCSNF_TAG20070124T152907_2VG2PZ6C_.BKP';

启动 restore 于 24-1月 -07

使用通道 ORA_DISK_1

通道 ORA_DISK_1: 已找到的自动备份: D:/oracle/product/10.2.0/flash_recovery_area/

ROME/BACKUPSET/2007_01_24/O1_MF_NCSNF_TAG20070124T152907_2VG2PZ6C_.BKP

通道 ORA_DISK_1: 从自动备份复原 SPFILE 已完成

完成 restore 于 24-1月 -07

数据库打开状态丢失参数文件:

SQL> alter system set sga_max_size=100M scope=spfile;

alter system set sga_max_size=100M scope=spfile

*

第 1 行出现错误:

ORA-01565: 标识文件 'D:/ORACLE/PRODUCT/10.2.0/DB_1/DATABASE/SPFILEROME.ORA'

时出错

ORA-27041: 无法打开文件

OSD-04002: 无法打开文件

O/S-Error: (OS 2) 系统找不到指定的文件。

这是我们应该先关闭数据库,然后执行数据库关闭状态丢失参数文件的操作。

另外我们也可以从控制文件自动备份中恢复参数文件,操作过程类似从控制文件自动备份恢复控制文件的操作,这里就不再赘述。

恢复案例五:隐含参数_allow_resetlogs_corruption的使用

用RMAN做好备份后,删除所有归档日志文件和备份。

恢复自动备份的控制文件。

SQL> startup nomount

ORACLE 例程已经启动。

Total System Global Area  167772160 bytes

Fixed Size                  1288340 bytes

Variable Size             104859500 bytes

Database Buffers           54525952 bytes

Redo Buffers                7098368 bytes

RMAN> set dbid 252956976

正在执行命令: SET DBID

RMAN> restore controlfile from autobackup;

启动 restore 于 31-1月 -07

使用目标数据库控制文件替代恢复目录

分配的通道: ORA_DISK_1

通道 ORA_DISK_1: sid=155 devtype=DISK

恢复区域目标: d:/oracle/product/10.2.0/flash_recovery_area

用于搜索的数据库名 (或数据库的唯一名称): ROME

通道 ORA_DISK_1: 在恢复区域中找到自动备份

通道 ORA_DISK_1: 已找到的自动备份: D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/

ROME/AUTOBACKUP/2007_01_30/O1_MF_S_613239538_2VXZVMGN_.BKP

通道 ORA_DISK_1: 从自动备份复原控制文件已完成

输出文件名=D:/ORACLE/PRODUCT/10.2.0/ORADATA/ROME/CONTROL01.CTL

输出文件名=F:/ORACLE/ORADATA/ROME/CONTROL02.CTL

输出文件名=E:/ORACLE/ORADATA/ROME/CONTROL03.CTL

完成 restore 于 31-1月 -07

RMAN> sql 'alter database mount';

sql 语句: alter database mount

释放的通道: ORA_DISK_1

RMAN> restore database;

SQL> recover database using backup controlfile;

ORA-00279: ?? 1151325 (? 01/30/2007 16:18:22 ??) ???? 1 ????

ORA-00289: ??:

D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/ROME/ARCHIVELOG/2007_01_30/O1_MF_1_

1_%U_.ARC

ORA-00280: ?? 1151325 (???? 1) ??? #1 ?

指定日志: {<RET>=suggested | filename | AUTO | CANCEL}

auto

ORA-00308: ????????

'D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/ROME/ARCHIVELOG/2007_01_30/O1_MF_1

_1_%U_.ARC'

ORA-27041: ??????

OSD-04002: ????????????

O/S-Error: (OS 2) ??????????????????????

ORA-00308: ????????

'D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/ROME/ARCHIVELOG/2007_01_30/O1_MF_1

_1_%U_.ARC'

ORA-27041: ??????

OSD-04002: ????????????

O/S-Error: (OS 2) ??????????????????????

SQL> alter database open resetlogs;

alter database open resetlogs

*

第 1 行出现错误:

ORA-01113: 文件 1 需要介质恢复

ORA-01110: 数据文件 1: 'D:/ORACLE/PRODUCT/10.2.0/ORADATA/ROME/SYSTEM01.DBF'

SQL> recover database using backup controlfile;

ORA-00279: 更改 1151325 (在 01/30/2007 16:18:22 生成) 对于线程 1 是必需的

ORA-00289: 建议:

D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/ROME/ARCHIVELOG/2007_01_30/O1_MF_1_

1_%U_.ARC

ORA-00280: 更改 1151325 (用于线程 1) 在序列 #1 中

指定日志: {<RET>=suggested | filename | AUTO | CANCEL}

auto

ORA-00308: 无法打开归档日志

'D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/ROME/ARCHIVELOG/2007_01_30/O1_MF_1

_1_%U_.ARC'

ORA-27041: 无法打开文件

OSD-04002: 无法打开文件

O/S-Error: (OS 2) 系统找不到指定的文件。

ORA-00308: 无法打开归档日志

'D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/ROME/ARCHIVELOG/2007_01_30/O1_MF_1

_1_%U_.ARC'

ORA-27041: 无法打开文件

OSD-04002: 无法打开文件

O/S-Error: (OS 2) 系统找不到指定的文件。

SQL> create pfile='d:/rome.ora' from spfile;

文件已创建。

修改rome.ora加入 *._allow_resetlogs_corruption=TRUE

SQL> startup pfile='d:/rome.ora'

ORACLE 例程已经启动。

Total System Global Area  167772160 bytes

Fixed Size                  1288340 bytes

Variable Size             104859500 bytes

Database Buffers           54525952 bytes

Redo Buffers                7098368 bytes

数据库装载完毕。

ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项

SQL> alter database open resetlogs;

数据库已更改。

SQL> show parameter _allow_

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

_allow_resetlogs_corruption          boolean     TRUE

列举几个恢复命令,这里就不再一一给出示例了。

RMAN> RECOVER DATABASE SKIP TABLESPACE users;

RMAN> RECOVER TABLESPACE users, tools;

RMAN> RECOVER DATAFILE '/newdisk/users01.dbf','/newdisk/tools01.dbf';

RMAN> RECOVER DATAFILE 4;

RMAN> RECOVER TABLESPACE users, tools DELETE ARCHIVELOG;

恢复表空间和数据文件到新位置

RUN {

    SET NEWNAME FOR DATAFILE 3 to 'new_location';

    RESTORE DATAFILE 3;

    SWITCH DATAFILE 3;

    RECOVER DATAFILE 3;

}

如果没有指定新位置,将按照OMF命名规则创建新文件:

RUN {

    SET NEWNAME FOR DATAFILE 3 to NEW;

    RESTORE DATAFILE 3;

    SWITCH DATAFILE 3;

    RECOVER DATAFILE 3;

}

基于时间点和SCN的恢复我们将在RMAN高级应用讲述。

归档日志文件恢复这里也不举例子了,比较简单。

恢复管理维护任务

这部分主要介绍一下如何管理维护RMAN存储库和快速恢复区:

1、  没有恢复目录的情况下如何管理RMAN存储库

2、  交叉验证备份(CROSSCHECKING BACKUP)

3、  删除备份

4、  利用RMAN删除数据库

5、  多个通道的情况下交叉验证和删除操作

6、  如何改变一个备份记录的状态

7、  归档日志目录和手工拷贝

8、  修改RMAN存储库目录

9、  维护快速恢复区

没有恢复目录的情况下管理RMAN存储库

备份控制文件:

如果没有恢复目录,控制文件的备份更加重要。要通过多个镜像控制文件或者操作系统镜像来备份变化了的控制文件。另外最好要配置控制文件的自动备份。

CONTROLFILE

AUTOBACKUP ON

注意:如果从自动备份或者其他备份恢复了控制文件,最近执行的CONFIGURE配置内容将会被覆盖,回到备份时刻的设置。

监控控制文件记录重写:

没有恢复目录的情况下,oracle的控制文件记录了所有的历史备份记录,为了保证控制文件不会无限制的增长,oracle提供了一个可以设置控制文件保留时间的阀值的初始化参数:

CONTROL_FILE_RECORD_KEEP_TIME

例如我们设置了

CONTROL_FILE_RECORD_KEEP_TIME=14

,任何超过14天的纪录都有可能被覆盖,如果没有超过14天的记录,oracle将扩展控制文件的大小,如果由于受到操作系统的限制(比如磁盘空间满)无法扩展控制文件的大小,oracle会强制覆盖最老的记录并且在alter.log中记录这一情况。如下所示:

kccwnc: following controlfile record written over: 

RECID #72 Recno 72 Record timestamp 

07/28/00 22:15:21 

Thread=1 Seq#=3460 

Backup set key: stamp=372031415, count=17 

Low scn: 0x0000.3af33f36 

07/27/00 21:00:08 

Next scn: 0x0000.3af3871b 

07/27/00 23:23:54 

Resetlogs scn and time 

scn: 0x0000.00000001 

08/05/99 10:46:44 

Block count=102400 Blocksize=512

快速恢复区Flash Recovery Area和 控制文件记录保存时间 参数 CONTROL_FILE_RECORD_KEEP_TIME之间的相互作用

如果我们在使用快速恢复区保留RMAN备份的话,控制文件将记录恢复区中文件的创建记录,因为一般来讲文件创建的记录要比执行备份的信息要晚,如果有备份文件超过了

CONTROL_FILE_RECORD_KEEP_TIME

参数所规定的时间,ORACLE试图删除这些这些文件,否则ORACLE将增加控制文件的大小并且在alter.log中记录这一情况。如下所示:

kccwnc: tring to expand controlfile section nnnn for Oracle Managed Files

如果无法扩展控制文件,则

alter.log

中将出现以下信息:

WARNING: Oracle Managed File filename is unknown to controlfile. This is the

result of limitation in control file size that could not keep all recovery area

files.

也就是不能满足备份的保留冗余策略来保存备份了。

为了避免和降低这种情况的发生,我们可以采取以下措施:

使用32K大小的块创建控制文件,如果想设置控制文件32K大小的BLOCK,我们必须首先把SYSTEM表空间设置成为大于或者等于控制文件使用的BLOCK SIZE。修改了控制文件BLOCK_SIZE后,必须重建控制文件。

使用BACKUP RECOVERY AREA命令备份快速恢复区使得快速恢复区的文件称为可以删除的文件

, 或者减小备份保留时间或者减小备份保留冗余度

维护控制文件中的RMAN备份存储库

交叉验证备份CROSESSCHECK BACKUPS

验证备份存储库中的备份记录和磁盘(或者磁带)上的备份文件是否一致。如果用磁盘保存备份,CROSSCHECK检查文件头是否有效,如果用磁带保存备份,CROSSCHECK检查文件是否存在。备份文件的三种可能的状态为:AVAILABLE, UNAVAILABLE, and EXPIRED,我们可以用LIST命令查看或者直接查询

V$BACKUP_FILES

、RC_DATAFILE_COPY

RC_ARCHIVED_LOG

等视图。

给出几个CORSSCHECK示例命令:

CROSSCHECK BACKUP;  # checks backup sets, proxy copies, and image copies

CROSSCHECK COPY OF DATABASE;

CROSSCHECK BACKUPSET 1338, 1339, 1340;

CROSSCHECK BACKUPPIECE TAG = 'nightly_backup';

CROSSCHECK CONTROLFILECOPY '/tmp/control01.ctl';

CROSSCHECK DATAFILECOPY 113, 114, 115;

CROSSCHECK PROXY 789;

交叉验证指定数据库文件的备份

# these CROSSCHECK commands use configured channels, which means that they

# always check the disk device. If you configured an sbt channel, then RMAN

# checks the sbt device, too

CROSSCHECK BACKUP OF DATAFILE "ora_home/oradata/trgt/system01.dbf"

  COMPLETED AFTER 'SYSDATE-180';

CROSSCHECK BACKUP OF ARCHIVELOG ALL SPFILE;

删除备份

删除指定的备份:

1、 先用LIST命令找到备份唯一标识。

LIST BACKUP OF DATABASE ARCHIVELOG ALL; # lists backups of db files and logs

LIST COPY; # lists only image copies

LIST BACKUP; # lists everything

2、 删除指定的备份存储库记录和备份文件。

DELETE BACKUPPIECE 101;

DELETE CONTROLFILECOPY '/tmp/control01.ctl';

DELETE NOPROMPT ARCHIVELOG UNTIL SEQUENCE = 300;

批量删除:

DELETE BACKUP; # deletes all backups on disk and tape

DELETE BACKUP OF TABLESPACE users DEVICE TYPE sbt; # delete only from tape

DELETE COPY OF CONTROLFILE LIKE '/tmp/%';  # LIKE specifies name of the copy

DELETE NOPROMPT ARCHIVELOG ALL

BACKED UP 3 TIMES TO sbt; # backs up only if already backed up 3X to tape

删除无效备份:

RMAN>CROSSCHECK BAKCUP;

RMAN>DELETE EXPIRED BACKUP;

删除过期备份:

RMAN>DELETE OBSOLETE;如果没有指定其他参数RMAN默认按照保留冗余策略找到过期备份后执行删除,等效于:

DELETE OBSOLETE REDUNDANCY = 1;

删除过期备份也可以指定按照时间冗余策略来删除,例如:

DELETE OBSOLETE RECOVERY WINDOW OF 7 DAYS;

强制删除备份

如果没有执行CROSSCHECK,而磁盘上备份文件确实被删除了,我们执行删除备份的时候会从RMAN收到错误提示,如下:

RMAN> delete backup tag 'TAG20070130T161822';

使用通道 ORA_DISK_1

备份段列表

BP 关键字  BS 关键字  Pc# Cp# 状态      设备类型段名称

------- ------- --- --- ----------- ----------- ----------

110     115     1   1   AVAILABLE   DISK        D:/ORACLE/PRODUCT/10.2.0/FLASH_R

ECOVERY_AREA/ROME/BACKUPSET/2007_01_30/O1_MF_NNNDF_TAG20070130T161822_2VXZTH2G_.

BKP

是否确定要删除以上对象 (输入 YES 或 NO)? yes

RMAN-06207: 警告: 由于状态不匹配, 所以不能删除 1 对象 (对于 DISK 通道)。

RMAN-06208: 请用 CROSSCHECK 命令修正状态

RMAN-06210: 不匹配对象的列表

RMAN-06211: ==========================

RMAN-06212: 对象类型   文件名/句柄

RMAN-06213: --------------- ---------------------------------------------------

RMAN-06214: Backup Piece    D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/ROME/BA

CKUPSET/2007_01_30/O1_MF_NNNDF_TAG20070130T161822_2VXZTH2G_.BKP

我们可以用带有force参数的选项来强制删除备份:

RMAN> delete force backup tag 'TAG20070130T161822';

使用通道 ORA_DISK_1

备份段列表

BP 关键字  BS 关键字  Pc# Cp# 状态      设备类型段名称

------- ------- --- --- ----------- ----------- ----------

110     115     1   1   AVAILABLE   DISK        D:/ORACLE/PRODUCT/10.2.0/FLASH_R

ECOVERY_AREA/ROME/BACKUPSET/2007_01_30/O1_MF_NNNDF_TAG20070130T161822_2VXZTH2G_.

BKP

是否确定要删除以上对象 (输入 YES 或 NO)? yes

已删除备份段

备份段 handle=D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/ROME/BACKUPSET/2007_0

1_30/O1_MF_NNNDF_TAG20070130T161822_2VXZTH2G_.BKP recid=110 stamp=613239503

1 对象已删除

多个通道执行交叉验证和删除备份

在执行CROSSCHECK和DELETE之前可以配置或者手工分配多个通道,RMAN将搜索和删除在不同类型的设备上执行的备份文件。适用以下情况:

1、 用一个命令交叉验证或者删除在不同设备上备份的文件(例如磁带和磁盘上都有备份文件)。

2、 交叉验证或者删除工作在RAC环境下备份到每个节点上的备份文件。

RMAN如何在多通道下执行CROSSCHECK和DELETE:

举个例子,我们的备份文件全部在磁盘上,磁带上没有备份文件,而我们给出了如下备份脚本,那么RMAN将会执行前边的两个磁盘CROSSCHECK而不会执行第三条磁带CROSSCHECK。

RUN

{ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE DISK CONNECT 'SYS/[email protected]';

AlLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE DISK CONNECT 'SYS/[email protected]';

ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE sbt;

CROSSCHECK BACKUP OF DATABASE;

}

注意:如果RMAN标记为EXPIRED状态的备份文件被修复后,我们执行DELETE EXPIRED BACKUP;命令后将会收到如下提示:

RMAN> delete expired backup;

使用通道 ORA_DISK_1

备份段列表

BP 关键字  BS 关键字  Pc# Cp# 状态      设备类型段名称

------- ------- --- --- ----------- ----------- ----------

112     117     1   1   EXPIRED     DISK        D:/ORACLE/PRODUCT/10.2.0/FLASH_R

ECOVERY_AREA/ROME/BACKUPSET/2007_02_05/O1_MF_NNNDF_TAG20070205T113315_2WF9CYG5_.

BKP

是否确定要删除以上对象 (输入 YES 或 NO)? yes

RMAN-06207: 警告: 由于状态不匹配, 所以不能删除 1 对象 (对于 DISK 通道)。

RMAN-06208: 请用 CROSSCHECK 命令修正状态

RMAN-06210: 不匹配对象的列表

RMAN-06211: ==========================

RMAN-06212: 对象类型   文件名/句柄

RMAN-06213: --------------- ---------------------------------------------------

RMAN-06214: Backup Piece    D:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/ROME/BA

CKUPSET/2007_02_05/O1_MF_NNNDF_TAG20070205T113315_2WF9CYG5_.BKP

一个命令交叉验证磁盘和磁带备份的例子:

CONFIGURE DEVICE TYPE sbt PARALLELISM 1;

CONFIGURE DEFAULT DEVICE TYPE to sbt;

CROSSCHECK BACKUP OF DATABASE;

示例输出文件如下:

allocated channel: ORA_SBT_TAPE_1

channel ORA_SBT_TAPE_1: sid=12 devtype=SBT_TAPE

channel ORA_SBT_TAPE_1: WARNING: Oracle Test Disk API

using channel ORA_DISK_1

crosschecked backup piece: found to be 'AVAILABLE'

backup piece handle=/oracle/dbs/16c5esv4_1_1 recid=36 stamp=408384484

crosschecked backup piece: found to be 'AVAILABLE'

backup piece handle=/oracle/dbs/c-674966176-20000915-01 recid=37 stamp=408384496

crosschecked backup piece: found to be 'AVAILABLE'

backup piece handle=12c5erb2_1_1 recid=32 stamp=408382820

crosschecked backup piece: found to be 'AVAILABLE'

backup piece handle=13c5erba_1_1 recid=33 stamp=408382829

crosschecked backup piece: found to be 'AVAILABLE'

backup piece handle=14c5erce_1_1 recid=34 stamp=408382863

crosschecked backup piece: found to be 'AVAILABLE'

backup piece handle=c-674966176-20000915-00 recid=35 stamp=408382869

如果没有配置磁带备份设备,也可以手工执行分配通道:

ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE sbt;

CROSSCHECK BACKUP OF DATABASE;

RAC环境下交叉验证的例子:

CONFIGURE DEVICE TYPE DISK PARALLELISM 2;

CONFIGURE CHANNEL 1 DEVICE TYPE DISK CONNECT 'SYS/[email protected]_1';

CONFIGURE CHANNEL 2 DEVICE TYPE DISK CONNECT 'SYS/[email protected]_2';

CROSSCHECK BACKUP;

一个删除磁带和磁盘备份的例子:

CONFIGURE DEVICE TYPE sbt PARALLELISM 1;

CONFIGURE DEFAULT DEVICE TYPE TO sbt;

DELETE BACKUPSET;

示例输出文件如下:

using channel ORA_SBT_TAPE_1

using channel ORA_DISK_1

List of Backup Pieces

BP Key  BS Key  Pc# Cp# Status      Device Type Piece Name

------- ------- --- --- ----------- ----------- ----------

388     387     1   1   AVAILABLE   SBT_TAPE    12c5erb2_1_1

397     396     1   1   UNAVAILABLE SBT_TAPE    13c5erba_1_1

424     423     1   1   AVAILABLE   SBT_TAPE    14c5erce_1_1

428     427     1   1   AVAILABLE   SBT_TAPE    c-674966176-20000915-00

433     432     1   1   AVAILABLE   DISK        /oracle/dbs/16c5esv4_1_1

437     436     1   1   AVAILABLE   DISK     /oracle/dbs/c-674966176-20000915-01

Do you really want to delete the above objects (enter YES or NO)? y

deleted backup piece

backup piece handle=/oracle/dbs/16c5esv4_1_1 recid=36 stamp=408384484

deleted backup piece

backup piece handle=/oracle/dbs/c-674966176-20000915-01 recid=37 stamp=408384496

deleted backup piece

backup piece handle=12c5erb2_1_1 recid=32 stamp=408382820

deleted backup piece

backup piece handle=13c5erba_1_1 recid=33 stamp=408382829

deleted backup piece

backup piece handle=14c5erce_1_1 recid=34 stamp=408382863

deleted backup piece

backup piece handle=c-674966176-20000915-00 recid=35 stamp=408382869

释放多个通道:

如下命令可以释放所有通道:

RELEASE CHANNEL;

使用RMAN删除数据库:

RMAN连接到处于MOUNT状态的TARGET数据库,就可以删除TARGET数据库,而不需要连接恢复目录;如果RMAN同时连接到恢复目录,并且指定INCLUDE COPIES AND BACKUPS参数,RMAN将删除恢复目录中的备份记录。

生成备份文件目录:

RMAN>catalog start with 'd:/oracle/product/10.2.0/flash_recovery_area';

RMAN> DELETE BACKUPSET; # deletes all backups

RMAN> DELETE COPY; # delete all image copies (including archived logs)

RMAN> DROP DATABASE; # delete all database files and unregister the database

修改备份记录的状态:

CHANGE DATAFILECOPY '/tmp/control01.ctl' UNAVAILABLE;

CHANGE COPY OF ARCHIVELOG SEQUENCE BETWEEN 1000 AND 1012 UNAVAILABLE;

CHANGE BACKUPSET 12 UNAVAILABLE;

CHANGE BACKUP OF SPFILE TAG "TAG20020208T154556" UNAVAILABLE;

CHANGE DATAFILECOPY '/tmp/system01.dbf' AVAILABLE;

CHANGE BACKUPSET 12 AVAILABLE;

CHANGE BACKUP OF SPFILE TAG "TAG20020208T154556" AVAILABLE;

修改备份记录状态使得保留冗余策略外的备份不被删除

我们可以在执行备份的时候直接指定BACKUP...KEEP来把备份文件标记为长期备份。有一点需要注意,如果使用恢复目录来存储备份记录的话,我们应该执行BACKUP...KEEP FOREVER。

我们也可以用CHANGE命令来把一个备份标记为长期备份:

CHANGE BACKUPSET 231 KEEP;

CHANGE BACKUPSET 231 NOKEEP;

CHANGE DATAFILECOPY '/tmp/system01.dbf' KEEP UNTIL 'SYSDATE+180';

维护存储库目录:

如果我们的备份文件中一部分是其他RMAN程序产生的,而我们的RMAN存储库中没有这些备份的记录,我们可以用CATALOG命令来维护我们的备份记录。

以下情况需要维护存储库的备份记录:

1、 我们利用其他命令(如系统命令等)产生了备份文件,想把这些文件加入RMAN存储库。

2、 利用备份控制文件执行恢复并且在恢复过程中改变了归档日志的路径或者格式,存储库中没有恢复需要的归档日志文件,我们必须把这些日志加入到RAMN存储库。

如果我们执行数据文件拷贝备份,没有LEVEL0备份而我们又想直接可以执行LEVEL1的增量备份,我们可以通过增加RMAN存储库的目录来实现。虽然不建议这么做,但是的确可以。

数据库版本升级,开始使用RMAN,我们可以把以前的热备份文件等加入到RMAN存储库。

给几个例子:

维护用户备份文件到存储库目录:

SQL> ALTER TABLESPACE users BEGIN BACKUP;

% cp $ORACLE_HOME/oradata/trgt/users01.dbf /tmp/users01.dbf;

SQL> ALTER TABLESPACE users END BACKUP;

RMAN> CATALOG DATAFILECOPY '/tmp/users01.dbf';

CATALOG BACKUPPIECE '/disk2/09dtq55d_1_2', '/disk2/0bdtqdou_1_1';

维护备份集到存储库目录:

CATALOG BACKUPPIECE '/disk2/09dtq55d_1_2', '/disk2/0bdtqdou_1_1';

备份集文件加入到存储库目录后可以在如下系统视图查找:

V$BACKUP_PIECE

,

V$BACKUP_SET

,

V$BACKUP_DATAFILE

,

V$BACKUP_REDOLOG

, and

V$BACKUP_SPFILE

.

维护所有备份文件到存储库目录:

RMAN> CATALOG RECOVERY AREA; # catalog all files in the recovery area

RMAN> CATALOG START WITH '+disk'; # catalog all files from an ASM disk group

RMAN> CATALOG START WITH '/fs1/datafiles/'; # catalog all files in directory

从存储库目录删除记录:

CHANGE

ARCHIVELOG

...

UNCATALOG

.

CHANGE CONTROLFILECOPY '/tmp/control01.ctl' UNCATALOG;

CHANGE DATAFILECOPY '/tmp/system01.dbf' UNCATALOG;

至此我们粗略的讲述了RMAN的基本使用和功能,文中错误和不足敬请大家批评指正,以后有机会将完成RMAN的高级应用,共同期待。

from:http://blog.csdn.net/zero_plus/article/details/6056029

继续阅读