第三章 RMAN 备份详解.docx
《第三章 RMAN 备份详解.docx》由会员分享,可在线阅读,更多相关《第三章 RMAN 备份详解.docx(28页珍藏版)》请在冰豆网上搜索。
第三章RMAN备份详解
RMAN备份详解
--======================
--RMAN备份详解
--======================
一、数据库备份与RMAN备份的概念
1.数据库完全备份:
按归档模式分为归档和非归档
归档模式
打开状态,属于非一致性备份
关闭状态,可以分为一致性和非一致性
非归档模式
打开状态,非一致性备份无效
关闭状态,一致性备份,非一致性备份不被推荐
2.RMAN备份
RMAN使用服务器会话来完成备份操作,从RMAN客户端连接到服务器将产生一个服务器会话
RMAN备份内容包括:
整个数据库,表空间,数据文件,指定的数据文件,控制文件,归档日志文件,参数文件等
3.RMAN备份的类型
完整备份(full)或增量备份(incremental)
一致性备份(consistent)或不一致性备份(inconsistent)
热备(open)或冷备(closed),冷备时数据库必须处于mount状态,冷备可以为一致性备份或非一致性备份
完整备份
一个或多个数据文件的一个完整副本,包含从备份开始处所有的数据块.完整备份不能作为增量的基础
增量备份
包含从最近一次备份以来被修改或添加的数据块.可以分为差异增量备份和累计增量备份
差异增量备份仅仅包含n级或n级以下被修改过的数据块。
备份数据量小,恢复时间长。
累计增量备份仅仅包含n-1级或n-1级以下被修改过的数据块。
备份数据量大,恢复时间短。
0级增量备份相当于一个完整备份,该备份包含所有已用的数据块文件,与完整备份的差异是完整备份不能用作级增量备份的基础
一致性备份
备份所包含的各个文件中的所有修改都具备相同的系统变化编号(systemchangenumber,SCN)。
也就是说,备份所包含的各个文件中的所有数据均来自同一时间点。
一致性数据库完全备份(consis-tentwholedatabasebackup)进行还原(restore)后,不需要执行恢复操作(recovery)
非一致性备份
在数据库处于打开(open)状态时,或数据库异常关闭(shutdownabnormally)后,对一个或多个数据
库文件进行的备份。
非一致性备份需要在还原之后进行恢复操作
4.备份集与镜像副本
备份集
是包含一个或多个数据文件,归档日志文件的二进制文件的集合.备份集由备份片组成,一个备份集中可以包含一个或多个备份片
可以通过filesperset参数来设置备份集中可包含的备份片数,
也可以设定参数maxpiecesize来制定每个备份片的大小。
备份集中空闲的数据块将不会被备份,因此备份集可以支持压缩。
备份集支持增量备份,可以备份到磁盘或磁带。
镜像副本
是数据文件或归档日志文件等的完整拷贝,未经过任何压缩等处理,不能备份到磁带,也不支持增量备份
恢复时可以立即使用实现快速恢复
等同于操作系统的复制命令
可以作为级增量备份
5.备份路径
可以备份到磁盘目录
可以备份到磁带
闪回区
6.备份限制
数据库必须处于mount或open状态
不能备份联机日志
在非归档模式下仅仅能作干净备份,即在干净关闭且启动到mount状态下备份
在归档模式下,current状态下数据文件可以备份
关于更多备份与恢复的概念请参考:
Oracle备份恢复概念
二、使用RMAN进行备份
1.备份数据库
RMAN>showall;
RMANconfigurationparametersare:
CONFIGURERETENTIONPOLICYTOREDUNDANCY1;#default
CONFIGUREBACKUPOPTIMIZATIONOFF;#default
CONFIGUREDEFAULTDEVICETYPETODISK;#default
CONFIGURECONTROLFILEAUTOBACKUPOFF;#default
CONFIGURECONTROLFILEAUTOBACKUPFORMATFORDEVICETYPEDISKTO'%F';#default
CONFIGUREDEVICETYPEDISKPARALLELISM1BACKUPTYPETOBACKUPSET;#default
CONFIGUREDATAFILEBACKUPCOPIESFORDEVICETYPEDISKTO1;#default
CONFIGUREARCHIVELOGBACKUPCOPIESFORDEVICETYPEDISKTO1;#default
CONFIGURECHANNELDEVICETYPEDISKFORMAT'/u01/app/oracle/rmanbak/df_%d_%U';
CONFIGUREMAXSETSIZETOUNLIMITED;#default
CONFIGUREENCRYPTIONFORDATABASEOFF;#default
CONFIGUREENCRYPTIONALGORITHM'AES128';#default
CONFIGUREARCHIVELOGDELETIONPOLICYTONONE;#default
CONFIGURESNAPSHOTCONTROLFILENAMETO'/u01/app/oracle/10g/dbs/snapcf_orcl.f';#defaul
RMAN>backupdatabaseformat'/u01/app/oracle/rmanbak/whole_%d_%U';--备份整个数据库
RMAN>backupascompressedbackupset--备份整个数据库并压缩备份集
2>databaseformat'/u01/app/oracle/rmanbak/whole_%d_%U';
RMAN>run{
2>allocatechannelch1typedisk--手动分配一个通道
3>maxpiecesize=2g;--指定备份片的大小为g
4>backupascompressedbackupset--压缩备份集
5>format'/u01/app/oracle/rmanbak/whole_%d_%U'filesperset=3--指定备份集中允许容纳的文件数为个
6>database;
7>releasechannelch1;}--释放通道
RMAN>configuredevicetypediskparallelism3;--将并行度改为
oldRMANconfigurationparameters:
CONFIGUREDEVICETYPEDISKPARALLELISM1BACKUPTYPETOBACKUPSET;
newRMANconfigurationparameters:
CONFIGUREDEVICETYPEDISKPARALLELISM3BACKUPTYPETOBACKUPSET;
newRMANconfigurationparametersaresuccessfullystored
RMAN>backupascompressedbackupset--并行度改为之后,自动启用了个通道
2>format'/u01/app/oracle/rmanbak/whole_%d_%U'filesperset=3
3>database;
Startingbackupat14-OCT-10
allocatedchannel:
ORA_DISK_1
channelORA_DISK_1:
sid=148devtype=DISK--sid值对应v$session视图中的sid
allocatedchannel:
ORA_DISK_2
channelORA_DISK_2:
sid=146devtype=DISK
allocatedchannel:
ORA_DISK_3
channelORA_DISK_3:
sid=144devtype=DISK
RMAN>run{
2>allocatechannelch1typedisk
3>maxpiecesize=100m;--备份片大小设置为m,则一个备份集包含多个备份片,且每个备份片大小为m
4>backup
5>format'/u01/app/oracle/rmanbak/whole_%d_%U'
6>database;
7>releasechannelch1;}
RMAN>listbackupsettag=TAG20101014T171115;
ListofBackupSets
===================
BSKeyTypeLVSizeDeviceTypeElapsedTimeCompletionTime
-------------------------------------------------------------
21Full690.30MDISK00:
01:
3914-OCT-10
ListofDatafilesinbackupset21
FileLVTypeCkpSCNCkpTimeName
----------------------------------
1Full164879114-OCT-10/u01/app/oracle/oradata/orcl/system01.dbf
2Full164879114-OCT-10/u01/app/oracle/oradata/orcl/undotbs01.dbf
3Full164879114-OCT-10/u01/app/oracle/oradata/orcl/sysaux01.dbf
4Full164879114-OCT-10/u01/app/oracle/oradata/orcl/users01.dbf
5Full164879114-OCT-10/u01/app/oracle/oradata/orcl/example01.dbf
6Full164879114-OCT-10/u01/app/oracle/oradata/orcl/tbs1.dbf
BackupSetCopy#1ofbackupset21
DeviceTypeElapsedTimeCompletionTimeCompressedTag
---------------------------------------------------
DISK00:
01:
3914-OCT-10NOTAG20101014T171115
ListofBackupPiecesforbackupset21Copy#1
BPKeyPc#StatusPieceName
-------------------------------
211AVAILABLE/u01/app/oracle/rmanbak/whole_ORCL_0nlqemtj_1_1
222AVAILABLE/u01/app/oracle/rmanbak/whole_ORCL_0nlqemtj_2_1
233AVAILABLE/u01/app/oracle/rmanbak/whole_ORCL_0nlqemtj_3_1
244AVAILABLE/u01/app/oracle/rmanbak/whole_ORCL_0nlqemtj_4_1
255AVAILABLE/u01/app/oracle/rmanbak/whole_ORCL_0nlqemtj_5_1
266AVAILABLE/u01/app/oracle/rmanbak/whole_ORCL_0nlqemtj_6_1
277AVAILABLE/u01/app/oracle/rmanbak/whole_ORCL_0nlqemtj_7_1
BSKeyTypeLVSizeDeviceTypeElapsedTimeCompletionTime
-------------------------------------------------------------
22Full6.80MDISK00:
00:
0114-OCT-10
BPKey:
28Status:
AVAILABLECompressed:
NOTag:
TAG20101014T171115
PieceName:
/u01/app/oracle/rmanbak/whole_ORCL_0olqen0s_1_1
ControlFileIncluded:
CkpSCN:
1648817Ckptime:
14-OCT-10
SPFILEIncluded:
Modificationtime:
14-OCT-10
-----------------------------------------------------------------------------------------------------------------------
2.备份数据文件
Oracle数据文件及表空间的管理请参考:
Oracle表空间与数据文件
RMAN>backupascopydatafile4--备份类型为镜像备份
2>format'/u01/app/oracle/rmanbak/df_%d_%U';
RMAN>listcopy;
RMAN>backupdatafile4,5,6format'/u01/app/oracle/rmanbak/df_%d_%U';--备份类型为备份集
-----------------------------------------------------------------------------------------------------------------------
3.备份表空间
Oracle数据文件及表空间的管理请参考:
Oracle表空间与数据文件
RMAN>backuptablespaceusers,exampleformat'/u01/app/oracle/rmanbak/tb_%d_%U';
RMAN>backuptablespacetemp;--临时表空间不需要备份
Startingbackupat14-OCT-10
usingchannelORA_DISK_1
usingchannelORA_DISK_2
RMAN-00571:
===========================================================
RMAN-00569:
===============ERRORMESSAGESTACKFOLLOWS===============
RMAN-00571:
===========================================================
RMAN-03002:
failureofbackupcommandat10/14/201018:
56:
12
RMAN-20202:
tablespacenotfoundintherecoverycatalog
RMAN-06019:
couldnottranslatetablespacename"TEMP"
-----------------------------------------------------------------------------------------------------------------------
4.备份控制文件
Oracle控制文件的详细介绍请参考:
Oracle控制文件(CONTROLFILE)
RMAN>configurecontrolfileautobackupon;--自动备份控制文件置为on状态,将自动备份控制文件和参数文件
oldRMANconfigurationparameters:
CONFIGURECONTROLFILEAUTOBACKUPOFF;
newRMANconfigurationparameters:
CONFIGURECONTROLFILEAUTOBACKUPON;
newRMANconfigurationparametersaresuccessfullystored
注:
在备份system01.dbf或system表空间时将会自动备份控制文件和参数文件,即使自动备份控制文件参数为off
--单独备份控制文件及参数文件
RMAN>backupcurrentcontrolfile;
--备份数据文件时包含控制文件
RMAN>backupdatafile4includecurrentcontrolfile;
RMAN>sql"alterdatabasebackupcontrolfileto''/tmp/orclcontrol.bak''";
sqlstatement:
alterdatabasebackupcontrolfileto''/tmp/orclcontrol.bak''
RMAN>sql"alterdatabasebackupcontrolfiletotraceas''/tmp/orclcontrol.sql''";
sqlstatement:
alterdatabasebackupcontrolfiletotraceas''/tmp/orclcontrol.sql''
--单独备份spfile
RMAN>backupspfileformat'/u01/app/oracle/rmanbak/sp_%d_%U';
RMAN>backupcopies2devicetypediskspfile;
-----------------------------------------------------------------------------------------------------------------------
5.备份归档日志文件
备份归档日志时仅仅备份归档过的数据文件(不备份联机重做日志文件)
备份归档日志时总是对归档日志做完整备份
RMAN对归档日志备份前会自动做一次日志切换,且从一组归档日志中备份未损坏的归档日志
RMAN会自动判断哪些归档日志需要进行备份
归档日志的备份集不能包含其它类型的文件
关于Oracle日志文件请参考:
Oracle联机重做日志文件(ONLINELOGFILE)
关于Oracle归档日志请参考:
Oracle归档日志
RMAN>backup
2>format'/u01/app/oracle/rmanbak/lf_%d_%U'
3>archivelogalldeleteinput;--deleteinput删除所有已经备份过的归档日志
RMAN>backup--此种写法实现了上述相同的功能
2>archivelogalldeleteinput
3>format'/u01/app/oracle/rmanbak/lf_%d_%U';
RMAN>backuparchivelogsequencebetween50and120thread1deleteinput;
RMAN>backuparchivelogfromtime"sysdate-15"untiltime"sysdate-7";
RMAN>backup
2>format'/u01/app/oracle/rmanbak/lf_%d_%U'
3>archivelogfromsequence=80
4>deleteinput;
使用plusarchivelog时备份数据库完成的动作(backupdatabaseplusarchivelog)
1.首先执行altersystemarchivelogcurrent命令(对当前日志归档)
2.执行backuparchivelogall命令(对所有归档日志进行备份)
3.执行backupdatabase命令中指定的数据文件、表空间等
4.再次执行altersystemarchivelogcurrent
5.备份在备份操作期间产生的新的归档日志
--执行下面的命令,并观察备份列出的信息,可以看到使用plusarchivelog时使用了上面描述的步骤来进行备份
RMAN>backupdatabaseplusarchivelog
2>format'/u01/app/oracle/rmanbak/lg_%d_%U'deleteinput;
6.备份闪回区
RMAN>backuprecoveryarea;
使用backuprecoveryarea时,将备份位于闪回区且未进行过备份的所有文件,这些文件包括完整、增量备份集、自动备份的