RMAN概述与参数讲解
第六章:RMAN概述
- 6.1 rman的定义和功能:
- Recovery Manager
2)建立备份和恢复的server process,在oracle server上做备份和恢复
3)rman 备份datafile(分三个层次:database、tablespace、datafile)、controlfile、spfile、archivelog
4)在归档模式下支持一致性备份(冷备)和非一致性备份(热备)
5)非归档只支持一致性备份(mount冷备)
*考点:
1)非归档方式的RMAN只能冷备,并在mount下做,但手工备份在mount下cp出来的备份对于RMAN是不可用的。
2)非归档方式的RMAN恢复只能还原最后一次备份。
- 6.2 rman的优点:
1)不备份数据文件中从未使用的块(备份高水位线以下的block),节省时间空间(考点)
- 备份时自动检查数据文件是否有坏块,并可以标记坏块,跳过坏块,因为RMAN是ORACLE BLOCK级备份技术
- 对于undo表空间仅仅备份其一小部分空间(不备份commit数据) ,不备份临时表空间
- 可以实现增量备份
- 支持多通道并行工作
6)可以备份ASM文件
- 6.3 rman的架构:
- 可连接三类数据库:
target database(备份的目标库) ,
auxiliary database(辅助库)
catalog database(目录数据库)。
- 存储设备:disk 、tape (sbt 磁带机)存放备份文件的设备
- channel :目标库和存储设备之间备份恢复通道(服务进程)默认最少启动一个channel,可同时启动多个channel并发操作。
- server process:用于备份和恢复的进程
- rman的元数据:记录备份的信息(放在目标库的controlfile 里)
- catalog database :集中管理、存放备份的元数据,还可以存储备份脚本
- MML:media manage layer 介质管理层:用于管理磁带机的库文件或驱动
6.4 rman 连接目标库方法
1)本地连接
RMAN工具和target database在同一台服务器
rman target /
2)远程连接
RMAN客户端通过ORACLE_NET连接target database 在target database 启动监听,在client配置tnsnames.ora。
6.5、查看rman的默认配置,修改rman的配置信息
1)查看rman的默认配置
RMAN> show all;
2)理解以上各行RMAN环境变量
第一行:CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
有两种保留策略:两者只能选一,互斥。(见PPT-II-47)
一个是时间策略,指定一个时间窗口,必须能恢复此时间段内任一个时刻的数据。现在时间 - 全备份点 >= 时间窗口。
一个冗余策略,规定至少有几个冗余的备份。
恢复窗口备份保存策略:
例如,假如我们指定恢复窗口是 7 天,假设今天是星期一,此前存在 3 个全备及归档日志。第一个全备是5天前生成的,第二个全备是十天前生成的,而最早一个全备是15天前备份的,
那么十天前生成的备份及之后的归档日志必须保留,而15天前的那个备份会成为废弃备份(obsolete)(见PPT-48)。
下面的命令将恢复窗口配置为7 天:
RMAN> configure retention policy to recovery window of 7 days;
冗余备份保存策略:
使用这种保存策略,RMAN 会从最新备份开始保留 N 个数据备份,其余的废弃(obsolete)。
例如,如果有三个备份,而冗余数是 2,那么最早的那个备份将被废弃。下面的命令将备份策略设置为 2:
RMAN> configure retention policy to redundancy 2;
设置NONE 可以把使备份保持策略失效,Clear 将恢复默认的保持策略
RMAN> configure retention policy to none; //RMAN此后不会将任何备份集或映像文件标记为obsolete状态。
RMAN> configure retention policy clear;
例:保证至少有一个备份能恢复到 Sysdate-5 的时间点上,之前的备份将标记为Obsolete(废弃)
RMAN> configure retention policy to recovery window of 5 days;
至少需要有三个冗余的备份存在,如果多余三个备份以上的备份将标记为冗余
RMAN> configure retention policy to redundancy 3;
第二行:CONFIGURE BACKUP OPTIMIZATION OFF; # default
设置备份优化选项 ( optimization ) 可以在配置中设置备份的优化,如:
RMAN> configure backup optimization on;
如果优化设置打开, 它只用于归档日志,只读或脱机表空间的数据文件,因为这些文件是不会变化的,备份集运行一个优化算法。跳过重复的备份文件,比如你要备份归档日志,此参数设
为on可以避免重复备份,可大大节省空间和时间。 (PPT103)
考点:备份优化选项依赖于RETENTION POLICY策略,如果启用优化,在已有足够相同文件副本的情况下(r+1),RMAN将不创建额外的文件副本。
第三行:CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
设备类型有两种,可以是磁盘(DISK),或者磁带(STB),默认为磁盘。
第四行:CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
设置控制文件自动备份 (autobackup on)
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
off: 默认情况下,在备份system 表空间时,会备份控制文件和spfile
on: 在做任何文件的备份时,会自动备份控制文件和spfile,并且数据库的物理结构发生变化时,也自动备份controlfile。
第五行:CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
可以用如下的配置指定控制文件的备份路径与格式,format 指明备份文件的路径和文件名
RMAN备份文件格式 备份文件可以自定义各种各样的格式,如下:
%c 备份片的拷贝数
%D 位于该月中的第几天 (DD)
%M 位于该年中的第几月 (MM)
%F 一个基于DBID 唯一的名称,这个格式的形式为c-IIIIIIIIII-YYYYMMDD-QQ,其中IIIIIIIIII 为该数据库的DBID,YYYYMMDD 为日期,QQ 是一个1-256 的序列
%d 数据库名称
%n 数据库名称,向右填补到最大八个字符
%u 一个八个字符的名称代表备份集与创建时间
%p 该备份集中的备份片号,从1 开始到创建的文件数
%U 一个唯一的文件名,代表%u_%p_%c
%s 备份集的号
%t 备份集时间戳
%T 年月日格式(YYYYMMDD)
第六行:CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO BACKUPSET;
指定在以后的备份与恢复操作中并行度为2,即同时开启2个通道进行备份与恢复
并行的数目决定了开启通道的个数,当然也可以在RUN{}中指定通道来决定备份与恢复的并行程度。如果在RUN{}中指定了通道配置,将覆盖掉配置参数中指定的默认并行度
(考点)通常一个通道对应一个备份集。
提高RMAN性能和吞吐量,除了通道数,还可以通过一些参数控制输入数据文件数,备份集数,备份片数。
参数影响可有全局和局部两个层次,基本上分为:
PARALLELISM: 保存在RMAN存储库。
CONFIGURE CHANNEL: 更新配置,保存在RMAN存储库。
ALLOCATE CHANNEL: 限于run{},不保存。
BACKUP: 限于本次backup语句,不保存。
相关参数
FILESPERSET: 每个备份集的最大输入文件数
在BACKUP语句中描述
MAXOPENFILES: 在给定时间内可以打开的最大输入文件数量
在ALLOCATE CHANNEL或CONFIGURE CHANNEL中描述
MAXPIECESIZE: 每个通道的备份片大小 在ALLOCATE CHANNEL或CONFIGURE CHANNEL中描述
MAXSETSIZE: 限制最大备份集大小
在BACKUP语句中描述或配合参数中描述
BACKUP DURATION: 增加或减少完成备份的时间
在BACKUP语句中描述
1)在RUN{}里分配通道,可以指定备份的数据文件和通道对应关系。
例1:
RMAN> RUN {
ALLOCATE CHANNEL c1 DEVICE TYPE sbt;
ALLOCATE CHANNEL c2 DEVICE TYPE sbt;
ALLOCATE CHANNEL c3 DEVICE TYPE sbt;
BACKUP
INCREMENTAL LEVEL = 0
FORMAT '/data/df_%d_%s_%p.bak'
(DATAFILE 1,4,5 CHANNEL c1)
(DATAFILE 2,3 CHANNEL c2)
(DATAFILE 6,7 CHANNEL c3);
}
2)使用FILESPERSET参数限制备份集中的输入文件数, 指定每个备份集中一次可以包含输入文件最大数,该参数默认值为64。例2中约定每个备份集中备份8个文件。
如果数据库有20个文件,那将只生成3个备份集,得到3个备份片,虽然开了4个通道,但并行度是3,有1个通道闲置。
例2:
RMAN> RUN{
2> ALLOCATE CHANNEL t1 DEVICE TYPE sbt;
3> ALLOCATE CHANNEL t2 DEVICE TYPE sbt;
4> ALLOCATE CHANNEL t3 DEVICE TYPE sbt;
5> ALLOCATE CHANNEL t4 DEVICE TYPE sbt;
6> BACKUP DATABASE FILESPERSET 8;
}
例2中假如取消ALLOCATE CHANNEL语句,则通道数按全局变量PARALLELISM指定,假定为1,有20个文件,FILESPERSET=8该是怎样的结果:一个通道干活,8个文件组成一个备份集,
每备份集对一个备份片,完成一个备份集再接下一个备份集。串行的跑三趟。
3)使用MAXPIECESIZE参数限制备份片大小
例3:
RMAN> report schema;
RMAN>RUN{
CONFIGURE CHANNEL DEVICE TYPE DISK MAXPIECESIZE 300M;
BACKUP datafile 2 format '/u01/app/oracle/oradata/hyyk/%U.bak';
}
RMAN> show all
RMAN> list backup;
限定了最大备份片为300M,如果输出文件是500M(注意不是限制输入文件),则会在一个备份集中生成两个备份片。
如果将300换成600
RMAN>RUN{
CONFIGURE CHANNEL DEVICE TYPE DISK MAXPIECESIZE 600M;
BACKUP datafile 2 format '/u01/app/oracle/oradata/hyyk/%U.bak';
}
只能产生一个备份片
如果将
CONFIGURE CHANNEL DEVICE TYPE DISK MAXPIECESIZE 300M;
换成
ALLOCATE CHANNEL c1 DEVICE TYPE DISK MAXPIECESIZE 300M;
就是全部和局部的区别
RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK clear; //删除此变量
4)使用maxsetsize参数限制备份集大小:
例4:
RMAN> backup database maxsetsize 500m format '/u01/app/oracle/oradata/hyyk/%U.bak';
结果如何,一个通道产生了多个备份集,每个备份集对一个备份片。
注意:作为基本原则,一个备份集只能占一个通道,一个输入数据文件不能分成多个备份集,所以这里必须满足:最大输入文件size<500M.
5)使用SECTION SIZE子句设置多段备份(multisection backup)
通常一个数据文件只能占用一个通道,如果某个datafile太大,为提高备份效率,可以考虑采用多道关键字SECTION SIZE,并行化这个大文件的备份。例5中的数据文件约500M,
被分成若干file section来备份, 它启动了三个通道,每个通道备份300M的file section,但三个通道产生一个备份集,包含两个压缩后的备份片。
例5:
RMAN> RUN{
ALLOCATE CHANNEL d1 DEVICE TYPE disk;
ALLOCATE CHANNEL d2 DEVICE TYPE disk;
ALLOCATE CHANNEL d3 DEVICE TYPE disk;
BACKUP AS COMPRESSED BACKUPSET DATAFILE 2 SECTION SIZE 300M format '/u01/app/oracle/oradata/hyyk/%U.bak';
}
注意: SECTION SIZE隐含限定maxpiecesize,当maxpiecesize全局生效时不能使用SECTION SIZE。(考点)
所以,要使用SECTION SIZE,maxpiecesize只能在allocate channel中说明。(局部参数可以覆盖全局参数)
RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK clear;
第七行:CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
备份集也可以有多路复用(但映像文件不可以),最大值4,如为2就备份相同的2份(PPT-II-101),注意:TO STB和TO DISK是独立的(PPT-II-102),也就是说不能同时以DISK和TAPE多路复用(考点)。那么再问一句, 如果一定要duplex磁盘和磁带, 请使用backup backupset.单独使用RMAN命令可以覆盖这个参数
RMAN> backup copies 2 datafile 4 format '/u01/app/oracle/oradata/hyyk/%s_dbf','/u01/app/oracle/oradata/test/%s_dbf';
RMAN> list backup;
第八行:CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
归档日志的多路复用,类似数据文件多路复用
第九行:CONFIGURE MAXSETSIZE TO UNLIMITED; # default
该配置限制通道上备份集的最大尺寸,单位支持 Bytes 、KB、MB、GB,默认值是unlimited,(前面提到过)
第十行: CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
第十一行:CONFIGURE ENCRYPTION ALGORITHM ','; # default
加密,Transparent encryption 透明的加密,带钱夹,
Password encryption:不带钱夹,(PPT-II-107)
第十二行:CONFIGURE COMPRESSION ALGORITHM 'BZIP2'; # default
RMAN里的压缩也叫binary compression,这是11g新增的参数 (PPT-II-104-106), 压缩只能是针对backup set,有两种算法:'BZIP2'和
'ZLIB'.不要将RMAN的压缩和外部压缩实用程序混合在一起做(考点)。
第十三行:CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
对于归档文件,一般来说,如果你仅是单实例的话(不是Data Guard环境),全备以前的archivelog就没有什么用处了,可以删除,但很多人不习惯在这里设置参数,更愿意使用脚本删除归档文件。(见最后一章Oracle 一周备份计划)
第十四行CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/oracle/dbs/snapcf_timran11g.f'; # default
rman 控制文件RMAN存储库与catalog做全同步的时候,需要建立一个controlfile的快照,这个参数指定快照存放位置。(PPT-II-74)
6.6 rman备份的分类:
1)backupset:不备份datafile里从未使用块(HWM以上)、可以实现增量备份(可以备份到disk和tape)。如果只启用一个channel,默认会把所有备份的datafile放入到一个backupset里,并且生成一个备份片backup piece。
2)image copy(映像文件):实际上和手工cp 类似的,备份datafile所有的数据块, 不能作为增量备份的基础(即0级增量备份),只能备份到disk ,不能备份到tape,因可以省略还原步骤,恢复数据库速度快。
6.7 rman的命令格式:
1)交互式 (也叫stand alone方式)
RMAN> shutdown immediate;
RMAN> startup force mount;
RMAN> alter database open;
RMAN> sql 'alter system switch logfile';
RMAN> sql 'select * from scott.emp'; //对select 不显示结果
2)批处理方式(也叫job方式)
RMAN>run {
shutdown immediate;
startup mount;
allocate channel c1 type disk;
allocate channel c2 type disk;
backup database format '/u01/app/oracle/oradata/hyyk/%d_%s.bak';
alter database open;
}
3)基于EM方式(WEB方式)