五. Backup 命令选项


5.1 压缩

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


5.1.1 NULL 控制压缩

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

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

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

在第一种情况下,将不会备份其中一直没有数据的所有数据块,在第二种情况下,如果数据库和关联的数据库满足某种标准,空块将不被备份,即使

它在某个时刻包含数据。 下面是允许RMAN 不备份这些数据块所必须满足的条件:

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

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

(3) 本地管理数据文件

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

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

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


5.1.2 RMAN 备份压缩

RMAN 可以将压缩算法应用于备份集,从而减小RMAN 创建的备份集的大小。 RMAN 压缩可以在很大程度上减小备份集的大小。 有时,压缩可能非常有

效。如在测试数据库中,当使用压缩备份时,备份集映像的大小可以减小70%。如果没有配置数据库自动压缩备份集,可以使用 as compressed

backupset 参数来创建压缩备份集。 如果已经配置了压缩并且不希望在给定的backup 命令中使用压缩,则只需使用backup as backupset 参数即可


5.2 标记

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

Backup database tag='TEST';

需要注意的是:使用了tag 参数来标记这个完全备份。每个标记都应当是唯一的,如果没有指定一个命名约定,RMAN 就会使用默认约定为每个备份集

分配一个标记。 相同的标记可以应用与多个备份,并且默认情况下只还原最新的备份。


5.3 限定备份的影响

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

定的持续时间,RMAN将取消备份。 如:

Backup duration 00:30 database;

注意事项: 不可以使用backup database plus archivelog命令。 Duration 参数也可以用来抑制备份。 当定义持续时间时,可以让RMAN 使以下因

素之一最小化:

(1)备份运行时间

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

如果尝试最小化备份运行时间,RMAN 将预先全速备份。 这是默认设置。 使用默认的minimize time 参数的另一个特性是,RMAN 将区分备份的数据

文件的优先级。 最近备份的数据文件具有较低的优先级,而较早备份的数据文件具有较高的优先级。

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

Backup duration 00:30 minimize time database;

Backup duration 00:30 minimize time database;

使用duration 参数,可以指示RMAN如何处理超出backup duration时间限制的备份。 当使用partial 参数时,如果备份因为超出duration 参数的持

续时间而终止,RMAN 不会将其作为失败的备份进行处理。 因此,任何run 代码块中的剩余命令将继续执行。 因此,如果接下来还有backup 命令,

例如归档的重做日志备份,使用这个参数就会很方便。  无论partial 参数的设置是什么,机制整个备份过程没有完成,Oracle 也会将成功完成的备

份集认为是可用的。


5.4 限定备份集大小

Backup database maxsetsize=50m tag='TEST';

在这个示例中,我们设定备份集的大小不超过50mb。 如果磁带的大小有限制,或者磁盘只能处理一定大小的数据文件,是哦那个这个参数就非常方便

。 Oracle 将备份分成多个备份集,每个备份集都不会超出所定义的maxsetsize参数值。

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

数要特别小心。

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

限定值。


5.5 修改备份集的保存策略

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

Backup database keep forever;

Backup database keep until time='sysdate+180';

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


5.6 重写configure exclude 命令

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

的backup 命令中添加noexclude 参数:

Backup database noexclude keep forever tag='TEST';


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

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

Backup validate database;


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

有时候,数据库中的数据文件可能处于Online 以外的状态,如果数据文件是只读的,在备份数据库时可能不要每次都备份这些只读的数据文件。 如

果数据文件是脱机的或者不可存取的,假如没有执行特别的操作来指示RMAN跳过这些缺少的数据文件,RMAN 备份操作就会失败。 因此需要使用skip

参数,使用该参数可以根据需要跳过脱机的,只读的或者不可存取的数据文件。 如:

Backup database skip readonly;

Backup database skip offline;

Backup database skip inaccessible;

Backup database skip readonly skip offline skip inaccessible;

Inaccessible 参数可以使Oracle 跳过不能读取的数据文件,这些文件没有实际地存在于磁盘上(如已删除或者转移位置),使用offline 参数可以

跳过脱机的但仍存在的数据文件。 Skip readonly参数可以使Oracle 跳过只读的数据文件。 也可以使用configure 配置Oracle 不备份只读的表空间


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

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

Backup database force;


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

Oracle允许用户在备份进程中指示只备份给定时间以来没有备份过的数据文件。 如果在数据库中添加了新的数据文件,或者只想备份给定天数内发生

变化的数据文件,使用Oracle的这个功能就非常方便。


(1)只备份添加的数据文件

假设在数据库上添加了4个新的数据文件,我们希望不备份整个数据库,而是备份这些新的数据文件。 我们除了只备份单个数据文件外,还有一种更

简单的方法:使用backup 的net backed up 选项. 如:

Backup database not backed up;

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

我们可能需要在指定的时间备份指定的数据文件。 如重新启动一个失败的备份操作,使用since time 选项也是非常方便的。 如果备份操作失败,可

以在排除这个故障后使用since time 选项来重新启动这个备份操作。如:

Backup database not backed up sine time='sysdate-2';

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


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

在默认情况下,RMAN 会检查数据库数据块的逻辑讹误。 如果发现了任何讹误。备份就会失败,这是默认情况。 如果需要更多的错误检查,可以使用

backup 命令的check logical 选项来配置备份操作执行逻辑讹误检查。 如:

Backup check logical database;

Backup validate check logical database;

在第一条命令中,rman 会在检查逻辑讹误的同时物理备份数据库。 第二条命令中,RMAN 只验证数据库数据块,它只是执行逻辑数据库验证操作,而

不执行实际的数据库物理备份操作。 注意的是:如果要在给定的错误数内仍然继续执行备份操作,就需要先设置maxcorrupt 参数值。 如下所以,需

要使用run 代码块来设置maxcorrupt 参数值:

Run{

Set maxcorrupt for datafile 1,2,3,4,5,6,7 to 10;

Backup validate check logical database;

}


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

有时,我们可能需要创建备份集片的多个副本。 这可以通过配置默认的生成,也可以使用copies 参数对某个备份进行配置来创建备份片的多个副本

(还可以使用set backup copies 参数来完成这个功能)。 下面是一个使用copies 选项生成副本的示例:

Backup database copies=2;

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

Backup database device type disk;

Backup database device type disk;


5.13 备份控制文件

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

Backup database device type disk include current controlfile;

在默认情况下,如果备份数据文件,无论如何都会备份控制文件,因此,如果要执行表空间备份操作或者数据文件备份,使用include current

controlfile 参数就非常方便。 如果配置了控制文件的自动备份操作,上面的命令还会将当前的控制文件存储在备份集中。 这样我们就有两个控制

文件的副本。


六. Set 命令介绍

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

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

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

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

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

(1)set newname 命令:用于执行表空间时间点恢复(TSPITR)或者数据库复制操作。 该命令允许指定新的数据库数据文件名。 将数据库移动到新

的系统中并且文件系统名不同时,我们可以使用这个命令。使用set newname 命令时还需要使用switch 命令。

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

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

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

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

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

(7)Set controlfile autoback format for device type: 使用该命令可以修改用于控制文件自动备份操作的默认格式。

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

Run{

Set maxcorrupt for datafile 3 to 10;

Stet backup copies=2;

Backup database;

}


oracle视频教程请关注:http://u.youku.com/user_video/id_UMzAzMjkxMjE2.html