1、ORACLE RMAN基础知识,数据库、操作系统、网络基础课程系列 编号:XXX,修订:2011年7月1日 by Leo Guan,掌握RMAN 的常见概念及基本原理学会用RMAN 进行数据库的日常备份管理学会用RMAN 进行数据库的恢复方法了解RMAN 使用中的常见问题及处理办法,课程目标,RMAN 基础知识RMAN 常用命令RMAN 备份实践RMAN 恢复实践RMAN 常见问题RMAN 相关文档,提纲,RMAN 基础知识,RMAN 定义,1、RMAN(Recovery Manager) 是 DBA 的一个重要工具,用于备份、还原和恢复 oracle 数据库;2、RMAN利用目标数据库服务进
2、程,通过必要的指令完成对目标数据库的控制文件、数据文件及归档日志文件以及SPFILE的联机备份,并实现对数据库的完全或不完全的恢复操作;,实际操作演示 什么是RMAN,RMAN 组成,服务器进程(轮询),恢复管理器(RMAN),服务器进程(rcvcat),服务器进程(默认),服务器进程(通道),服务器进程(通道),服务器进程(通道),磁带或其它介质,MML,目标数据库,Enterprise Manager,恢复目录数据库,RMAN 通道,服务器进程,服务器进程,DISK,磁带或其它介质,Channel(disk),Channel(sbt),RMAN,目标数据库,RMAN 恢复目录,目标数据库,
3、控制文件,转储恢复,备份,恢复目录数据库,恢复管理器(RMAN),RMAN 介质管理库(MML),RMAN,服务器进程,介质管理层(MML),介质管理服务器软件,带库,RMAN包,dbms_rcvcatdbms_rcvman,恢复管理器,PL/SQL,dbms_backup_restore,dbms_rcvman,dbms_rcvcat,dbms_rcvman,目标数据库控制文件,目标数据库,RMAN-恢复目录(Recovery Catalog),1、恢复目录用于记录 RMAN 使用过程中的控制信息;2、恢复目录应该经常被同步;3、尽管我们可以使用 nocatalog 方式来使用 RMAN ,
4、此时控制信息记录在目标数据库的控制文件中,但这样毕竟不安全,因为一旦目标数据库的控制文件损坏就意味着所有的 RMAN 备份失效;4、恢复目录应该建立在另外一个数据库中。,RMAN 备份方式,全备份,增量备份,RMAN-完全备份(Full Backup),全备份是指对数据文件中使用过的数据块进行备份,没有使用过的数据块是不做备份的,也就是说, RMAN 进行备份是进行压缩的。,RMAN-增量备份(Incremental Backup),1、增量备份是指备份数据文件中自从上一次同一级别的或更低级别的备份以来被修改过的数据块。与全备份相同,增量备份也进行压缩。2、增量备份虽然概念很好,备份也很简单,
5、但恢复起来却是另外一回事,不仅麻烦而且容易出错,所以实际中越来越少使用,到了 Oracle 9i 已经建议不再使用,以后版本会逐渐取消对增量备份的支持。,RMAN 备份存储方式,备份集,镜像副本,RMAN 备份集(Backup Set),1、是一次备份的集合,它包含本次备份的所有备份片,以Oracle专有的格式保存;2、用于存储备份信息的逻辑结构,并且备份集只能用RMAN命令建立和转储;3、当使用RMAN建立备份集时,备份集可以存储一个或多个文件的备份信息;,数据文件1,数据文件2,数据文件3,数据文件4,控制文件,数据文件1,数据文件2,数据文件3,数据文件4,控制文件,备份集1,备份集2,
6、备份集3,RMAN 备份片(Backup Piece),1、用于存储备份集信息的二进制文件;2、一个或多个备份片组成一个备份集;3、一个备份片对应一个OS文件;4、通常每个备份集只包含一个备份片。,备份集1(逻辑),备份片1(文件),数据文件1,数据文件4,数据文件5,备份片2(文件),备份集2(逻辑),备份片1(文件),数据文件2,数据文件3,数据文件9,磁带1,磁带2,服务器进程(通道),服务器进程(通道),RMAN 映像副本(Image Copy),1、类似于用户管理的备份;2、是单个数据文件、单个控制文件或单个归档日志的完整备份文件;3、副本尺寸与原文件尺寸完全一致;,数据文件1,控制
7、文件,归档日志,数据文件1,控制文件,归档日志,4、映像副本只能存储于磁盘,不能存储于磁带;,RMAN 备份文件命令规范,自定义部分,格式化串部分,带有%FORMAT符格式串组成,RMAN format字符串,%c:备份片的拷贝数(从1开始编号);%d:数据库名称;%D:位于该月中的天数 (DD);%M:位于该年中的月份 (MM);%F:一个基于DBID 唯一的名称,这个格式的形式为c-IIIIIIIIII-YYYYMMDD-QQ,其中IIIIIIIIII 为该数据库的DBID,YYYYMMDD 为日期,QQ 是一个1-256 的序列;%n:数据库名称,并且会在右侧用x字符进行填充,使其保持长
8、度为8;%u:是一个由备份集编号和建立时间压缩后组成的8字符名称。利用%u可以为每个备份集生成一个唯一的名称;%p:表示备份集中备份片段的编号,从1 开始编号;,RMAN format字符串,%U:是%u_%p_%c的简写形式,利用它可以为每一个备份片段(即磁盘文件)生成一个唯一名称,这是最常用的命名方式;%s:备份集的号;%t:备份集时间戳;%T:年月日格式(YYYYMMDD);注:如果在BACKUP命令中没有指定FORMAT选项,则RMAN默认使用%U为备份片段命名。,RMAN 用户接口,1、COMMAND LINE方式2、GUI方式(图形接口,集成在OEM的备份管理器中)3、API方式,
9、用于集成到第三方的备份软件中,RMAN 特点,备份量数据库必须处于MOUNT或OPEN状态;备份数据库、表空间、数据文件、控制文件、归档日志和SPFILE,不能备份重做日志文件、PFILE和口令文件;可以存储频繁执行的备份和恢复操作;跳过未使用的块;执行增量块级备份;指定备份限制;在备份时检测损坏块;自动使用并行化特征提高备份和恢复性能;,RMAN 常用命令,连接到RMAN,目标数据库,RMAN,备份数据库,Catalog database,Control file,Control file,不使用恢复目录,使用恢复目录,RMAN常用命令,Targetdatabase,REPORTLIST,E
10、nterprise Manager,Restore/Recover/Flashback,Catalog maintenanceCROSSCHECKDELETEEXPIREDLISTCHANGE,SPFILE,Backup,Controlfile,Archivedlog files,RMAN,RMAN 的启动与退出, 启动RMAN:在命令行提示下输入RMAN 连接目标数据库 RMAN CONNECT TARGET sysexample; RMANCONNECT TARGET sys/mypass myoracle;或直接 C:RMAN TARGET system/managermyoracle,
11、1. 启动RMAN的步骤如下:,2. 退出RMAN:,在RMAN提示符下执行EXIT命令或QUIT即可退出RMAN。 RMANEXIT;,RMAN 的备份相关命令,1、独立命令RMANshutdown immediateRMANstartupRMANbackup format d:backup%d_%s.bak tablespace users;2、作业命令RMANrun backup format d:backup$d_%s.bak tablespace users; 3、运行SQL命令RMANsql alter system switch logfile ;4、运行存储脚本 RMANrun
12、 execute script s1;5、运行RMAN命令c:rman target sys/oracleTEST nocatalog c:bak_users.cmd log a.log bak_users.cmd示例: backup format d:backup%d_%s.bak tablespace users; sql alter system archive log current ;,RMAN 的备份相关命令,1、完全数据库备份集1)、一致性备份(适用于NOARCHIVELOG和ARCHIVELOG模式) c:rman target sys/oracleTEST nocatalog
13、 RMANshutdown immediate RMANstartup mout RMANbackup database; 如果备份到别的目录backup database format =d:backup%d_%s.dbf ; RMANsql alter system archive log current ;2)、非一致性备份(在OPEN状态) RMANbackup database; 如果备份到别的目录backup database format =d:backup%d_%s.dbf ; RMANsql alter system archive log current ;3)、免除表空间
14、 RMANconfigure exclude for tablespace user03; RMANbackup database; 如果备份到别的目录backup database format =d:backup%d_%s.dbf ; RMANsql alter system archive log current ;,RMAN 的备份相关命令,2、表空间备份集RMANbackup tablespace users format=d:backup%N_%f_%s.dbf ;3、数据文件备份集RMANbackup datafile 5 format=d:backup%N_%f_%s.dbf
15、;4、控制文件备份集RMANbackup current controlfile format=d:backup%d_%s.ctl ;5、SPFILE备份集RMANbackup spfile format=c:%d_%s.par;6、归档日志备份集(过去一天所生成的归档日志)RMANbackup format=c:%d_%s.arc archivelog from time=sysdate-1 until time=sysdate; 7、并行化备份集RMANconfigure device type disk parallelism 3 ;RMANbackup database format=
16、c:%d_%s.dbf;RMANconfigure device type disk clear;,RMAN 的备份相关命令,8、建立多重备份RMANbackup copied 3 tablespace users format=c:1%N_%s.dbf,c:2%N_%s.dbf,c:3%N_%s.dbf ; 9、备份备份集RMANbackup backupset 32 format=c:%d_%s.bak;10、建立多个备份片RMANconfigure channel device type sbt maxpiecesize 4G;RMANbackup device type sbt for
17、mat %d_%s_%p.dbf database;11、建立压缩备份集RMANbackup as compressed backupset tablespace users format=c:%d_%s.dbf; 12、备份数据文件和归档日志 RMANbackup format c:%d_%s.bak tablespace users plus archivelog ; 13、指定备份集标记RMANbackup format=c:%d_%s.bak tablespace users tag=users ;,RMAN 的恢复相关命令,archivelog模式下的完全恢复:step1:set o
18、racle_sid=recoverrman target rman_backup/passwordconfigure controlfile autobackup on;step2:backup database plus archivelog delete input;step3:shutdown immediate;step4:重命名所有的数据文件和控制文件,不重命名联机重做日志。step5: startup nomount;set DBID=*restore controlfile from autobackup; alter database mount;step6: restore
19、database;recover database;alter database open resetlogs;,RMAN 的恢复相关命令,表空间恢复sqlalter tablespace users offline;sqlalter tablespace tools offline;restore tablespace users,tools;recover tablespace users,tools;sqlalter tablespace users online;sqlalter tablespace tools online;数据文件恢复sqlalter database dataf
20、ile 3 offline;sqlalter database datafile d:oracleoradatausers01.dbf offline;restore datafile 3restore datafile d:oracleoradatausers01.dbf;recover datafile 3recover datafile d:oracleoradatausers01.dbf;sqlalter database datafile 3 online;sqlalter database datafile d:oracleoradatausers01.dbfonline;,RMA
21、N 的高级恢复命令,1 基于时间点的恢复runset until time to_date(07/01/02 15:00:00,mm/dd/yy hh24:mi:ss)restore database;recover database;alter database open resetlogs; 2 基于SCN 的恢复startup mount;restore database UNTIL SCN 10000;recover database UNTIL SCN 10000;alter database open resetlogs;3 基于日志序列的恢复startup mount;resto
22、re database UNTIL SEQUENCE 100 thread 1;recover database UNTIL SEQUENCE 100 thread 1;alter database open resetlogs;,RMAN 的管理相关命令,1 列出对应物 RMANlist incarnation;2 列出备份2.1 概述可用的备份:RMANlist backup summary; B 表示 backup F 表示 FULL A 表示 archive log 0 1 表示 incremental backup S 说明备份状态 (AAVAILABLEX EXPIRED )2.2
23、 按备份类型列出备份: RMANlist backup by file;2.3 列出详细备份RMANlist backup;2.4 列出过期备份RMANlist expired backup;2.5 列出表空间和数据文件备份list backup of tablespace 和list backup of datafile 输出和list backup 相似如:list backup of tablespace user_tbs; list backup of datafile 3;2.6 列出归档日志备份RMANlist archivelog all; (简要信息)RMANlist back
24、up of archivelog all;(详细信息)2.7 列出控制文件和服务器参数文件RMANlist backup of controlfile;RMANlist backup of spfile;,RMAN 的管理相关命令,RMAN 的 report命令:1. 报告最近没有被备份的数据文件RMANreport need backup days=3;2. 报告备份冗余RMANreport need backup redundancy=2;3. 报告数据文件的不可恢复操作RMANreport unrecoverable;4. 报告数据库模式RMANreport schema;5. 报告丢弃
25、的备份如果使用了保存策略,备份会标记为丢弃状态 RMANreport obsolete; 删除丢弃状态备份RMANdelete obsolete;,RMAN 的管理相关命令,RMAN的crosscheck 命令:1 备份集有两种状态A(Available,RMAN认为该项存在于备份介质上)X(Expired,备份存在于控制文件或恢复目录中,但是并没有物理存在于备份介质上)2 crosscheck 的目的是检查RMAN 的目录以及物理文件,如果物理文件不存在于介质上,将标记为Expired。如果物理文件存在,将维持Available。如果原先标记为Expired 的备份集再次存在于备份介质上(如
26、恢复了损坏的磁盘驱动器后),crosscheck将把状态重新从Expired标记回Available。3 crosscheck 输出分两部分。第一部分列出确定存在于备份介质上的所有备份集片,第二部分列出不存在于备份介质上的备份集片,并将其标记为Expired。当设置备份保 存策略后,一个备份过期,crosscheck之后标记为丢弃的备份状态依旧为availabel,要删除丢弃备份delete obsolete。4 示例:crosscheck backupcrosscheck backup of datafile 1;crosscheck backup of tablespace users;c
27、rosscheck backup of controfile;crosscheck backup of controlfile;crosscheck backup tag=SAT_BACKUP;crosscheck backup completed after sysdate - 2crosscheck backup completed between sysdate - 5 and sysdate -2 crosscheck backup device type sbt;crosscheck archivelog all;crosscheck archivelog like %ARC0001
28、2.001crosscheck archivelog from sequence 12;crosscheck archivelog until sequence 522;,RMAN 的管理相关命令,RMAN的crosscheck 命令:使用delete expired archivelog all 命令删除所有过期归档日志RMAN 的validate 命令1 validate 命令验证备份集片是否能够被还原2 list backup summary; 得到了备份集得主键ID如40,然后validate backupset 40;RMAN 的备份保存策略以及change ,delete命令0.带
29、delete参数的change 命令删除备份集,从备份介质,并且从控制文件和恢复目录中删除。change backupset 117,118 delete;change backuppiece 1304 delete;change archivelog until logseq =544 delete;更详细内容见注释,RMAN 备份实践,RMAN 归档模式的变更,Oracle 归档与非归档模式的转换:查询更改注意事项:自动归档归档日志路径的设置和空间的管理,RMAN 的备份,在归档模式下的备份(推荐):1、备份整个数据库2、备份一个或多个表空间3、完全备份、增量备份4、备份归档日志5、备份中
30、的常见选项(备份片、备份集名称、加密、压缩等)在非归档模式下的备份,RMAN 恢复实践,完全恢复不完全恢复,RMAN 常见的几种恢复方式,Oracle 启动状态的切换:状态查询状态变更:nomount、mount、open 及其含义Shutdown 命令的使用;注意事项:切换前的沟通,RMAN 的恢复,Oracle 数据库的恢复:控制文件丢失或错误;数据文件物理损坏;表空间逻辑删除;逻辑错误;日志文件错误;参数文件、网络配置文件出错;注意事项:恢复前的冷备份,至关重要;,RMAN 的恢复,RMAN 常见问题,RMAN 常见问题,RMAN-00552: syntax error in comma
31、nd line arguments,RMAN-00555: target database connect string must be specified,RMAN-00569: = ERROR MESSAGE STACK FOLLOWS =,RMAN-00600: internal error, arguments string string string string string,RMAN中出现问题,一般会和ORA-的错误ID一起出现,而解决问题的关键点就在于分析ORA-错误。,RMAN 相关文档,RMAN 相关文档,http:/ GuideBackup and Recovery Us
32、ers Guide Backup and Recovery Reference Advanced Replication Management API ReferenceRMAN相关错误查询:http:/ 常见的备份与恢复方式有哪些?各有什么优缺点?2、RMAN基于恢复目录管理和基于控制文件管理的两种方式的优缺点?爱数备份软件是采用哪种方式进行备份与恢复管理的?3、什么是参照物( incarnation ),它在RMAN的备份恢复中起什么作用?4、当做过不完全恢复后,之前的备份数据会失效,通过什么方式,可以让这部分数据再次有效?5、做过不完全恢复后,要求立即对数据库做一次完全备份,为什么?做一次完全恢复后,也需要这样吗?,