1RMAN备份概念

来源:互联网 发布:使用nginx做负载均衡 编辑:程序博客网 时间:2024/04/30 00:06

1.备份形式

镜像复制imagecopies   实际上是把数据文件、控制文件或归档文件的复制,与用户通过操作系统命令复制实质一样。只不过直接应用操作系统的copy命令复制数据文件时,只是文件拷贝,而rman的copy则能够在复制的同时,验证数据的有效性。

备份集概述 :备份集 backupsets 通过RMAN创建逻辑备份对象,一个备份集中可以包含多个数据文件、控制文件或归档文件。备份集物理上由多个备份片组成,每个备份片是一个操作系统文件。

归档模式下:

在数据库OPEN、MOUNT阶段都可以备份。

非归档模式下:

只能在MOUNG状态下备份。


2.  RMAN备份命令执行方式

一.单个命令手动执行,RMAN> backupdatabase;

二.批处理方式执行run {

backup  database

format 'f:\backup\orclfullback_%d_%t_%s'

plus archivelog

format 'f:\backup\orclarch_%d_%t_%s'

delete allinput;

}

将原来单个执行的命令组合到一起,放在run{}之间,这种方式最大好处是所有在RUN中命令被视为一个作业,如果作业中任何一条命令执行失败,则整个命令停止执行。

3.将RUN{}写入一个脚本,通过在RMAN中调用脚本来进行

C:\Documents and Settings\Administrator>rman target / @f:\full_rman.sql log f:\log%date:~0,10%.log

RMAN> 2> 3> 4> 5>

RMAN> @f:\full_rman.sql 在RMAN打开后调用,不能指定日志文件。

或者做批处理.BAT或者.SH件,在此文件中调用脚本来执行。如批处理内容:

rman  target / cmdfile=f:\full_rman.sql logf:\backlog\fullback%date:~0,10%.log

4.常用备份方法:

一、对数据库进行全备,包括数据文件、控制文件、参数文件、归档日志。

RMAN> backup database;

RMAN> BACKUP DATABASE FORMAT ¨F:\BACKUP\%U¨;使用FORMAT参数指定备份片段的命令。

备份后可通过以下语句查询备份集;RMAN> list backup of database;

RMAN> listb ackupset of database;

RMAN> listb ackupset;

RMAN> list  backup;

二、备份表空间   只要实例启动并加载数据库,就可能对表空间进行备份。

RMAN> backup  tablespace users;

RMAN> list  backup of tablespace users;

三、备份指定数据文件

 BYS|love>select  file_id,file_name,tablespace_name from dba_data_files; 查询数据文件及对应的表空间

RMAN> backup datafile 4; 备份FILE_ID为4的数据文件,我这里是USERS01.DBF文件

RMAN> list backup of datafile 4;显示指定数据文件的信息

 

四、备份控制文件

方法一:开启自动备份 RMAN> show controlfile autobackup;

 

db_unique_name 为 ORCL 的数据库的 RMAN 配置参数为:

CONFIGURE CONTROLFILE AUTOBACKUP ON;

可以使用CONFIGURECONTROLFILE AUTOBACKUP ON|OFF;  来更改

自动备份控制文件打开后,备份任意表空间或数据文件时,RMAN会对控制文件自动备份。

方法二:手动执行备份命令 RMAN> backup current controlfile; 此时会在C:\app\Administrator\flash_recovery_area\orcl\BACKUPSET\2013_03_03和全局参数中指定的备份目录中各备一份? 因为开启了自动备份,所以手动备份时有两个备份,一自动一手动

方法三:执行BACKUP时指定参数RMAN> backup database includecurrent controlfile;

五、备份归档日志文件

方法一:手动执行命令:

RMAN> crosscheck archivelog all;

RMAN> backup archivelog all;

RMAN> list backup of archivelog all;

或如下:

run{

backup archivelog all delete input

format 'f:/backup2/arch_%d_%T_%s';

}

RMAN提供了DELETE ALL INPUT参数,加在BACKUP命令后,则会在完成备份后自动删除归档目录中已备份的归档日志。

同时可以使用FORMAT命令指定备份的归档日志的文件位置、姓名。

方法三:在BACKUP过种中使用PLUS ARCHIVELOG参数备份

RMAN> backupdatabase plus archivelog delete all input;   备份过程中执行如下过程:

运行ALTER SYSTEM ARCHIVE LOG CURRENT语句对当前redolog进行归档。

执行BACKUP ARCHIVELOG ALL命令备份所有已归档日志。

执行BACKUP命令对指定项进行备份。

再次运行ALTER SYSTEM ARCHIVE LOG CURRENT对当前redolog归档。

对新生成的尚未备份的归档文件进行备份。

 

4.增量备份

非归档模式下,数据库在干净关闭情况下才能进行一致性增量备份。如运行在归档模式下,可以在关闭状态进行,也可以在打开状态备份。

通过incrementallevel=0参数指定备份级别。如level=0的全库备份

RMAN> backup incremental level=0database;

增量备份的工作机制

  所谓增量备份,顾名思义即是每次备份仅操作那些发生了"变化"的数据块。RMAN中增量备份有两种:Differential方式和Cumulative方式。下面将分别胡扯,请看官自辨真伪。。。

  1 、差异备份Differential

  说起Differential,相当有意思,大家可以这样理解。有一家名为Differential的红社会组织,他们民主自由善良博爱为人忠 恳正直(以下省略5000个褒义形容词),总之呢,黑黑,他们会按照你与其约定的周期来向你收取保护费,因为他们的组织非常严密,(以上图为例吧)所有成 员按照0,1,2分为不同等级,0级最高就是老大。贵为老大自然身份尊崇,手底下小弟多,开销也大,所以如果0级老大亲自登门收取的话,没啥说的,甭管它什么时候来,你的家底他都要重新清点一遍,从你成立开始到现在,总共应交多少保护费,一个子儿都不能少的都要交出来。每次来都是这样。而1级成员就显的温 和多了,它每次来,只要求你将上次0级收到之后到现在应交的税款给交了就行了。甚至于如果上次也是个1级成员(与它平级)来收取的话,它也认同。当然,如果上次来收的是个2级成员,它是不承认的,好歹它也是个有身份的人,比它低级的成员打的收条它向来是不认同地。它至少要求将最后一个与它平级或级别比它要高的成员收取日期到现在应结的给它。1级成员带了头,2级成员也按这个来。

  2 、累积增量备份Cumulative

  继续白话,名为Cumulative的红社会组织相比Differential差距就比较大,虽然它们也会按照与你约定的同期来收取,但是,这家组织显然作风是属于比较凶悍的。仍然以上图为例,假设它们也按照0,1,2分为三个等级,0级老大身份尊崇,表现倒与Differential家的相 同。但级别比它低的那些小弟表现与Differential家的就相差较多。对于那些级别高于它们的成员打的收条,他们还是会认可,但是其它人,甚至与它 们平级的成员它们都不认。哪怕上次就是它来收取的,他也能翻脸不认帐。比如某个1级成员昨天来时就直接从上次0级收取的时间开始算的,而今天来的又是这个 家伙,可它对昨天的所为都拒不认帐,坚持还要从上次0级收取的时间开始算。

  注意:这两家非0级成员都有个毛病,假如它们来收费时发现自你成立起,自家的0级老大从来都没来过,本着为老大尽心为老大尽责的高贵品格,他们都会替老大把你的家底翻个底朝天,来个大清算。

  现在,大家对它们两家都有所了解了吧。另外backup命令在不显式指定的情况下,默认会选择Differential地哟:)

 

5.冗余备份实质是生成备份集同时,向指定位置生成指定份数,最多不超过四份。

三种方法实现Duplexed冗余备份:

方法一:RMAN> backup copies 3 database;   在全库备份时,自动生成当前备份集的2份拷贝到默认备份目录。

方法二:在RUN{}命令块中利用SET BACKUP COPIES命令为该命令块中所有的BACKUP命令设置Duplexed方式,例如:

RMAN>  RUN{

2>SET BACKUP COPIES 2;

3>BACKUP DEVICE TYPE DISK FORMAT ¨D:\BACKUP1\%U¨,¨D:\BACKUP2\%U¨ 

4>TABLESPACE USERS,SALES;

5>}

  上述命令将生成两份备份集,分别存储到d:\backup1和d:\backup2目录。

方法三:通过CONFIGURE ..... BACKUP COPIES命令设置预定义的备份Duplexed方式。

  CONFIGURE ... BACKUP COPIES 命令可以为指定的设备类型设置默认的备份拷贝数量。这个配置仅适用于数据文件与归档重做日志文件和备份,并且,只有在使用自动分配的通道时才能够使用 CONFIGURE ... BACKUP COPIES命令设置的配置。例如:

RMAN> CONFIGURE DEFAULT DEVICE TYPE TO DISK;

RMAN> CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE disk TO 2;

RMAN>  CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE disk TO 2;

  上述命令将disk设置上数据文件与归档文件的拷备数量设置为2,当再执行BACKUP DATABASE备份时,即会自动生成2份数据文件的备份集。

5.      RMAN通道

1 、手工分配通道

在执行BACKUP、RESTORE、DELETE等需要进行磁盘I/O操作的命令时,可以将它们与ALLOCATE CHANNEL命令放在一个RUN的命令块中,利用ALLOCATE CHANNEL为它们分配通道。例如:

RUN{

ALLOCATE CHANNEL CH1 DEVICE TYPE DISK FORMAT ¨d:/backup/%U¨;

BACKUP DATAFILE ¨F:\ORAHOME1\ORADATA\JSSWEB\JWEB.ORA¨;

}

需要注意的是,RMAN中执行的每一条BACKUP、DELETE等命令都至少要求使用一个通道,通道数决定了这些操作执行的并行度。

2 、自动分配通道

如果没有使用手工分配通道,那么RMAN在执行BACKUP等操作I/O的命令时将会使用预定义配置(configure,记起来了吧)中的设置来自动分配通道。

下列预定义配置命令均可以分配通道:

  • CONFIGURE DEVICE TYPE ... PARALLELISM
  • CONFIGURE DEFAULT DEVICE TYPE
  • CONFIGURE CHANNEL DEVICE TYPE
  • CONFIGURE CHANNEL n DEVICE TYPE

 

6.RMAN恢复目录(CATALOG)

  Oracle9i版本因为控制文件的自动备份,可以很大程度不需要使用恢复目录。当然,号称使用目录数据库控制文件的方式将会非常的不安全,因为一旦备份文件丢失,不仅数据库崩溃,rman备份信息也将丢失(就个人使用而言,我觉着没有这么严重,9i中的控制文件备份就已经多种多样,而且恢复及重建方式也有许多,所以假如您在没有使用恢复目录的情况下丢失了控制文件,千万表以为就此玩完,准备摸脚走人。Google一下rman 控制文件 恢复,您会发现无数个能够挽救您饭碗的页面存在),如果能用恢复目录还是推荐使用恢复目录,恢复目录实际上也是一个数据库,一般独立于目标数据库。因为它自己就是个数据库,所以一个恢复目录可以同时被多个目录数据库使用。网上搜了一些特点如下:

· 有些命令只被恢复目录支持(找着不少,大家自己gg吧,这里就不一一介绍了,要不然俺这就不像在做笔记,倒像是在写高级参考大全,o对了还有,控制文件方式中无法直接存储rman备份脚本)

· 能保留更多的历史备份信息

· 一个恢复目录能管理与备份多个目标数据库

· 如果没有恢复目录,而且发生了结构上的改变,时间点的恢复需要小心操作

· 能存储备份与恢复的脚本

可以看到,主要是可以保留更多的备份信息与方便的管理多个目标数据库,这个在众多目标数据库的情况下,绝对是强烈推荐的,能省很多事儿。

同样,如果您选择使用恢复目录方式,千万表忘了对恢复目录数据库做备份哟,当然这个库您就不用再使用rman做备份了,呵呵:),exp是个好法子,简单又方便,反正rman的恢复目录数据库也占不了什么空间。而且通过exp备份之后,一旦恢复目录数据库发生故障,也可能很轻易的通过imp进行恢复。