千家信息网

RMAN概述与参数讲解

发表于:2024-11-22 作者:千家信息网编辑
千家信息网最后更新 2024年11月22日,第六章:RMAN概述6.1 rman的定义和功能:Recovery Manager2)建立备份和恢复的server process,在oracle server上做备份和恢复3)rman 备份data
千家信息网最后更新 2024年11月22日RMAN概述与参数讲解

第六章:RMAN概述


  • 6.1 rman的定义和功能:


  1. 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),节省时间空间(考点)


  1. 备份时自动检查数据文件是否有坏块,并可以标记坏块,跳过坏块,因为RMAN是ORACLE BLOCK级备份技术


  1. 对于undo表空间仅仅备份其一小部分空间(不备份commit数据) ,不备份临时表空间
  1. 可以实现增量备份


  2. 支持多通道并行工作


6)可以备份ASM文件


  • 6.3 rman的架构:


  1. 可连接三类数据库:

    target database(备份的目标库) ,

    auxiliary database(辅助库)

    catalog database(目录数据库)。


  2. 存储设备:disk 、tape (sbt 磁带机)存放备份文件的设备


  1. channel :目标库和存储设备之间备份恢复通道(服务进程)默认最少启动一个channel,可同时启动多个channel并发操作。


  1. server process:用于备份和恢复的进程


  1. rman的元数据:记录备份的信息(放在目标库的controlfile 里)


  1. catalog database :集中管理、存放备份的元数据,还可以存储备份脚本


  1. 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方式)

0