RMAN的备份与恢复

1 物理备份

1.1 完全备份(full)

全备份是一个或多个数据文件中使用过的数据块的的备份。没有使用过的数据块是不被备份的,也就是说,oracle进行备份集合的压缩。
把所有有数据的数据块都备份了,包括表、view、序列都是定义,都存在数据字典,数据字典在system表空间。
只备份有数据的数据块。所以rman是块级的备份,也是物理备份。

rman全库备份只需要通过backup database;backup as compressed backupset database;即可完全备份。

1.2 差异/增量备份(differential)

1.2.1 0级备份

0级备份约等于全备,但也是有区别的,0级备份可以用于增量备份恢复的基础,而单独的全备不能用于增量备份的恢复基础
可以通过backup incremental level 0 database;backup incremental level=0 database;完成0级差异增量备份
list backupset上可以看出,全备的type是full,而0级备份的type的incr

List of Backup Sets
===================


BS Key  Type LV Size       Device Type Elapsed Time Completion Time    
------- ---- -- ---------- ----------- ------------ -------------------
1       Full    1.18G      DISK        00:00:01     2019-05-06 14:39:09
        BP Key: 1   Status: AVAILABLE  Compressed: NO  Tag: TAG20190506T143908
        Piece Name: /opt/oracle/app/rman_bak/full_20190506.bak
  List of Datafiles in backup set 1
  File LV Type Ckp SCN    Ckp Time            Name
  ---- -- ---- ---------- ------------------- ----
  1       Full 1801836    2019-05-06 14:39:08 /oracledata/oradata/nsfcdc/system01.dbf
  2       Full 1801836    2019-05-06 14:39:08 /oracledata/oradata/nsfcdc/sysaux01.dbf
  3       Full 1801836    2019-05-06 14:39:08 /oracledata/oradata/nsfcdc/undotbs01.dbf
  4       Full 1801836    2019-05-06 14:39:08 /oracledata/oradata/nsfcdc/users01.dbf
  5       Full 1801836    2019-05-06 14:39:08 /oracledata/oradata/nsfcdc/tbs01.dbf

BS Key  Type LV Size       Device Type Elapsed Time Completion Time    
------- ---- -- ---------- ----------- ------------ -------------------
2       Full    9.36M      DISK        00:00:00     2019-05-06 14:39:11
        BP Key: 2   Status: AVAILABLE  Compressed: NO  Tag: TAG20190506T143911
        Piece Name: /oracledata/fast_recovery_area/NSFCDC/autobackup/2019_05_06/o1_mf_s_1007563151_gdzonhcb_.bkp
  SPFILE Included: Modification time: 2019-05-06 08:52:43
  SPFILE db_unique_name: NSFCDC
  Control File Included: Ckp SCN: 1801843      Ckp time: 2019-05-06 14:39:11

BS Key  Type LV Size       Device Type Elapsed Time Completion Time    
------- ---- -- ---------- ----------- ------------ -------------------
5       Incr 0  1.18G      DISK        00:00:02     2019-05-06 15:17:59
        BP Key: 5   Status: AVAILABLE  Compressed: NO  Tag: TAG20190506T151757
        Piece Name: /opt/oracle/app/rman_bak/LV0_05u0sel5_1_1_NSFCDC_1007565477_5_1.bak
  List of Datafiles in backup set 5
  File LV Type Ckp SCN    Ckp Time            Name
  ---- -- ---- ---------- ------------------- ----
  1    0  Incr 1803216    2019-05-06 15:17:57 /oracledata/oradata/nsfcdc/system01.dbf
  2    0  Incr 1803216    2019-05-06 15:17:57 /oracledata/oradata/nsfcdc/sysaux01.dbf
  3    0  Incr 1803216    2019-05-06 15:17:57 /oracledata/oradata/nsfcdc/undotbs01.dbf
  4    0  Incr 1803216    2019-05-06 15:17:57 /oracledata/oradata/nsfcdc/users01.dbf
  5    0  Incr 1803216    2019-05-06 15:17:57 /oracledata/oradata/nsfcdc/tbs01.dbf

BS Key  Type LV Size       Device Type Elapsed Time Completion Time    
------- ---- -- ---------- ----------- ------------ -------------------
6       Full    9.36M      DISK        00:00:00     2019-05-06 15:18:00
        BP Key: 6   Status: AVAILABLE  Compressed: NO  Tag: TAG20190506T151800
        Piece Name: /oracledata/fast_recovery_area/NSFCDC/autobackup/2019_05_06/o1_mf_s_1007565480_gdzqx8mw_.bkp
  SPFILE Included: Modification time: 2019-05-06 08:52:43
  SPFILE db_unique_name: NSFCDC
  Control File Included: Ckp SCN: 1803223      Ckp time: 2019-05-06 15:18:00
1.2.2 差异增量1级备份

1=差异增量 上次全备或LV1至今的增量(无论是否有,有N次LV2的备份,一律从上次lv1或0至今的变化)0/1 ~ NOW

1.2.3 差异增量2级备份

2=累积增量 上次任意级别备份至今的增量(任意一次备份至今)0/1/2 ~ NOW
在这里插入图片描述

1.3 累积备份(cumulative)

  • 0=全备
  • 1=上次全备至今的增量(无论是否有,有N次LV1的备份,一律律从全备至今的变化)
    0 ~ NOW
  • 2=上次0或1级别备份至今的增量(2次LV2间的累积,也汇总备份至今)0/1~ NOW
    (differential下的LV1)

一定要找到比现在级别高的,备份的重复率更高,以空间换效率
在这里插入图片描述

1.4 备份脚本

# 简化版:
run{
sql 'alter system switch logfile';
backup database format '/oracledata/rman_bak/hot_bak/%d_%s_%p_hot.bak';
}
# 连归档一块备份版:
run{
sql 'alter system switch logfile';			# 归档模式下,一般备份前要手动切换一下归档
allocate channel c1 type disk;
allocate channel c2 type disk;
backup database format '/oracledata/rman_bak/hot_bak/%d_%s_%p_hot.bak'
include current controlfile plus archivelog delete input format '/oracledata/rman_bak/hot_bak/arch_%U.bak';
}


# 差异增量备份:
# 0级增量:
backup incremental level 0 database;
# 1级增量:
backup incremental level 1 database;

# 累积增量备份:
# 0级增量:
backup incremental level 0 cumulative database; 
# 1级增量:
backup incremental level 1 cumulative database;

2 rman备份恢复

顾名思义,完全恢复就是指数据没有丢失的恢复了。不完全恢复是指恢复后有部分数据丢失。它们是数据库的两种恢复方式。

  • 完全恢复:利用重做日志或增量备份将数据块恢复到最接近当前时间的时间点。之所以叫做完整恢复是由于Oracle应用了归档日志和联机重做日志中所有的修改。
  • 不完全恢复:利用备份产生一个非当前版本的数据库。换句话说,恢复过程中不会应用备份产生后生成的所有的重做日志。

通常在下列情况下生成整个数据库的不完全恢复
● 介质失败损坏了几个或全部的联机重做日志文件;
● 用户操作造成的数据丢失,比如,用户误删除了一张表;
● 由于个别归档日志文件的丢失无法进行完整的恢复;
● 丢失了当前的控制文件,必须使用备份的控制文件打开数据库。
为了执行不完整介质恢复,必须使用恢复时间点以前的备份来还原数据文件,并在恢复完成后使用RESETLOG选项打开数据库。

  • resetlogs参数
    在不完全恢复期间,通常需要使用resetlogs命令打开数据库,这是因为我们要从已经建立的现有重做日志流中脱离出来。resetlogs参数表示一个数据库逻辑生存期的结束了另一个数据库逻辑生存期的开始。数据库的逻辑生存期也称为一个对应物(incarnation)。每次使用resetlogs命令时,SCN计数器不会被重置,但是Oracle会重置其他计数器(如日志序列号),同时还会重置联机重做日志的内容。

    经过测试,当在非归档模式下尝试执行完全恢复时,发出alter database open 后,RMAN会报如下错误:

SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

但是如果加上resetlogs,就不会报错了。而且从恢复的过程来看,期间确实使用在联机日志文档,也就是说它执行的是完全恢复。这说明在非归档模式下执行完全恢复后,打开数据库时也要重置重做日志。其实这也很好想,非归档模式下,没有归档的重作日志,完全恢复时使用联机日志后,这些联机日志文件就没什么用了,因此Oracle就重置日志文件序列号(个人觉得:理论上来说,是可以不重置的,日志文件的序号直接在现有的日志序号上增加,但是这样日志序号会越来越大。Oracle应该是考虑到这一点就在非归档模式下执行完全恢复和不完全恢复时都重置了重做日志)。

2.1 完全恢复

完全恢复很简单,不多说,如下:

$ rman target /                       # 登录rman工具
RMAN> startup mount           # 必须为mount状态,才能restore 和 recover 数据库
RMAN> restore database;     # 复制旧数据文件覆盖损坏的数据文件
RMAN> recover database;    # 数据文件头SCN号同步当前日志中最后一个SCN号【完全恢复】
RMAN> alter database open [resetlogs];    # 打开数据文件
# 如果是归档模式下执行完全恢复不需要resetlogs

2.2 不完全恢复

不完全恢复有一个核心要领需要牢记:不完全恢复影响的是整个数据库,不能只对数据库的一部分执行不完全恢复。不完全恢复使用的方法通常有:基于时间、SCN、日志序列、还原点或基于删除的恢复

$ rman target /  
RMAN> startup mount
RMAN>run
     2> {
     3> set until time "to_date('07/01/2015 15:00:00', 'mm/dd/yyyy hh24:mi:ss')";
     4> restore database;
     5> recover database;
     6> alter database open;
     7> }

从执行过程来看,不完全恢复就是加了一个限制条件,时间/SCN等。如上基于时间点的恢复,Oracle会查找目标恢复时间之前并与恢复时间最近的备份集。如果没有找到可用的备份集,就会报错

在restore recover命令中还直接使用until time 、until scn 、 until sequence参数

2.2.1 基于时间点

这种方法避免使用run代码块,建议使用这种方法 【必须启动到mount状态,才能restore 和 recover 数据库】

startup mount;
restore database until time "to_date('2019-04-04 19:13:50','yyyy-mm-dd hh24:mi:ss')";
recover database until time "to_date('2019-04-04 19:13:50','yyyy-mm-dd hh24:mi:ss')";
alter database open resetlogs;                   # resetlogs只在“不完全恢复”之后才有效,不完全恢复必须加resetlogs/noresetlogs选项打开数据,重置归档日志序列号从1开始

注:该命令可将数据库恢复到指定时间点状态,但必须具备此时间点之前最后的有效备份,和所有相关归档日志。

2.2.2 基于scn号
startup mount;
restore database until scn 10000;
recover database until scn 10000;
alter database open resetlogs;                   # resetlogs只在“不完全恢复”之后才有效,不完全恢复必须加resetlogs/noresetlogs选项打开数据,重置归档日志序列号从1开始

注:该命令可将数据库恢复到指定的scn号的状态,但不包括此scn号。

2.2.3 基于归档日志序列号
startup mount;
restore database until sequence 123 thread 1;
recover database until sequence 123 thread 1;
alter database open resetlogs;                   # resetlogs只在“不完全恢复”之后才有效,不完全恢复必须加resetlogs/noresetlogs选项打开数据,重置归档日志序列号从1开始

注:该命令可将数据库恢复到指定归档日志序列号的状态,如果归档日志列表存在断点使用这中方法恢复比较方便,断点意味着我们只能恢复到断点的开始点

2.2.4 基于cancel
startup mount;
recover database until cancel;                                    
alter database open resetlogs;  

如果在open下直接restore database ,会报如下错误

channel ORA_DISK_1: reading from backup piece /home/oracle/backup/DB_0fn7d50b # 备份块,此备份块就是最后一次的备份来恢复,在catalog库中自动找【前提必须连接到catalog】

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 04/04/2012 12:03:18
ORA-19870: error reading backup piece /home/oracle/backup/DB_0fn7d50b  # 错误读取备份块
ORA-19573: cannot obtain exclusive enqueue for datafile 4              # 不能包括独占数据文件4队列  

小结:一般“实例恢复”采用完全恢复的多,“介质恢复”采用不完全恢复的多。

3 restore和recover

在Oracle的备份与恢复的知识点中,经常会出现Restore 和 Recovery两个词。
由于这两个词在字典中的解释很接近,困扰了我很久。直到我在Oracle的官方文档中看到了以下解释。
Restoration:A corrupted data file is overwritten from a backup of the data file .The data file is at a prior point of time than the
current database.
Recovery:Recovery applies the changes to the individual blocks,using archive and redo information,to move the database
forward to the current point in time.
从原理上解释,Restore是使用备份文件,将数据库还原到过去的某个状态。
Recovery是使用redo日志和归档日志将数据库向前恢复,一步步的恢复到现在这个时点。
举个例子。:
某生产环境的数据库,每天凌晨一点会作一次备份。某天下午两点时数据库文件损害,同时数据库宕机。
接着DBA开始恢复数据库。
1.首先,使用最近一次的备份文件还原数据库到当天凌晨一点的状态。但是凌晨一点到下午两点的数据丢失了。
2.接着,使用redo日志和归档日志,把当天凌晨一点开始的数据库操作重做一遍,直到下午两点数据库宕机前。
这样数据库就一点都不差的被恢复起来了。

Oracle rman中recover和restore的区别:
restore just copy the physical file, recover will consistent the database.

restore 是还原,文件级的恢复。就是物理文件还原。
recover 是恢复,数据级的恢复。逻辑上恢复,比如应用归档日志、重做日志,全部同步,保持一致。

用我自己的土话讲就是,用restore先把备份文件拷贝到数据库目录下进行替换,再用recover经过一些处理,数据库就恢复正常了。

3.1 restore

restore 命令:用于还原已经备份的数据文件。
(1)restore database还原所有的数据文件。
(2)restore tablespace 还原特定表空间的数据文件。
(3)restore datafile 还原特定的数据文件。
(4)restore controlfile 还原控制文件。
(5)restore archivelog 还原归档日志文件。

3.2 recover

recover 命令:当数据库需要应用归档日志文件恢复数据文件时,使用recover命令。使用该命令数据库系统会自动应用归档的日志文件。
(1)recover database 恢复所有的数据文件。
(2)recover tablespace 恢复特定表空间的数据文件。
(3)recover datafile 恢复特定的数据文件。
(4) recover database using backup controlfile
如果丢失controlfile的时候,使用备份的控制文件。Oracle需要把数据恢复到比当前controlfile所纪录的SCN还要靠后的位置(比如说:control file是backup controlfile,或者controlfile是根据trace create的。),这时候,就需要用using backup controlfile。 恢复就不会受“当前controlfile所纪录的SCN”的限制。只是想告诉数据库,我这个controlfile是旧的,这个时候数据库就会不断应用归档日志,它也不知道哪一个是最后的归档和当前日志,需要限制就通过语句(until time , until scn),或者可用的archive log(until cancel)。
(5) recover database until cancel
如果丢失current/active redo的时候。手动指定终点。
(6)recover database using backup controlfile until cancel;
如果 丢失当前controlfile并且current/active redo都丢失,会先去自动 应用归档日志,可以实现最大的恢复;
(7) recover database until cancel using backup controlfile;
如果丢失的是当前controlfile并且current/active redo都丢失,会以旧的redo中的scn为恢复终点。因为没有应用归档日志,所以会丢失数据。
(8)recover database;
在普通的recover database或者recovertablespace, recover datafile时,Oracle会以当前controlfile所纪录的SCN为准,利用archive log和redo log的redo entry,把相关的datafile的block恢复到“当前controlfile所纪录的SCN”

4 Rman 命令详解

4.1 list常用命令总结备忘

list命令列出控制文件、RMAN恢复目录中备份信息, 是我们对所有可见的数据库备份文件的一个最直观的了解的方法

list incarnation;
list backup summary;
list backup of database summary;
list backup of tablespace summary;
list backup of datafile n,n summary;
list archivelog all summary;

list backup by file;
list backup;
list expired backup;
list copy;

list backup of spfile;
list backup of controlfile;
list backup datafile n,n,n;
list backup tablespace tablespace_name;
list backup of archivelog all;
list backup of archivelog from scn ...;
list backup of archivelog until scn ...;
list backup of archivelog from sequence ..;
list backup of archivelog until time 'sysdate-10';
list backup of archivelog {all, from, high, like, logseq, low, scn, sequence, time, until};
4.1.1 List 当前RMAN所备份的数据库
 RMAN> list incarnation;

汇总查询:–如果备份文件多的话多用这两个list命令可以对备份文件有个总体了解。
1.list backup summary;
–概述可用的备份

B 表示backup
A 表示Archivelog、 F 表示full backup、 0,1,2 表示incremental level备份
A 表示可用AVALIABLE、 X 表示EXPIRED

RMAN> list backup summary;


List of Backups
===============
Key     TY LV S Device Type Completion Time     #Pieces #Copies Compressed Tag
------- -- -- - ----------- ------------------- ------- ------- ---------- ---
5       B  0  A DISK        2019-05-06 15:17:59 1       1       NO         TAG20190506T151757
7       B  1  A DISK        2019-05-06 15:20:14 1       1       YES        TAG20190506T152013
8       B  F  A DISK        2019-05-06 15:20:15 1       1       NO         TAG20190506T152015
9       B  F  A DISK        2019-05-07 13:36:38 1       1       NO         TAG20190507T133637
10      B  F  A DISK        2019-05-07 13:36:38 1       1       NO         TAG20190507T133637
11      B  F  A DISK        2019-05-07 13:36:41 1       1       NO         TAG20190507T133637
12      B  F  A DISK        2019-05-07 13:36:42 1       1       NO         TAG20190507T133642
13      B  A  A DISK        2019-05-07 13:45:45 1       1       NO         TAG20190507T134545
14      B  A  A DISK        2019-05-07 13:45:45 1       1       NO         TAG20190507T134545
15      B  F  A DISK        2019-05-07 13:45:46 1       1       NO         TAG20190507T134546
16      B  F  A DISK        2019-05-07 14:52:42 1       1       NO         TAG20190507T145241
17      B  F  A DISK        2019-05-07 14:52:44 1       1       NO         TAG20190507T145244
18      B  A  A DISK        2019-05-08 03:00:03 1       1       NO         TAG20190508T030002
19      B  A  A DISK        2019-05-08 03:00:03 1       1       NO         TAG20190508T030002
20      B  A  A DISK        2019-05-08 03:00:04 1       1       NO         TAG20190508T030002
21      B  F  A DISK        2019-05-08 03:00:05 1       1       NO         TAG20190508T030005

这个命令可以派生出很多类似命令,例如

list backup of database summary
list backup of archivelog all summary
list backup of tablespace users summary;
list backup of datafile n,n,n summary

这些命令可以让我们对已有的备份文件有一个整体,直观的了解。

2.list backup by file;
–按照文件类型分别列出
分别为:数据文件列表、归档日志列表、控制文件列表、SPFILE列表

3.list backup;
这个命令列出已有备份集的详细信息。

4.list expired backup;
列出过期的备份文件

5.list copy;
列出copy文件(列出备份的映像副本信息)

list copy of database;
list copy of controlfile;
list copy of tablespace users;
list copy of datafile n,n,n;
list copy of archivelog all;
list copy of archivelog from scn 10000;
list copy of archivelog until sequence 12;
4.1.2 List 相关文件的信息
list backup of {archivelog, controlfile, database, datafile, spfile, tablespace};
list backup of database; --full,incremental,tablespace,datafile

1.服务器参数文件:
list backup of spfile;
2.控制文件:
list backup of controlfile;
3.数据文件:
list backup of datafle n,n,n,n;
4.表空间:
list backup of tablespace tablespace_name; --表空间对应的backup
5.归档日志:

list backup of archivelog {all, from, high, like, logseq, low, scn, sequence, time, until};
list backup of archivelog all;
list backup of archivelog until time 'sysdate-1';
list backup of archivelog from sequence 10;
list backup of archivelog until sequence 10;
list backup of archivelog from scn 10000;
list backup of archivelog until scn 200000;

list archivelog from scn 1000;
list archivelog until scn 2000;
list archivelog from sequence 10;
list archivelog until sequence 12;

4.2 report常用命令总结备忘

report用于判断数据库当前可恢复状态、以及数据库已有备份的信息。
最常使用的是report obsolete; report schema;

report {device, need, obsolete, schema, unrecoverable}

report schema;

report obsolete;
report unrecoverable;
report need backup;
report need backup days=3; --报告最近3天内没有备份的文件
report need backup redundancy=3; --报告冗余次数小于3的数据文件。
report need backup recovery window of 2 days;

1.report schema;
报告数据库模式
2.report obsolete;
报告已丢弃的备份集(配置了保留策略)。
3.report unrecoverable;
报告当前数据库中不可恢复的数据文件(即没有这个数据文件的备份、或者该数据文件的备份已经过期)
4.report need backup;
报告需要备份的数据文件(根据条件不同)

report need backup days=3;
–最近三天没有备份的数据文件(如果出问题的话,这些数据文件将需要最近3天的归档日志才能恢复)

report need backup incremental=3;
–需要多少个增量备份文件才能恢复的数据文件。(如果出问题,这些数据文件将需要3个增量备份才能恢复)

report need backup redundancy=3;
–报告出冗余次数小于3的数据文件
–例如数据文件中包含2个数据文件system01.dbf和users01.dbf.
–在3次或都3次以上备份中都包含system01.dbf这个数据文件,而users01.dbf则小于3次
–那么,报告出来的数据文件就是users01.dbf
–即,报告出数据库中冗余次数小于 n 的数据文件

report need backup recovery window of 2 days;
–报告出恢复需要2天归档日志的数据文件

4.3 backup常用命令总结备忘

1.设置备份标记
backup database tag='full_bak1';
注:每个标记必须唯一,相同的标记可以用于多个备份只还原最新的备份。
2.设置备份集大小(一次备份的所有结果为一个备份集,要注意备份集大小)
backup database maxsetsize=100m tag='datafile1';
注:maxsetsize限定备份集的大小。所以必须大于数据库总数据文件的大小,否则会报错。

RMAN-06183: datafile or datafile copy larger than MAXSETSIZE: file# 1 /data/oradata/system01.dbf

3.设置备份片大小(磁带或文件系统限制)

run {
allocate channel c1 type disk maxpicecsize 100m format '/data/backup/full_0_%U_%T';
backup database tag='full_0';
release channel c1;
}

可以在allocate子句中设定每个备份片的大小,以达到磁带或系统限制。
也可以在configure中设置备份片大小。

Configure channel device type disk maxpiecesize 100 m;
configure channel device type disk clear;

4.备份集的保存策略
backup database keep forever; --永久保留备份文件
backup database keep until time='sysdate+30'; --保存备份30天
5.重写configure exclude命令
backup databas noexclude keep forever tag='test backup';
6.检查数据库错误
backup validate database;
使用RMAN来扫描数据库的物理/逻辑错误,并不执行实际备份。
7.跳过脱机,不可存取或只读文件

backup database skip readonly;
backup database skip offline;
backup database skip inaccessible;
backup database ship readonly skip offline ship inaccessible;

8.强制备份
backup database force;

9.基于上次备份时间备份数据文件

  • 只备份添加的新数据文件
    backup database not backed up;
  • 备份"在限定时间周期内"没有被备份的数据文件
    backup database not backed up since time='sysdate-2';

10.备份操作期间检查逻辑错误

backup check logical database;
backup validate check logical database;

11.生成备份副本
backup database copies=2;

12.备份控制文件
backup database device type disk includ current controlfile;

4.4 configure常用命令总结备忘

4.4.1 显示当前的配置信息
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
NCFDBA.ORA'; # default
  • 查询RMAN设置中非默认值:
    SQL> select name,value from v$rman_configuration;
4.4.2 常用的configure选项
  • 保存策略 (retention policy)
configure retention policy to recovery window of 7 days;
configure retention policy to redundancy 5;
configure retention policy clear;
configure retention policy to none;

第一种recover window是保持所有足够的备份,可以将数据库系统恢复到最近七天内的任意时刻。任何超过最近七天的数据库备份将被标记为obsolete。
第二种redundancy 是为了保持可以恢复的最新的5份数据库备份,任何超过最新5份的备份都将被标记为redundancy。它的默认值是1份。
第三四:NONE 可以把使备份保持策略失效,Clear 将恢复默认的保持策略

一般最安全的方法是采用第二种保持策略。

  • 备份优化 backup optimization
configure backup optimization on;
configure backup optimization off;
configure backup optimization clear;

默认值为关闭,如果打开,rman将对备份的数据文件及归档等文件进行一种优化的算法。

  • 默认设备 default device type
configure default device type to disk;
configure default device type to stb;
configure default device type clear;

是指定所有I/O操作的设备类型是硬盘或者磁带,默认值是硬盘
磁带的设置是CONFIGURE DEFAULT DEVICE TYPE TO SBT;

  • 控制文件 controlfile
configure controlfile autobackup on;
configure controlfile autobackup format for device type disk to '/cfs01/backup/conf/conf_%F';
configure controlfile autobackup clear;
configrue controlfile autobackup format for device type disk clear;
configrue snapshot controlfile name to '/cfs01/backup/snapcf/scontrofile.snp';

–是配置控制文件的快照文件的存放路径和文件名,这个快照文件是在备份期间产生的,用于控制文件的读一致性。
configrue snapshot controlfile name clear;
强制数据库在备份文件或者执行改变数据库结构的命令之后将控制文件自动备份,默认值为关闭。这样可以避免控制文件和catalog丢失后,控制文件仍然可以恢复。

  • 并行数(通道数)
# device type disk|stb pallelism n;
configure device type disk|stb parallelism 2;
configure device type disk|stb clear; --用于清除上面的信道配置
configure channel device type disk format 'e/:rmanback_%U';
configure channel device type disk maxpiecesize 100m
configure channel device type disk rate 1200K
configure channel 1 device type disk format 'e/:rmanback_%U';
configure channel 2 device type disk format 'e/:rmanback_%U';
configure channel 1 device type disk maxpiecesize 100m

配置数据库设备类型的并行度。

  • 生成备份副本
# datafile|archivelog backup copies
configure datafile backup copies for device type disk|stb to 3;
configure archivelog backup copies for device type disk|stb to 3;
# 是设置数据库的归档日志的存放设备类型
configure datafile|archivelog backup copies for device type disk|stb clear
BACKUP DEVICE TYPE DISK DATABASE FORMAT '/disk1/backup/%U', '/disk2/backup/%U', '/disk3/backup/%U';
# 是配置数据库的每次备份的copy数量,oracle的每一次备份都可以有多份完全相同的拷贝。
  • 排除选项 exclude
configure exclude for tablespace 'users';
configrue exclude clear;

此命令用于将指定的表空间不备份到备份集中, 此命令对只读表空间是非常有用的。

  • 备份集大小 maxsetsize
configure maxsetsize to 1G|1000M|1000000K|unlimited;
configure maxsetsize clear;
  • 其它选项 auxiliary
CONFIGURE AUXNAME FOR DATAFILE 1 TO '/oracle/auxfiles/aux_1.f';
CONFIGURE AUXNAME FOR DATAFILE 2 TO '/oracle/auxfiles/aux_2.f';
CONFIGURE AUXNAME FOR DATAFILE 3 TO '/oracle/auxfiles/aux_3.f';
CONFIGURE AUXNAME FOR DATAFILE 4 TO '/oracle/auxfiles/aux_4.f';
   -
CONFIGURE AUXNAME FOR DATAFILE 1 CLEAR;
CONFIGURE AUXNAME FOR DATAFILE 2 CLEAR;
CONFIGURE AUXNAME FOR DATAFILE 3 CLEAR;
CONFIGURE AUXNAME FOR DATAFILE 4 CLEAR;

4.5 Rman的format格式中的%

%c 备份片的拷贝数
%d 数据库名称
%D 位于该月中的第几天 (DD)
%M 位于该年中的第几月 (MM)
%F 一个基于DBID唯一的名称,这个格式的形式为c-IIIIIIIIII-YYYYMMDD-QQ,其中IIIIIIIIII为该数据库的DBID,YYYYMMDD为
日期,QQ是一个1-256的序列
%n 数据库名称,向右填补到最大八个字符
%u 一个八个字符的名称代表备份集与创建时间
%p 该备份集中的备份片号,从1开始到创建的文件数
%U 一个唯一的文件名,代表%u_%p_%c
%s 备份集的号
%t 备份集时间戳
%T 年月日格式(YYYYMMDD)

4.6 删除备份–DELETE命令

用于删除RMAN备份记录及相应的物理文件。当使用RMAN执行备份操作时,会在RMAN资料库(RMAN Repository)中生成RMAN备份记录,默认情况下RMAN备份记录会被存放在目标数据库的控制文件中,如果配置了恢复目录(Recovery Catalog),那么该备份记录也会被存放到恢复目录中。
RMAN中的DELETE命令就是用来删除记录(某些情况下并非删除记录,而是打上删除标记),以及这些记录关联的物理备份片段。
1.删除过期备份。
使用RMAN命令执行备份操作时,RMAN会根据备份冗余策略确定备份是否过期。
RMAN> DELETE OBSOLETE;

2.删除无效备份。
首先执行CROSSCHECK命令核对备份集,如果发现备份无效(比如备份对应的数据文件损坏或丢失),RMAN会将该备份集标记为EXPIRED状态。
要删除相应的备份记录,可以执行DELETE EXPIRED BACKUP命令:
RMAN> DELETE EXPIRED BACKUP;

3.删除EXPIRED副本
RMAN> DELETE EXPIRED COPY;

4.删除特定备份集
RMAN> DELETE BACKUPSET 19;

5.删除特定备份片
RMAN> DELETE BACKUPPIECE 'd:\backup\DEMO_19.bak';

6.删除所有备份集
RMAN> DELETE BACKUP;

7.删除特定映像副本
RMAN> DELETE DATAFILE COPY 'd:\backup\DEMO_19.bak';

8.删除所有映像副本
RMAN> DELETE COPY;

9.在备份后删除输入对象

RMAN> BACKUP ARCHIVELOG ALL DELETE INPUT;  
RMAN> DELETE BACKUPSET 22 FORMAT = "d:\backup\%u.bak" DELETE INPUT; 
  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值