数据库 \ Oracle \ RMAN 系列(四) ---- RMAN 备份

RMAN 系列(四) ---- RMAN 备份

总点击52
简介:一.RMAN备份的一些优点 1.RMAN会检测和报告损坏的数据块。 2.不需要将表空间置入热备份模式,RMAN就可以连接备份数据库。热备份期间会额外的生成重做日志。

一.RMAN备份的一些优点

1.RMAN会检测和报告损坏的数据块。

2.不需要将表空间置入热备份模式,RMAN就可以连接备份数据库。热备份期间会额外的生成重做日志。

3.RMAN会自动跟踪新的数据文件和表空间,这样就不再需要在脚本中添加新的表空间和数据文件。

4.RMAN只备份使用过的数据库(直至最高使用标记(Highwatemark)),这样RMAN备份映像通常小于联机备份的备份脚本。

5.RMAN提供备份映像的实际压缩。

6.RMAN提供自动且方便的备份,还原和恢复操作。RMAN跟踪恢复数据库所需要的所有备份,在要求还原操作时需要使用这些备份,并且只还原必要的对象。

7.RMAN可以与第三方介质管理产品一起无缝的工作。

8.RMAN支持增量备份策略。

9.可以使用RMAN来测试备份而不要实际还原他们。

二.RMAN兼容性问题

在启动备份操作之前,需要考虑一些兼容性问题。在一个企业中,可能会运行不同的Oracle版本,因此我们在设计备份策略时必须考虑RMAN的兼容性问题。

原因可以参考:RMAN系列(一)----RMAN体系结构概述

http://www.cndba.cn/Dave/article/1165


下表是Oracle兼容性的一个参照表:

RMAN目标数据库版本

(应用补丁)

RMAN客户端版本

(应用补丁)

RMAN目录数据库版本

(应用补丁)

RMAN目录模式版本

(应用补丁)

9.0.1

9.0.1

>=8.1.7

>=RMAN客户端

9.2.0

>=9.0.1.3并且<=目录数据库可执行文件版本

>=8.1.7

>=RMAN客户端

10.1.0

>=9.0.1.3并且<=目录数据库可执行文件版本

>=9.0.1

>=RMAN客户端

10.2.0

>=9.0.1.3并且<=目录数据库可执行文件版本

>=9.0.1

>=RMAN客户端

表中的目录模式版本可以从RCVER表中查看:

SQL>connrman/rman@orcl;--用catalog用户登录

已连接。

SQL>select*fromrcver;

VERSION

------------

11.02.00.01

三.监控RMAN备份情况

RMAN在备份期间产生输出,如果在启动RMAN时启用登录,则取消该输出。可以通过查看生成的日志文件来监控RMAN操作,或者通过V$RMAN_OUTPUT视图来查看。

SQL>conn/@orclassysdba;

已连接。

SQL>selectoutputfromv$rman_outputorderbystamp;

四.脱机RMAN数据库备份

4.1使用默认的设置执行备份操作:

RMAN会有一些参数有默认值,在没有更改这些参数的情况下,我们也可以进行备份。此时备份集将会备份到闪回区中。我们可以用catalog模式或者是非catalog模式来连接RMAN。如果采用catalog模式,只需在连接的时候加上catalog参数即可。不过要注意的是,一般建议在服务器本地直接连接RMAN,然后通过网络连接来连接catalog目录。

执行脱机备份操作时,数据库必须处于mount状态。一些命令如下:

Shutdownimmediate

Startupmount

Backupdatabase

或者

Backupascompressedbackupsetdatabase--将数据库作为压缩的备份集来备份

C:/Users/Administrator.DavidDai>rmantarget'/@orclassysdba';

恢复管理器:Release11.2.0.1.0-Productionon星期一6月2123:24:472010

Copyright(c)1982,2009,Oracleand/oritsaffiliates.Allrightsreserved.

连接到目标数据库:ORCL(DBID=1247395743)

RMAN>

C:/Users/Administrator.DavidDai>rmantarget'/@orclassysdba'catalog'rman/rman@orcl';

恢复管理器:Release11.2.0.1.0-Productionon星期一6月2123:25:242010

Copyright(c)1982,Oracleand/oritsaffiliates.Allrightsreserved.

连接到目标数据库:ORCL(DBID=1247395743)

连接到恢复目录数据库

RMAN>

4.2不使用默认参数执行脱机备份操作

先来看一段脚本:

Shutdownimmediate

Startupmount

Run

{

Allocatechannelc1devicetypediskformat'D:/backup/sid_%U';

Allocatechannelc2devicetypediskformat'E:/backup/sid_%U';

Backupascompressedbackupsetdatabase;

Backupcurrentcontrolfile;

}

相关说明如下:

4.2.1将数据库启动到mount模式

在前面也说了,脱机备份,数据库必须启动到mount状态。

4.2.2运行Oracle

执行run代码块。在完整的语句块输入之前,Oracle不会运行任何语句。

4.2.3分配通道

先看一下备份集和备份片。通常情况下,每次创建一个通道时,都会创建一个或者多个备份集。

备份集(backupset):逻辑实体,我们会为每个定义的通道创建一个或多个备份集(通常为每个通道创建一个备份集)。

备份片(backuppiece):驻留备份数据的实际物理文件。每个备份集可以关联一个或多个备份片。

可以使用backup命令(或配置一个默认值)来控制整个备份集的大小,也可以使用allocatechannel命令(或在配置默认通道时配置一个默认值)来控制整个备份片的大小。

Allocatechannel命令定义给定通道(进而是一个备份集)所分配到的设备。设备可以是磁盘(typedisk),也可以是磁带驱动器(typesbt)。如果为磁带系统分配通道,可能要在这条命令中加入MML供应商所要求的特定参数设置。比如VeritasNetbackup为磁带分配通道的allocatechannel命令:

Allocatechannelt1typesbtparms='ENV=(NB_ORA_CLASS=RMAN_DB01');

执行这条命令可以为磁带分配一个通道。为备份分配完两个通道后,RMAN会在这两个通道间自动并行处理备份流。由于分配了两个通道,因此会创建两个备份集,并且每个备份集拥有一个备份片。备份片的大小按字节计算,不过也可以根据需要使用K,M或者G占位符来分来表示。如:

Allocatechannelt1typediskmaxpiecesize=100M;

在这个示例中,我们限定了通道t1通道创建备份集中每个备份片的大小不能超过100M。这样能够最好的保证所创建的单个备份片大小不会超出磁带或者文件系统的处理范围。

Allocatechannelt1typediskmaxpiecesize=100Mformat='D:/backup/sid_%U.bak';

在这个示例中,使用了format参数来定义备份片被放入磁盘的位置以及备份片的命名约定。这里的%U是格式占位符,以确保备份片名称的唯一性。

关于占位符的更多信息,参考blog:

RMAN系列(二)----RMAN设置和配置

http://www.cndba.cn/Dave/article/1161


4.2.4备份操作

在示例代码中,分配通道之后,就使用backup命令来备份数据库。执行backupdatabase命令的结果是RMAN开始使用所创建的两个通道备份数据库。

默认情况下,如果只备份数据文件,backup命令也会备份控制文件和服务器的参数文件(spfile)。在这种情况下,控制文件备份的存储位置取决于controlfileautobackup参数的设置。如果controlfileautobackup参数被设置为off,控制文件和服务器参数会被包含在数据库备份集中;如果controlfileautobackup参数被设置为on,控制文件和服务器参数文件就会生成一个独立的控制文件备份。可以在backupdatabase命令中加入includecurrentcontrolfile子句,迫使RMAN将控制文件放入数据库备份集。最好是单独备份控制文件,以确保备份的是当前的控制文件。

五.Backup命令选项

5.1压缩

默认情况下,RMAN执行NULL数据块压缩。

5.1.1NULL控制压缩

使用这种形式的压缩时,Oracle不会备份未使用的数据块。执行NULL数据块压缩的情形有一下两种情况:

(1)从未使用过的数据块不被压缩

(2)在给定的特定标准下,使用过一次的数据块也不被备份。

在第一种情况下,将不会备份其中一直没有数据的所有数据块,在第二种情况下,如果数据库和关联的数据库满足某种标准,空块将不被备份,即使它在某个时刻包含数据。下面是允许RMAN不备份这些数据块所必须满足的条件:

(1)将兼容参数设置为10.2

(2)没有为数据库定义任何有保证的还原点。

(3)本地管理数据文件

(4)备份是备份集,并且完全备份或者零级增量备份。

(5)备份集在磁盘上创建。

如果满足上述条件,Oracle将不会备份任何未使用的块,并且备份将因此占用磁盘或磁带上较少的空间。

5.1.2RMAN备份压缩

RMAN可以将压缩算法应用于备份集,从而减小RMAN创建的备份集的大小。RMAN压缩可以在很大程度上减小备份集的大小。有时,压缩可能非常有效。如在测试数据库中,当使用压缩备份时,备份集映像的大小可以减小70%。如果没有配置数据库自动压缩备份集,可以使用ascompressedbackupset参数来创建压缩备份集。如果已经配置了压缩并且不希望在给定的backup命令中使用压缩,则只需使用backupasbackupset参数即可。

5.2标记

可以为Oracle中的每个备份指派一个标记(tag)。标记可应用于完全备份,表空间备份,数据文件备份,增量备份甚至备份副本。示例如下:

Backupdatabasetag='TEST';

需要注意的是:使用了tag参数来标记这个完全备份。每个标记都应当是唯一的,如果没有指定一个命名约定,RMAN就会使用默认约定为每个备份集分配一个标记。相同的标记可以应用与多个备份,并且默认情况下只还原最新的备份。

5.3限定备份的影响

为了帮助减少RMAN备份对其他进程的整体I/0影响,RMAN提供了backup命令的duration参数。Duration参数类似与闹钟,如果备份运行时间超过指定的持续时间,RMAN将取消备份。如:

Backupduration00:30database;

注意事项:不可以使用backupdatabaseplusarchivelog命令。Duration参数也可以用来抑制备份。当定义持续时间时,可以让RMAN使以下因素之一最小化:

(1)备份运行时间

(2)备份使用的I/0负载

如果尝试最小化备份运行时间,RMAN将预先全速备份。这是默认设置。使用默认的minimizetime参数的另一个特性是,RMAN将区分备份的数据文件的优先级。最近备份的数据文件具有较低的优先级,而较早备份的数据文件具有较高的优先级。

也可以让RMAN尝试将备份的I/O操作分布到持续时间内的各个时间点上,从而消除备份对系统的整体影响。

Backupduration00:30minimizetimedatabase;

Backupduration00:30minimizetimedatabase;

使用duration参数,可以指示RMAN如何处理超出backupduration时间限制的备份。当使用partial参数时,如果备份因为超出duration参数的持续时间而终止,RMAN不会将其作为失败的备份进行处理。因此,任何run代码块中的剩余命令将继续执行。因此,如果接下来还有backup命令,例如归档的重做日志备份,使用这个参数就会很方便。无论partial参数的设置是什么,机制整个备份过程没有完成,Oracle也会将成功完成的备份集认为是可用的。

5.4限定备份集大小

Backupdatabasemaxsetsize=50mtag='TEST';

在这个示例中,我们设定备份集的大小不超过50mb。如果磁带的大小有限制,或者磁盘只能处理一定大小的数据文件,是哦那个这个参数就非常方便。Oracle将备份分成多个备份集,每个备份集都不会超出所定义的maxsetsize参数值。

但是maxsetsize参数限制了单个备份集的总大小。因此,如果备份集中的数据文件大小超过了定义的限定范围,备份操作就会失败。因此使用该参数要特别小心。

有时,也可以使用allocatechannel命令的maxpiecesize参数来完成这个操作。也可用configure命令创建备份集大小的默认限定值和备份大小的限定值。

5.5修改备份集的保存策略

我们可以使用keep参数来重写默认的保存策略。

RMAN系列(二)----RMAN设置和配置

http://www.cndba.cn/Dave/article/1161


Backupdatabasekeepforever;

Backupdatabasekeepuntiltime='sysdate+180';

在第一条语句中,会永远保存备份,第二条语句中,只保存180天。

5.6重写configureexclude命令

通过执行configureexclude命令可以配置RMAN,排除上一次备份以来没有发生变化的数据文件。如果要确保RMAN备份这些数据文件,可以在下面的backup命令中添加noexclude参数:

Backupdatabasenoexcludekeepforevertag='TEST';

5.7使用backup命令检查数据库的错误

RMAN不需要执行备份操作就可以扫描数据库的物理错误和逻辑错误。使用backup命令的validate参数可以实现这个功能。如:

Backupvalidatedatabase;

5.8跳过脱机的,不可读取的或者只读的数据文件

有时候,数据库中的数据文件可能处于Online以外的状态,如果数据文件是只读的,在备份数据库时可能不要每次都备份这些只读的数据文件。如果数据文件是脱机的或者不可存取的,假如没有执行特别的操作来指示RMAN跳过这些缺少的数据文件,RMAN备份操作就会失败。因此需要使用skip参数,使用该参数可以根据需要跳过脱机的,只读的或者不可存取的数据文件。如:

Backupdatabaseskipreadonly;

Backupdatabaseskipoffline;

Backupdatabaseskipinaccessible;

Backupdatabaseskipreadonlyskipofflineskipinaccessible;

Inaccessible参数可以使Oracle跳过不能读取的数据文件,这些文件没有实际地存在于磁盘上(如已删除或者转移位置),使用offline参数可以跳过脱机的但仍存在的数据文件。Skipreadonly参数可以使Oracle跳过只读的数据文件。也可以使用configure配置Oracle不备份只读的表空间。

5.9强制备份只读的数据文件

我们可以用configure命令来配置Oracle不备份没有发生变化的表空间。但是如果要执行一个忽略这个配置的特定备份操作,可以用force参数。

Backupdatabaseforce;

5.10基于上次备份时间来备份数据文件

Oracle允许用户在备份进程中指示只备份给定时间以来没有备份过的数据文件。如果在数据库中添加了新的数据文件,或者只想备份给定天数内发生变化的数据文件,使用Oracle的这个功能就非常方便。

5.10.1只备份添加的数据文件

假设在数据库上添加了4个新的数据文件,我们希望不备份整个数据库,而是备份这些新的数据文件。我们除了只备份单个数据文件外,还有一种更简单的方法:使用backup的netbackedup选项.如:

Backupdatabasenotbackedup;

5.10.2备份指定时间周期内没有被备份的数据文件

我们可能需要在指定的时间备份指定的数据文件。如重新启动一个失败的备份操作,使用sincetime选项也是非常方便的。如果备份操作失败,可以在排除这个故障后使用sincetime选项来重新启动这个备份操作。如:

Backupdatabasenotbackedupsinetime='sysdate-2';

这时,rman会备份最近2天内没有备份的数据文件。注意的是,我们可以用NLS_DATE格式来表示时间,也可以使使用SQL日期表达式来表示时间。

5.11在备份操作期间检查逻辑讹误

在默认情况下,RMAN会检查数据库数据块的逻辑讹误。如果发现了任何讹误。备份就会失败,这是默认情况。如果需要更多的错误检查,可以使用backup命令的checklogical选项来配置备份操作执行逻辑讹误检查。如:

Backupchecklogicaldatabase;

Backupvalidatechecklogicaldatabase;

在第一条命令中,rman会在检查逻辑讹误的同时物理备份数据库。第二条命令中,RMAN只验证数据库数据块,它只是执行逻辑数据库验证操作,而不执行实际的数据库物理备份操作。注意的是:如果要在给定的错误数内仍然继续执行备份操作,就需要先设置maxcorrupt参数值。如下所以,需要使用run代码块来设置maxcorrupt参数值:

Run{

Setmaxcorruptfordatafile1,2,3,4,5,6,7to10;

Backupvalidatechecklogicaldatabase;

}

5.12在RMAN复制设备上生成备份副本

有时,我们可能需要创建备份集片的多个副本。这可以通过配置默认的生成,也可以使用copies参数对某个备份进行配置来创建备份片的多个副本(还可以使用setbackupcopies参数来完成这个功能)。下面是一个使用copies选项生成副本的示例:

Backupdatabasecopies=2;

我们可能配置两个不同的默认通道:一个用于磁盘操作,一个用于磁带操作。使用devicetype参数可以定义启动备份操作时要使用的自动通道设备。

Backupdatabasedevicetypedisk;

Backupdatabasedevicetypedisk;

5.13备份控制文件

Includecurrentcontrolfile选项会创建当前控制文件的快照,并且会将这个快照控制文件放入使用backup命令生成的每个备份集中。如:

Backupdatabasedevicetypediskincludecurrentcontrolfile;

在默认情况下,如果备份数据文件,无论如何都会备份控制文件,因此,如果要执行表空间备份操作或者数据文件备份,使用includecurrentcontrolfile参数就非常方便。如果配置了控制文件的自动备份操作,上面的命令还会将当前的控制文件存储在备份集中。这样我们就有两个控制文件的副本。

六.Set命令介绍

使用set命令可以定义只应用于当前RMAN会话的设置。Set命令的设置不是永久的,根据实际需求,可以采用两种方式来使用set命令。

在run代码块外,我们可是执行下面的操作:

(1)使用setecho命令在消息日志中显示RMAN命令。

(2)使用setdbid命令指定一个数据库的数据库标识符(databaseidentifier:dbid)。

某些set命令只能在run代码块的限定范围内使用,常见的有:

(1)setnewname命令:用于执行表空间时间点恢复(TSPITR)或者数据库复制操作。该命令允许指定新的数据库数据文件名。将数据库移动到新的系统中并且文件系统名不同时,我们可以使用这个命令。使用setnewname命令时还需要使用switch命令。

(2)Setmaxcorruptfordatafile:使用该命令可以定义RMAN操作失败前锁允许的数据块讹误的最大数据。

(3)Setarchivelogdestination:使用该命令可以修改存储归档的重做日志的archive_log_dest_1目标。

(4)Set命令和until子句:使用set命令和set命令的until子句可以定义数据库时间点恢复操作锁使用的具体时间点,SCN或日志序列号。

(5)Setbackupcopies命令:使用该命令可以定义为备份集中的每个备份片应当创建的副本数。

(6)Setcommandid:使用该命令可以关联给定的服务器会话和给定的通道。

(7)Setcontrolfileautobackformatfordevicetype:使用该命令可以修改用于控制文件自动备份操作的默认格式。

例如:要执行一个为每个备份片创建两个副本的被操作,并且允许数据文件的最大讹误数为10.脚本如下:

Run{

Setmaxcorruptfordatafile3to10;

Stetbackupcopies=2;

Backupdatabase;

}

七.联机RMAN数据库备份

7.1联机数据库备份

要使用RMAN执行联机备份操作,数据库必须置于Archivelog模式。如果不在归档模式,则尝试联机备份时RMAN就会生成一个错误。

Oracle归档与非归档的切换

http://www.cndba.cn/Dave/article/1270


连接备份示例:

RMAN>Configuredefaultdevicetypetodisk;

RMAN>configurechannel1devicetypediskformat'F:/backup/orcl_%U.bak';

RMAN>backupdatabaseplusarchivelogtag='ORCL';

7.2表空间备份

可以简单的使用具有tablespace参数的backup命令来执行一个表空间的备份操作:

Backuptablespacedave;

如果同时要备份归档的重做日志,可以执行:

Backuptablespacedaveplusarchivelog;

我们要确保备份的是当前的控制文件:

Backuptablespaceusersincludecurrentcontrolfileplusarchivelog;

7.3数据文件备份

RMAN允许使用带有datafile参数的backup命令来备份数据文件,datafile参数后面是要备份的文件名或数据文件号。

查看数据文件号:

SQL>selectfile_id,file_namefromdba_data_files;

FILE_IDFILE_NAME

---------------------------------------------------------------

4D:/APP/ADMINISTRATOR/ORADATA/ORCL/USERS01.DBF

3D:/APP/ADMINISTRATOR/ORADATA/ORCL/UNDOTBS01.DBF

2D:/APP/ADMINISTRATOR/ORADATA/ORCL/SYSAUX01.DBF

1D:/APP/ADMINISTRATOR/ORADATA/ORCL/SYSTEM01.DBF

5D:/APP/ADMINISTRATOR/ORADATA/ORCL/DAVE0.DBF

备份:

RMAN>Backupdatafile5;

RMAN>Backupdatafile'D:/APP/ADMINISTRATOR/ORADATA/ORCL/DAVE0.DBF';

RMAN>Backupdatafile'D:/APP/ADMINISTRATOR/ORADATA/ORCL/DAVE0.DBF'plusarchivelog;

7.4归档的重做日志备份

要备份所有的归档重做日志,可以用backuparchivelogall.还可以备份指定范围内的归档的重做日志,这里有多个选项,包括时间,SCN或者重做日志序列。

Backuparchivelogall;

Backuparchivelogfromtime'sysdate-1';

Backuparchivelogfromsequence400;

一旦备份完成,就可以使用RMAN的Deleteinput选项来删除这些归档重做日志。

Backuparchivelogalldeleteinput;

Backuparchivelogfromsequence400deleteinput;

也可以指示RMAN备份归档的重做日志多个副本。在下面的示例中,我们使用具有notbackedupntimes参数的backup命令来确保至少备份3次重做日志,并且不会再次备份已经备份超过3次的归档重做日志。

Backuparchivelognotbackedup3times;

还可以使用backup与untiltime参数来确保归档重做日志在磁盘上保留一定的天数:

Backuparchivelogalldeleteinputuntiltime'sysdate-2';

注:notbackedup参数和deleteinput参数相互排斥,不管归档重做日志的备份次数为多少,deleteinput参数都会删除这个归档的重做日志。

7.5控制文件和服务器参数文件备份

使用backupspfile命令可以备份服务器参数文件。

Backupcurrentcontrolfile;

Currentcontrolfile参数还提供一个forstandby子句,这个子句会创建一个备用数据库要用的备份控制文件。可以使用backup命令的controlfilecopy参数来创建一个含有外部创建的控制文件备份的备份集,执行alterdatabasebackupcontrolfileto'filename'命令或者RMAN的copy命令可以创建备用的数据库控制文件。此外,还可以备份由alterdatabasecreatestandbycontrolfile命令创建的备用数据库控制文件,该功能的有点在于可以使用外部控制文件备份文件,在RMAN中注册这些文件,然后创建一个含有控制文件备份的备份集。

Alterdatabasebackupcontrolfileto'd:/backup/orcl_backup.ctl';

Backupcontrolfilecopy'd:/backup/orcl_backup.ctl';

7.6备份集备份

我们可能现在磁盘上备份数据,然后在磁带上备份备份集。在Oracle10g中,RMAN通过backup命令支持这种操作。

使用backupbackupset命令可以选择备份所有备份集,也可以选择备份特定的备份集。另外,只能将备份集从磁盘备份到磁盘,或者将备份集从磁盘备份到磁带。在备份备份集中,可以使用deleteinput选项在备份操作成功后删除源备份集的文件。

Backupbackupsetall;

Backupbackupsetallformat='d:/backup/orcl_%U.bak'tag='ORCL'channel'ORA_DISK_1';

Backupbackupsetcompletebefore'sysdate-2';

Backupbackupsetcompletebefore'sysdate-2'deleteinput;

Backupbackupsetcompleteafter'sysdate-2'deleteinput;

7.7闪回恢复区备份

RMAN提供了对backuprecoveryarea命令将整个FRA备份到磁盘的功能,但并不是FRA中所有的文件都备份,备份文件包括:完整的备份集和增量备份集,控制文件自动备份,归档日志和数据文件副本。如果备份的FRA中包含闪回日志,当前的控制文件以及联机重做日志,则不会备份这些文件。注意,必须将这些文件备份到磁带上。

八.副本

8.1映像副本的介绍

RMAN可以创建数据库数据文件,归档重做日志或者控制文件的精确副本。Rman副本是这些文件的副本,区别仅仅在于名称和位置上的变化。我们不需要考虑备份片或其他问题。映像副本只能在磁盘上生成,且不能生成增量副本。生成映像副本必须加载或打开数据库。生成副本的历史记录保存在数据库控制文件中。所以我们可以跟踪副本生成的时间和驻留的位置。

类似与常规备份,可以建立整个数据库,表空间或数据文件的映像副本。RMAN复制过程提供一些和普通RMAN备份集相同的保护,例如检查讹误代码块以及逻辑讹误。此外,映像副本可以与普通的备份集结合起来,帮助完成数据库恢复。

8.2数据库,表空间和数据文件的映像副本

Backup命令支持数据库映像副本的创建。RMAN可以通过backupascopy命令生成映像副本。

RMAN>backupascopydatabase;

表空间的映像副本创建:

RMAN>backupascopytablespaceUsers;

数据文件的映像副本:

Backupascopydatafile1;

Backupascopydatafile'D:/APP/ADMINISTRATOR/ORADATA/ORCL/DAVE0.DBF';

8.3控制文件副本

备份控制文件:

Backupcurrentcontrolfile;

创建控制文件的副本:

Backupascopycurrentcontrolfile;

创建用于备份数据库的控制文件:

Backupascopystandbycontrolfile;

在创建时还可以指定别名:

Backupascopystandbycontrolfileformat'D:/backup/controlfilecopy.ctl';

8.4Archivelog映像副本

生成归档的重做日志副本是非常有用的。使用Oracle的Logminer产品挖掘(Mine)归档的重做日志副本显然比必须先从备份集中析取这个归档的重做日志更为简单。使用copy命令的archivelog参数可以创建归档的重做日志副本。遗憾的是,使用copyarchivelog时必须列出每个归档的重做日志名,而不能指定要复制的归档的重做日志的时间范围。

Backupascopyarchivelogall;

九.增量备份

通过增量备份,RMAN允许用户只备份上次增量备份以来被修改过的数据块。增量备份具有以下有点:

(1)更少的使用磁盘或磁带

(2)降低网络宽带要求

(3)节约备份时间

可以在联机或脱机模式,Archivelog模式或者noarchivelog模式中执行增量备份。一旦选择了增量备份策略,就会在效益方面的问题。如果显著减少了整个备份操作的时间,在恢复操作方面就会投入更多的时间。这是因为如果使用增量备份策略,Oracle就需要使用更多的备份集来恢复数据库,恢复所需要的时间就会显著增加。

9.1块更改跟踪文件

默认情况下,当执行增量备份时,发生任何更改的所有数据文件都将备份。这可能使增量备份花费更长的时间,并且会增加增量备份的大小。10g中RMAN提供了只备份更改过的数据块的功能。这就可以加快增量数据库备份的速度并减少其大小。执行alterdatabaseenableblockchangetracking命令可以启用块更改跟踪。

如果使用Oracle管理文件(OMF),Oracle将会创建块更改跟踪文件。如果没有使用OMF,则必须定义块更改跟踪文件的位置和名称。如:

Alterdatabaseenableblockchangetrackingusingfile'F:/backup/block.fil';

如果跟踪文件已经存在,可以使用reuse参数:

Alterdatabaseenableblockchangetrackingusingfile'F:/backup/block.fil'reuse;

使用alterdatabaseblockchangetracking命令可以禁用块更改跟踪。块更改跟踪文件的大小通常预先分片且与数据库大小和重做日志线程的数量有关。块更改跟踪文件的大小一般是数据库大小的1/30000。块更改跟踪文件可能会以10MB为增量增长。块更改跟踪文件的最小尺寸是每个数据文件320k,如果有许多数据文件,则块更改跟踪文件就会较大。Oracle会在块更改跟踪文件中存储足够的信息,从而允许最多8天的增量备份。显而易见,如果增量备份超过8天,则将不使用块跟踪更改跟踪文件,并且无法利用块跟踪文件的有点。

可以通过检查v$block_change_tracking视图来确定是否启用了块更改跟踪。Status指示了是否启用了块更改跟踪,filename包含块更改跟踪文件的文件名。可以通过alterdatabaserenamefile命令来转移块更改跟踪文件。

SQL>selectstatus,filenamefromv$block_change_tracking;

STATUSFILENAME

----------------------------------------------------------------

ENABLEDF:/BACKUP/BLOCK.FIL

9.2基本备份

执行增量备份操作时,首先需要的是增量基本备份(incrementalbasebackup),以后所有的增量备份都基于这个基本备份。每次执行数据库备份操作时,都可以通过backup命令的incremental参数来为备份指定一个增量级别标识符。基本备份的增量级别为0,并且必须有基本备份才能够执行其他类型的增量备份操作。如果没有生成基本备份就尝试执行增量备份操作,RMAN会自动执行基本备份操作。示例:

Backupincrementallevel=0database;

9.3差异备份与增量备份

9.3.1差异备份

差异备份是RMAN生成的增量备份的默认类型,对于差异备份来说,RMAN会备份自上次同级或者低级差异增量备份以来所发生变化的数据块。

Backupincrementallevel=1database;

9.3.2累积备份

累积备份可以使备份集备份前面所有级别的备份以及此次要备份的所有发生变化的数据块。累积备份是一个可选的备份方法,并要求在backup命令中使用cumulative关键字。

Backupincrementallevel=2cumulativedatabase;

9.3.3增量备份选项

Oracle不仅允许执行数据库的增量备份,还允许执行表空间,数据文件以及数据库文件副本的增量备份操作。控制文件,归档重做日志以及备份集都不能生成增量备份。此外,还可以在执行增量备份操作时同时备份归档的重做日志。

Backupincrementallevel=0tablespaceusers;

Backupincrementallevel=1tablespaceusers;

Backupincrementallevel=0datafile4;

Backupincrementallevel=1datafile4;

Backupincrementallevel=1databaseplusarchivelog;

9.3.4增量备份更新备份

RMAN提供了增量备份更新备份。这种备份避免了采用数据文件的完整映像副本进行备份的开销,并且具有与映像副本相同的恢复特性。从某种意义上来说,这种备份类似与使用映像副本的增量备份。

Run{

Recovercopyofdatabasewithtag'Orcl';

Backupincrementallevel1forrecoverofcopywithtag'Orcl'database;

}

示例中的recoverofcopydatabase命令并没有真正的恢复数据库,但它使RMAN将任何增量备份应用于与列出标记(Orcl)关联的数据文件副本。第一次运行该命令时,它将没有任何效果,因为它没有任何可用的增量备份或数据文件副本。这并不是很严重的问题,并且RMAN将只显示一条警告消息。第二次运行该命令时也没有任何效果,因为没有任何增量备份可用。

执行recover命令后,就会产生一个增量备份,这个备份第一次运行时,它会创建一个基本备份(如果没有的话)。这实际上增量为1的备份。第二次执行这个run代码块时,将通过backup命令执行第一个增量备份。

一旦该命令运行了2次,第三次执行和后面的执行就能够将前面的增量备份应用与数据文件副本。注意,recover和backup命令中将标记赋予相同的名称非常重要。

整理自<Oracle10gRMAN备份与恢复>

------------------------------------------------------------------------------

QQ: 492913789


Email: ahdba@qq.com


Blog: http://www.cndba.cn/dave


网上资源:http://tianlesoftware.download.csdn.net

相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx

DBA1群:62697716(满);DBA2群:62697977

意见反馈 常见问题 官方微信 返回顶部