一、FORMAT字符串替代变量
使用FORMAT参数时可使用的各种替换变量,如下:
%c :备份片的拷贝数(从1开始编号);
%D :位于该月中的天数(DD);
%M :位于该年中的月份(MM);
%F :一个基于DBID唯一的名称,这个格式的形式为c-IIIIIIIIII-YYYYMMDD-QQ,其中IIIIIIIIII为该数据库的DBID,YYYYMMDD为日期,QQ是一个1-256的序列;
%n :数据库名称,并且会在右侧用x字符进行填充,使其保持长度为8;
%u :是一个由备份集编号和建立时间压缩后组成的8字符名称。利用%u可以为每个备份集生成一个唯一的名称;
%p :表示备份集中备份片段的编号,从1开始编号;
%U :是%u_%p_%c的简写形式,利用它可以为每一个备份片段(即磁盘文件)生成一个唯一名称,这是最常用的命名方式;
%s :备份集的号;
%t :备份集时间戳;
%T :年月日格式(YYYYMMDD);s
注:如果在BACKUP命令中没有指定FORMAT选项,则RMAN默认使用%U为备份片段命名。
二、CONFIGURE配置项介绍
首先,我们先来查看一下当前配置,通过SHOW ALL命令:
连接到目标数据库:JSSWEB(DBID=3391142503)
RMAN> showall ; 正在使用目标数据库控制文件替代恢复目录 RMAN 配置参数为: CONFIGURERETENTIONPOLICYTORECOVERYWINDOWOF3DAYS; CONFIGUREBACKUPOPTIMIZATIONOFF;#default CONFIGUREDEFAULTDEVICETYPETODISK;#default CONFIGURECONTROLFILEAUTOBACKUPON; CONFIGURECONTROLFILEAUTOBACKUPFORMATFORDEVICETYPEDISKTO¨d:/backup/%F¨; CONFIGUREDEVICETYPEDISKPARALLELISM1;#default CONFIGUREDATAFILEBACKUPCOPIESFORDEVICETYPEDISKTO1;#default CONFIGUREARCHIVELOGBACKUPCOPIESFORDEVICETYPEDISKTO1;#default CONFIGUREMAXSETSIZETOUNLIMITED;#default CONFIGURESNAPSHOTCONTROLFILENAMETO¨F:\ORAHOME1\DATABASE\SNCFJSSWEB.ORA¨;# default RMAN>
Show 命令在RMAN命令篇简单介绍过,同时我们也已经知道后跟#default表示该条配置仍然是初始的默认配置,如果我们想把某条更改过的配置再置为初始应该怎么办呢,很简单,用如下命令: CONFIGURE...CLEAR ; 例如:
RMAN> CONFIGURERETENTIONPOLICYCLEAR ; 旧的RMAN配置参数: CONFIGURERETENTIONPOLICYTORECOVERYWINDOWOF3DAYS; RMAN 配置参数已成功重置为默认值
上述的各项配置,我们在前面章节中有一些已经有所体现,下面我们再逐条过一遍。
1 、 CONFIGURERETENTIONPOLICY 配置备份保留策略
第4章节我们详细讲过关于备份保留策略,也知道了它有两种保留策略:
基于时间:
CONFIGURERETENTIONPOLICYTORECOVERYWINDOWOF n DAYS;
基于冗余数量:
CONFIGURERETENTIONPOLICYTOREDUNDANCY n ;
也可以取消备份保留策略:
CONFIGURERETENTIONPOLICYTONONE;
2 、 CONFIGUREBACKUPOPTIMIZATION 配置备份优化
打开备份优化:
CONFIGUREBACKUPOPTIMIZATIONON;
关闭备份优化:
CONFIGUREBACKUPOPTIMIZATIONO FF ;
3 、 CONFIGUREDEFAULTDEVICETYPE 配置IO设备类型
RMAN 支持的IO设备类型有两种:磁盘(DISK)和磁带(SBT),默认情况下为磁盘。
使用磁盘设备:
CONFIGUREDEFAULTDEVICETYPETODISK;
使用磁带设置:
CONFIGUREDEFAULTDEVICETYPETOSBT;
在这里需要注意的一点是:如果IO设备发生变化,相关配置项也需要修改。例如:
RMAN>CONFIGUREDEVICETYPE DISK PARALLELISM2;
4 、 CONFIGURECONTROLFILEAUTOBACKUP 配置控制文件自动备份
是否自动备份,包含两个状态:OFF和ON
打开自动备份
CONFIGURECONTROLFILEAUTOBACKUP ON
CONFIGURECONTROLFILEAUTOBACKUP OFF
同时可以通过如下配置指定备份的控制格式,路径。例如:
CONFIGURECONTROLFILEAUTOBACKUPFORMATFORDEVICE TYPEDISKTO¨d:/backup/%F¨;
在备份期间,将产生一个控制文件的快照,用于控制文件的读一致性,这个快照可以通过如下配置:
CONFIGURESNAPSHOTCONTROLFILENAMETO¨ D:/BACKUP/ SNCFJSSWEB.ORA¨;
5 、 CONFIGUREDEVICETYPE 设置并行备份
RMAN 支持并行备份与恢复,也可以在配置中指定默认的并行程度。例如:
CONFIGUREDEVICETYPEDISKPARALLELISM2;
指定在以后的备份与恢复中,将采用并行度为2,同时开启2个通道进行备份与恢复,当然也可以在run中指定通道来决定备份与恢复的并行程度。
并行的数目决定了开启通道的个数。如果指定了通道配置,将采用指定的通道,如果没有指定通道,将采用默认通道配置。有点儿绕是吧,我来给你白话一把。
默认情况下,自动分配通道的并行度为1,如果你通过设置PARALLELISM设置了并行通道为2,那么在run块中,如果你没有单独通过ALLOCATECHANNEL命令指定通道,它会默认使用2条并行通道,如果你在run命令块中指定了数个ALLOCATECHANNEL,那么rman在执行备份命令时会以你设置的channel为准,而不管configure中配置了多少个并行通道。需要注意的一点是,在backup命令中有一个FILESPERSET参数,该参数是指rman建立的每个备份集中所能包含的备份片段(即磁盘文件)的最大数,该参数默认值为64,如果在执行backup命令时没有指定该参数值,那么rman会仅使用第一个通道来执行备份,其它通道将处于空闲状态。关于通道数与FILESPERSET值之间也有一个大小关系,逻辑稍显复杂这些就不多废话了,总之一条,filesperset值不要小于你设定的通道数。
6 、 CONFIGUREDATAFILEBACKUPCOPIES 设置备份文件冗余度
4 章也讲过,应该也还有印象吧,不记的了就赶紧回去翻翻。
7 、 CONFIGUREMAXSETSIZE 配置备份集的最大尺寸
该配置限制通道上备份集的最大尺寸。单位支持bytes,K,M,G。默认值是unlimited。相信应该也不会有什么人改它吧,我花了整整20秒时间思考,然后确认,我应该用不着它,OK,跳过。
三、RMAN备份相关的动态性能表
- V$ARCHIVED_LOG :本视图包含了所有归档重做日志文件的创建情况,备份情况以及其他信息。
- V$BACKUP_CORRUPTION :这个视图显示了RMAN在哪些备份集中发现了损坏的数据坏。在你使用BACKUPVALIDATE命令对备份集进行检查时如果发现了损坏的数据块,RMAN将在这个视图中写入记录。
- V$COPY_CORRUPTIO :本视图显示了哪些镜像复制备份文件已经被损坏。
- V$BACKUP_DATAFILE :本视图通常用来获取每个数据文件中非空白数据块的数量,从而帮助你创建出大小基本相等的备份集。另外,在视图中也包含了数据文件中损坏的数据块的信息。
- V$BACKUP_REDOLOG :本视图显示了在现有的备份集中饮食有哪些归档重做日志文件。
- V$BACKUP_SET :本视图显示了已经创建的备份集的信息。
- V$BACKUP_PIECE :本视图显示了已经创建的备份片段的信息。
可以通过如下sql语句获得正在进行的镜像复制操作的状态信息:
Select sid,serial#,context,sofar,totalwork,round(sofar/totalwork* 100,2 )"%Complete" From v$session_longops where opname like ¨RMAN:%¨ and opname not like ¨RMAN:aggregate%¨
通过如下sql获得rman用来完成备份操作的服务进程的SID与SPID信息:
Select sid,spid,client_info from v$processp,v$sessions where p.addr=s.paddr and client_info like ¨%id=rman%¨
四、RMAN通道
在RMAN中可以通过手动方式或自动方式分配通道。
1 、手工分配通道
在执行BACKUP、RESTORE、DELETE等需要进行磁盘I/O操作的命令时,可以将它们与ALLOCATECHANNEL命令放在一个RUN的命令块中,利用ALLOCATECHANNEL为它们分配通道。例如:
RUN{ ALLOCATECHANNELCH1DEVICETYPEDISKFORMAT¨d:/backup/%U¨; BACKUPDATAFILE¨F:\ORAHOME1\ORADATA\JSSWEB\JWEB.ORA¨; }
需要注意的是,RMAN中执行的每一条BACKUP、DELETE等命令都至少要求使用一个通道,通道数决定了这些操作执行的并行度。
2 、自动分配通道
如果没有使用手工分配通道,那么RMAN在执行BACKUP等操作I/O的命令时将会使用预定义配置(configure,记起来了吧)中的设置来自动分配通道。
下列预定义配置命令均可以分配通道:
-
- CONFIGUREDEVICETYPE...PARALLELISM
- CONFIGUREDEFAULTDEVICETYPE
- CONFIGURECHANNELDEVICETYPE
- CONFIGURECHANNELnDEVICETYPE
五、RMAN备份类型
利用RMAN进行备份时,可以通过三种方式来对RMAN的备份做分类
全备与增备是针对数据文件而言,控制文件和归档日志文件不能进行增量备份。当然,后两者可以做备份优化。
数据库打开状态下进行备份即是打开备份,数据库关闭状态下(加载状态)进行的备份即关闭备份。
数据库打开状态或不干净关闭状态(shutdownabort)进行的备份是不一致备份,利用不一致的备份修复数据库后还需要做数据库的恢复。在数据库干净关闭状态进行的备份是一致备份,利用一致备份修复数据库后不需要做数据库的恢复。
- 完全备份(FullBackup)与增量备份(IncrementalBackup)
- 打开备份(OpenBackup)或关闭备份(ClosedBackup)
- 一致备份(ConsistentBackup)与不一致备份(InconsistentBackup)
六、增量备份的工作机制
所谓增量备份,顾名思义即是每次备份仅操作那些发生了"变化"的数据块。RMAN中增量备份有两种:Differential方式和Cumulative方式。下面将分别胡扯,请看官自辨真伪。。。
1 、差异备份Differential
说起Differential,相当有意思,大家可以这样理解。有一家名为Differential的红社会组织,他们民主自由善良博爱为人忠恳正直(以下省略5000个褒义形容词),总之呢,黑黑,他们会按照你与其约定的周期来向你收取保护费,因为他们的组织非常严密,(以上图为例吧)所有成员按照0,1,2分为不同等级,0级最高就是老大。贵为老大自然身份尊崇,手底下小弟多,开销也大,所以如果0级老大亲自登门收取的话,没啥说的,甭管它什么时候来,你的家底他都要重新清点一遍,从你成立开始到现在,总共应交多少保护费,一个子儿都不能少的都要交出来。每次来都是这样。而1级成员就显的温和多了,它每次来,只要求你将上次0级收到之后到现在应交的税款给交了就行了。甚至于如果上次也是个1级成员(与它平级)来收取的话,它也认同。当然,如果上次来收的是个2级成员,它是不承认的,好歹它也是个有身份的人,比它低级的成员打的收条它向来是不认同地。它至少要求将最后一个与它平级或级别比它要高的成员收取日期到现在应结的给它。1级成员带了头,2级成员也按这个来。
2 、累积增量备份Cumulative
继续白话,名为Cumulative的红社会组织相比Differential差距就比较大,虽然它们也会按照与你约定的同期来收取,但是,这家组织显然作风是属于比较凶悍的。仍然以上图为例,假设它们也按照0,2分为三个等级,0级老大身份尊崇,表现倒与Differential家的相同。但级别比它低的那些小弟表现与Differential家的就相差较多。对于那些级别高于它们的成员打的收条,他们还是会认可,但是其它人,甚至与它们平级的成员它们都不认。哪怕上次就是它来收取的,他也能翻脸不认帐。比如某个1级成员昨天来时就直接从上次0级收取的时间开始算的,而今天来的又是这个家伙,可它对昨天的所为都拒不认帐,坚持还要从上次0级收取的时间开始算。
注意:这两家非0级成员都有个毛病,假如它们来收费时发现自你成立起,自家的0级老大从来都没来过,本着为老大尽心为老大尽责的高贵品格,他们都会替老大把你的家底翻个底朝天,来个大清算。
现在,大家对它们两家都有所了解了吧。另外backup命令在不显式指定的情况下,默认会选择Differential地哟:)
七、备份集概述
备份集由RMAN创建的具有特定格式的逻辑备份对象,一个备份集中可能包含多个数据库文件(包括数据文件,控制文件和归档日志文件)。RMAN中通过BACKUP命令建立备份集。
一个备份集是由多个备份片段组成,每个备份片段即是一个物理文件。
八、RMAN恢复目录(CATALOG)
Oracle9i版本因为控制文件的自动备份,可以很大程度不需要使用恢复目录。当然,号称使用目录数据库控制文件的方式将会非常的不安全,因为一旦备份文件丢失,不仅数据库崩溃,rman备份信息也将丢失(就个人使用而言,我觉着没有这么严重,9i中的控制文件备份就已经多种多样,而且恢复及重建方式也有许多,所以假如您在没有使用恢复目录的情况下丢失了控制文件,千万表以为就此玩完,准备摸脚走人。Google一下rman控制文件恢复,您会发现无数个能够挽救您饭碗的页面存在),扯了一堆,但愿没有给像上个礼拜的俺一样的初学者造成印象上的混淆,如果能用恢复目录还是推荐使用恢复目录,恢复目录实际上也是一个数据库,一般独立于目标数据库。因为它自己就是个数据库,所以一个恢复目录可以同时被多个目录数据库使用。网上搜了一些特点如下:
· 有些命令只被恢复目录支持(找着不少,大家自己gg吧,这里就不一一介绍了,要不然俺这就不像在做笔记,倒像是在写高级参考大全,o对了还有,控制文件方式中无法直接存储rman备份脚本)
· 能保留更多的历史备份信息
· 一个恢复目录能管理与备份多个目标数据库
· 如果没有恢复目录,而且发生了结构上的改变,时间点的恢复需要小心操作
· 能存储备份与恢复的脚本
可以看到,主要是可以保留更多的备份信息与方便的管理多个目标数据库,这个在众多目标数据库的情况下,绝对是强烈推荐的,能省很多事儿。
同样,如果您选择使用恢复目录方式,千万表忘了对恢复目录数据库做备份哟,当然这个库您就不用再使用rman做备份了,呵呵:),exp是个好法子,简单又方便,反正rman的恢复目录数据库也占不了什么空间。而且通过exp备份之后,一旦恢复目录数据库发生故障,也可能很轻易的通过imp进行恢复。
原文链接:https://www.f2er.com/oracle/207832.html