备份集(BackupSet)
rman提供的一种存储备份信息的逻辑结构。
可以存储一个或多个文件的备份信息。
备份集由一个或多个备份片组成,每个备份片对应一个OS文件。
备份集只包含数据文件已用数据块的信息,而不包含空数据块,因此更节省存储空间。
备份集不仅可以存放到磁盘,而且可以存放到磁带。
默认每个备份集只包含一个备份片。
如果将一个备份集存储到多个存储设备上,可以将备份集分为几个备份片,每个备份片分布到不同磁盘/带上。
备份片(BackupPiece)
存储备份集信息的二进制文件。
可以包含多个文件。
备份集由一个或多个备份片组成。
映像副本(ImageCopy)
类似于用户管理的备份,是单个数据文件,单个控制文件或单个归档日志的完整备份文件,会占用更多的空间。
只能备份到磁盘,不能备份到磁带。
完全数据库备份集
数据库一致性备份与非一致性备份参考基于用户管理的备份与恢复
1)一致性备份
[oracle@localhost~]$ rman target sys/oracle@oralife nocatalog
RMAN>shutdown immediate
RMAN>startup mount
RMAN>backup database format='/oracle/10g/oracle/rman/%d_%s.dbf';
2)非一致性备份
RMAN>backup database format='/oracle/10g/oracle/rman/%d_%s.dbf';
RMAN>sql 'alter system archive log current';
3)免除表空间
RMAN>configure exclude for tablespace testspc;
RMAN>backup database format='/oracle/10g/oracle/rman/%d_%s.dbf';
RMAN>sql 'alter system archive log current';
表空间备份集
只适用于archivelog模式
数据库必须处于open状态
RMAN>backup tablespace systemformat='/oracle/10g/oracle/rman/%d_%N_%s.dbf';
数据文件备份集
数据库可以处于mount或open状态
RMAN>backup datafile 5 format='/oracle/10g/oracle/rman/%d_%N_%f_%s.dbf';
控制文件备份集
备份当前控制文件
RMAN>backup current controlfileformat='/oracle/10g/oracle/rman/%d_%s.ctl';
备份数据文件1时,会自动备份当前控制文件。
备份其他数据文件时,通过指定includecurrent controlfile同时备份控制文件。
RMAN>backup datafile 5 format='/oracle/10g/oracle/rman/%d_%s.dbf'
2>include current controlfile;
spfile备份集
RMAN>backup spfile format='/oracle/10g/oracle/rman/%d_%s.par';
归档日志备份集
如备份过去一天所产生的归档日志:
RMAN>backup format='/oracle/10g/oracle/rman/%d_%s.arc'
2>archivelog from time='sysdate-1' until time='sysdate';
并行化备份集
使用configure命令或allocatechannel命令配置多个通道,如:
RMAN>configure device type disk parallelism 3;
RMAN>backup database format='/oracle/10g/oracle/%d_%s.dbf';
RMAN>configure device type disk clear;
建立多重备份
默认只会生成一个备份副本。
备份表空间system,并生成3个备份副本示例:
RMAN>backup copies 3 tablespace system
2>format='/oracle/%d_%s.dbf','/oracle/10g/%d_%s.dbf','/oracle/10g/oracle/%d_%s.dbf';'
可以存储到不同的磁盘。
备份备份集
RMAN>backup backupset 32 format='/oracle/10g/oracle/rman/%d_%s.bak';
建立多个备份片
RMAN>configure channel device type sbt maxpiecesize 4G;
RMAN>backup device type sbt format '%d_%s_%p.dbf' database; --需要指定%p匹配符
建立压缩备份集
使用ascompressed backupset选项。
能够节省存储空间,但会增加cpu开销。
RMAN>backup as compressed backupset
2>tablespace sysaux format='/oracle/10g/oracle/rman/%d_%s.dbf';
备份数据文件和归档日志
备份数据文件时可以通过指定plusarchivelog同时备份归档日志。
示例:备份表空间user及相关归档日志
RMAN>backup format '/oracle/10g/oracle/rman/%d_%s.bak'
2>tablespace user plus archivelog;
指定备份集标记
RMAN>backup format '/oracle/10g/oracle/rman/%d_%s.bak'
2>tablespace user tag='user';
<style type="text/css"> <!-- p {margin-bottom:0.08in} --> </style>
<style type="text/css"> <!-- p {margin-bottom:0.21cm} --> </style>
建立映像副本
建立数据文件映像副本
使用backupas copy或copy
RMAN>backup as copy format='/oracle/10g/oracle/rman/df_5.dbf' datafile 5;
RMAN>copy datafile 5 to '/oracle/10g/oracle/rman/df_5_.dbf';
建立控制文件映像副本
使用backupas copy或copy
RMAN>backup as copy format='/oracle/10g/oracle/rman/oralife_.ctl'
2>current controlfile;
RMAN>copy current controlfile to '/oracle/10g/oracle/rman/oralife__.ctl';
建立归档日志映像副本
SQL>set linesize 200
SQL>column name for a80
SQL>Select name, sequence#, first_change# FROM v$archived_log;
NAME SEQUENCE# FIRST_CHANGE#
------------------------------------------------------------------------------------------ -------------
/oracle/10g/oracle/log/archive_log/archive_1_21_757801926.arclog 21 735494
/oracle/10g/oracle/log/archive_log2/archive_1_21_757801926.arclog 21 735494
使用backupas copy或copy
示例备份日志序列号为88的归档日志:
RMAN>backup as copy format='/oracle/10g/oracle/rman/arc88.arc'
2>archivelog sequence 88;
RMAN>copy archivelog'/oracle/10g/oracle/log/archive_log2/archive_1_88_757801926.arclog'
2>to '/oracle/10g/oracle/rman/arc88_.arc'
3>;
并行化建立映像副本
使用backupas copy或copy
RMAN>configure device type disk parallelism 3;
RMAN>backup as copy format='/oracle/10g/oracle/rman/df_%f.dbf' datafile5,6,7;
RMAN>configure device type disk clear;
指定映像副本标记
使用backupas copy或copy
RMAN>backup as copy format='/oracle/10g/oracle/rman/df_%f_file.dbf'
2>datafile 5 tag=df_5;
RMAN>copy datafile 5 to '/oracle/10g/oracle/rman/df_%f_file5.dbf'
2>tag=df_file5;
增量备份与累积备份
增量备份:增量备份是指备份更低级别或相同级别最近一次备份以来变化的数据块,增量备份的基础是增量0级备份。
如:周日增量0级备份,周一、周二增量2级备份,周三增量一级备份,周4、周5、周六增量2级备份;
那么周日进行增量0级备份时会备份所有已用块;当周一执行增量2级备份时,会备份周一变化的所有数据块;当周二执行增量2级备份时,会备份周二变化的所有数据块;当周三执行1级增量备份时,会包含之前的所有增量2级备份,即会备份周日到周三之间变化的所有数据块。周4、周5、周六也同样如此。
要执行增量备份,backup要带有incrementallevel选项。
示例:
RMAN>backup incremental level 0 format='/oracle/10g/oracle/rman/%d_%s_inc.dbf'
2>tablespace users;
RMAN>backup incremental level 2 format='/oracle/10g/oracle/rman/%d_%s_inc.dbf'
2>tablespace users;
RMAN>backup incremental level 1 format='/oracle/10g/oracle/rman/%d_%s_inc.dbf'
2>tablespace users;
累积备份:累积备份是指备份更低级别或n-1级别最近一次备份以来变化的数据块。
增量备份可降低备份时间,但如果同一级别增量备份很多,当执行恢复时需要转储更多的备份集,这需要更多的恢复时间。
累积备份需要消耗更多时间,但在恢复时需要转储较少的备份集,可以减少恢复时间。
累积备份需要cumulative选项。
示例:在users表空间上依次执行增量0级、增量2级、累积2级、增量1级备份,
RMAN>backup incremental level 0 format='/oracle/10g/oracle/rman/%d_%s_inc.dbf'
2>tablespace users;
RMAN>backup incremental level 2 format='/oracle/10g/oracle/rman/%d_%s_inc.dbf'
2>tablespace users;
RMAN>backup incremental level 2cumulativeformat='/oracle/10g/oracle/rman/%d_%s_inc.dbf'
2>tablespace users;
RMAN>backup incremental level 1 format='/oracle/10g/oracle/rman/%d_%s_inc.dbf'
2>tablespace users;
<style type="text/css"> <!-- p {margin-bottom:0.21cm} --> </style>
显示备份信息
v$archived_log
显示归档日志信息
SQL>col name format a100
SQL>select sequence#,name,first_change# from v$archived_log
2 where status='A';
v$backup_datafile
显示控制文件和数据文件的备份信息。关联v$backup_datafile,v$backup_piece显示所有数据文件的备份片信息:
SQL>col handle format a30
SQL>select a.file#,b.handle,a.blocks*a.block_size byte
2 from v$backup_datafile a,v$backup_piece b
3 where a.set_stamp=b.set_stamp and b.status='A';
file#标识数据文件(0表示控制文件),handle用于标识备份片所对应的文件名,set_stamp用于唯一标识备份集。
v$backup_redolog
显示归档日志备份集的信息。每个归档日志备份集可以包含一个或多个归档日志。关联v$backup_piece,v$backup_redolog显示备份文件所包含的归档日志备份信息:
SQL>select distinct a.handle,b.sequence#,b.first_change#,b.blocks
2 from v$backup_piece a,v$backup_redolog b
3 where a.set_stamp=b.set_stamp and a.status='A';
handle用于标识备份片所对应的文件名,set_stamp用于唯一标识备份集,sequence#用于标识日志序列号,first_change#用于标识起始scn值。
$backup_set和v$backup_piece
$backup_set显示备份集详细信息,v$backup_piece显示备份片详细信息。关联两者显示备份集所对应的备份片信息:
SQL>select b.handle,a.backup_type,a.pieces,a.elapsed_seconds
2 from v$backup_set a,v$backup_piece b
3 where a.set_stamp=b.set_stamp and b.status='A';
handle用于标识备份片所对应的文件名,set_stamp用于唯一标识备份集,backup_type用于标识备份片类型(D:数据文件完全备份,I:数据文件增量备份,L:归档日志备份),pieces标识备份片个数,elapsed_seconds标识消耗时间。
v$backup_corruption
显示执行backup命令时所检测到的损坏数据块信息。
SQL>select file#,block#,blocks,marked_corrupt
2 from v$backup_corruption;
block#标识损坏块的起始块编号,blocks标识被损坏的连续块个数。marked_corrupt是否标记为损坏(yes,是no,否)。
v$copy_corruption
显示执行copy命令时所检测到的损坏数据块信息。
SQL>select file#,block#,blocks,marked_corrupt
2 from v$copy_corruption;