前面咱们已经知道了如何进入rman,以及rman的一些基本命令,相信你们定会觉着rman操做的简单,事实也确实如此,但万不要所以小视rman的强大,简单每每意味着灵活,灵活对于那些有心人则意味着主动权尽在掌握。linux
1、RMAN备份形式web
一、镜像复制(Image Copies)数据库
镜像复制实际上就是数据文件、控制文件或归档文件的复制,与用户经过操做系统命令创建的文件复制实质同样,只不过RMAN是利用目标数据库中的服务进程来完成文件复制,而用户则是用操做系统命令。因此镜像复制的方式体现不出RMAN的优点,也并不是咱们讨论的重点,你们了解一下便可。windows
二、备份集(Backup Sets)bash
备份集是经过RMAN建立的逻辑备份对象。一个备份集中能够包含多个数据文件、控制文件或归档文件。备份集在物理上是由多个备份片断组成,每一个备份片断是一个操做系统文件。spa
2、RMAN命令执行方式操作系统
在进入演练以前,你们还有必要了解运行rman命令的方式,就目前已知的状况,共有4种运行方式。日志
一、单个执行(没啥说的,以前的示例都是这种方式)code
RMAN> backup database ;
二、批处理(呵呵,跳票的补上)orm
RMAN> RUN{ ....................... ....................... }
批处理方式实质是将原来单个执行的命令组合到一块儿,并放在run{}之间,这种方式最大的好处是全部在run中的命令被视为一个做业,若是做业中任何一条命令执行失败,则整个命令中止执行,即失败命令后的其它命令都不会再被执行。这种方式是最常使用的方式,特别对于后台执行。
三、运行脚本(又能细分为几种方式以下:)
C:\> rman TARGET / @backup_db.rman RMAN> @backup_db.rman RMAN> RUN { @backup_db.rman }
运行存储在恢复目录中的脚本(须要首先为rman建立恢复目录)
RMAN> RUN { EXECUTE SCRIPT backup_whole_db };
看看,够灵活吧。
四、操做系统脚本(linux,windows环境下小有差别,但只是操做系统命令的不一样)
C:\ > rman cmdfile=backup_db.rman
明眼人看的出来,后两种实际上是前面两种加上操做系统命令的综合应用。
3、对数据库进行全备
一、使用backup database命令执行备份
RMAN> BACKUP DATABASE;
执行上述命令后将对目标数据库中的全部数据文件进行备份,因为没有显式指定FORMAT参数,rman会自动为每一个备份片断命名,并保存在ORACLE_HOME/database目录下。
固然,也能够经过显式指定format参数来自定义备份片断的命令规则,好比:
RMAN> BACKUP DATABASE FORMAT ¨D:\BACKUP\%U¨;
( 关于%U的格式说明,详细咨询度娘。)
2 、经过list命令查看刚刚建立的备份信息:
RMAN> list backup of database;
正在使用目标数据库控制文件替代恢复目录
备份集列表
=================== BS 关键字 类型 LV 大小 设备类型 通过时间 完成时间 ------- ---- -- ---------- ----------- ------------ ---------- 11 Incr 0 827M DISK 00:01:30 26-6 月 -07 BP 关键字: 11 状态: AVAILABLE 标记:TAG20070629T150701 段名:D:\BACKUP\0CILGG8L_1_1 备份集 11 中的数据文件列表 文件 LV 类型 Ckp SCN Ckp 时间 名称 ---- -- ---- ---------- ---------- ---- 1 0 Incr 5233577896 26-6 月 -07 F:\ORAHOME1\ORADATA\JSSWEB\SYSTEM01.DBF 2 0 Incr 5233577896 26-6 月 -07 F:\ORAHOME1\ORADATA\JSSWEB\UNDOTBS01.DBF 3 0 Incr 5233577896 26-6 月 -07 F:\ORAHOME1\ORADATA\JSSWEB\DRSYS01.DBF 4 0 Incr 5233577896 26-6 月 -07 F:\ORAHOME1\ORADATA\JSSWEB\EXAMPLE01.DBF 5 0 Incr 5233577896 26-6 月 -07 F:\ORAHOME1\ORADATA\JSSWEB\INDX01.DBF 6 0 Incr 5233577896 26-6 月 -07 F:\ORAHOME1\ORADATA\JSSWEB\ODM01.DBF 7 0 Incr 5233577896 26-6 月 -07 F:\ORAHOME1\ORADATA\JSSWEB\TOOLS01.DBF 8 0 Incr 5233577896 26-6 月 -07 F:\ORAHOME1\ORADATA\JSSWEB\USERS01.DBF 9 0 Incr 5233577896 26-6 月 -07 F:\ORAHOME1\ORADATA\JSSWEB\XDB01.DBF 10 0 Incr 5233577896 26-6 月 -07 F:\ORAHOME1\ORADATA\JSSWEB\JWEB.ORA;
4、备份表空间
只要实例启动并处于加载状态,不论数据库是否打开,均可以在rman中对表空间进行备份,并且不须要像手动备份那样先¨ALTER TABLESPACE ... BEGIN BACKUP¨。例如:
RMAN> backup tablespace jweb; 启动 backup 于 26 - 6 月 -07 使用通道 ORA_DISK_1 通道 ORA_DISK_1: 正在启动 full 数据文件备份集 通道 ORA_DISK_1: 正在指定备份集中的数据文件 输入数据文件 fno=00010 name=F:\ORAHOME1\ORADATA\JSSWEB\JWEB.ORA 通道 ORA_DISK_1: 正在启动段 1 于 26 - 6 月 -07 通道 ORA_DISK_1: 已完成段 1 于 26 - 6 月 -07 段 handle=F:\ORAHOME1\DATABASE\0JIM0BBV_1_1 comment=NONE 通道 ORA_DISK_1: 备份集已完成, 通过时间:00:00:15 完成 backup 于 26 - 6 月 -07 启动 Control File and SPFILE Autobackup 于 26 - 6 月 -07 段 handle=D:\BACKUP\C-3391142503-20070704-00 comment=NONE 完成 Control File and SPFILE Autobackup 于 26 - 6 月 -07
一样,咱们在使用backup tablespace也能够经过显式指定format参数自定义备份片断名称。
咱们再经过LIST BACKUP 查看一下备份:
RMAN> LIST BACKUP OF TABLESPACE JWEB ;
发现有两份备份片断,复习一下上一章的内容,删除其中一个备份(删除的方法很是多,下例使用删除backupset,有心的朋友不妨本身尝试一下经过其它方式删除指定备份片断)。
RMAN> DELETE BACKUPSET 18 ;
5、备份指定数据文件
首先能够先经过数据字典DBA_DATA_FILES查询出表空间对应的数据文件及其序号,例如:
SQL> select file_name,file_id,tablespace_name from dba_data_files
而后再经过BACKUP DATAFILE 备份指定序号的数据文件,例如:
RMAN> BACKUP DATAFILE n;
若是要查看指定数据文件的备份,能够用:
RMAN> LIST BACKUP OF DATAFILE n;
注:n=指定的的数据文件序号,若是须要备份的数据文件有多个,n=多个序号,中间以逗号分隔便可。
6、备份控制文件
控制文件在ORACLE中的重要性是毋庸置疑的,你看,连RMAN都给予特殊的照顾,在RMAN中备份控制文件的方式是最多的。
1. 最简单的方式,经过CONFIGURE命令将CONTROLFILE AUTOBACKUP置为ON。
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
而后你再经过rman作任何备份操做的同时,都会自动对控制文件作备份。
2. 在自动备份打开的状况下,备份任意表空间操做时,RMAN均会自动对控制文件作备份。
3. 手动执行备份命令。
RMAN> BACKUP CURRENT CONTROLFILE;
4. 执行BACKUP时指定INCLUDE CURRENT CONTROLFILE参数,例如:
RMAN> BACKUP DATABASE INCLUDE CURRENT CONTROLFILE;
若是要查看备份的控制文件,能够经过:
RMAN> LIST BACKUP OF CONTROLFILE;
7、备份归档日志文件
归档日志对于数据库介质恢复至关关键,其虽然不像控制文件那样一旦损坏则数据库立刻崩溃但重要性丝绝不减。归档日志文件能确保咱们将数据库恢复到备份以前的任意时刻。在RMAN中备份归档日志有两种方式:
1 、利用BACKUP ARCHIVELOG命令备份
RMAN> BACKUP ARCHIVELOG ALL;
2 、在BACKUP过程当中利用PLUS ARCHIVELOG参数备份,例如:
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;
则在备份数据库的同时自动对全部归档文件进行备份。这种方式与上种有什么区别呢,区别太明显了,BACKUP.....PLUS ARCHIVELOG命令在备份过程当中会依次执行下列步骤:
1>. 运行ALTER SYSTEM ARCHIVE LOG CURRENT语句对当前redolog进行归档。
2>. 执行BACKUP ARCHIVELOG ALL命令备份全部已归档日志。
3>. 执行BACKUP命令对指定项进行备份。
4>. 再次运行ALTER SYSTEM ARCHIVE LOG CURRENT对当前redolog归档。
5>. 对新生成的还没有备份的归档文件进行备份。
在完成归档日志文件备份后,咱们经过须要删除已备份过的归档文件(归档文件记录下了数据库进行过的全部操做,若是您的数据库操做频繁并且量大,那归档文件大小也是至关恐怖,备份后删除释放存储空间是至关有必要地)。RMAN提供了DELETE ALL INPUT参数,加在BACKUP命令后,则会在完成备份后自动删除归档目录中已备份的归档日志。
完成备份以后,能够经过下列命令查看已备份的归档日志片断:
RMAN> LIST BACKUP OF ARCHIVELOG ALL;
综述:上述示例中出现的命令格式较多,但细细看来是否能发现些格式上的规律?好比查看备份基本都是LIST BACKUP OF备份项名称,若是想自定义片断的话则在备份命令后加上FORMAT参数(后三项没有列举加format参的示例,你们千万表觉得是不能够哟,俺都说乐rman是超灵活地泥,你们必定要多多尝试,反正执行的是备份操做不是删除,又搞不坏目标数据库,你还有啥可担忧的泥)。