rman系列之7问rman

第一问:是否选择增量备份?

所有增量备份都必须先创建0级备份。0级备份相当于全库备份,但二者并不等同,因为,全库备份不包含增量备份策略。

对users 表空间建立增量备份:

RMAN> backup incremental level=0 tablespace users;

RMAN> backup incremental level=1 tablespace users;


如果选择了增量备份,请务必启用块修改跟踪,否则,会因块级检查而耽误了备份时间。

可通过下列语句启用块修改跟踪:

sys@ORCL>alter database enable block change tracking;


可通过下列语句查询是否启用块修改跟踪:

sys@ORCL>select status from v$block_change_tracking;


可通过下列语句禁用块修改跟踪:

sys@ORCL>alter database disable block change tracking;


需要提醒的是,备份与恢复本就是此消彼长的,备份时间、大小短了,恢复时就不得不多读几个备份集才能完成恢复操作。

第二问:是否使用rman备份集保留策略?

rman提供了两种备份保留策略:基于时间和基于冗余数量

基于时间,也就是你希望数据库最早能恢复到几天前。

RMAN>configure retention policy to recovery window of n days;


基于冗余数量

RMAN>configure retention policy to redundancy n;


控制文件中记录的保存时间有可能对备份保留策略影响!

对于nocatalog下创建的备份,rman的备份集信息都是保存在目标数据库的控制文件中,不过oracle数据库的控制文件并不是无限扩展,其中能够保存的记录也是有限的,控制文件保存rman备份集信息受制于初始化参数control_file_record_keep_time。以天为单位,缺省是7天。如果超过7天,而且,空间不足,则rman的信息可能会被覆盖。所以,建议,control_file_record_keep_time初始化参数要大于rman的备份保留时间。

当前控制文件,可存储记录数和已存储记录数,可以借助v$controlfile_record_section获取。

第三问:是否使用多个通道?

rman支持两种备份设备:SBT(磁带)和Disk(任何带盘的东东)

allocate channel :通道= 1:1.该命令只能在run块中运行。

RMAN>run{
allocate channel c1 device type disk format '/u01/app/oracle/backup/cn_%U';
backup tablespace users;
}


rman会在run块执行完后自动释放掉通道。

第四问:是否启用复合备份?

复合备份,也就是向指定位置生成指定份数。注意,默认的flash_recovery_area是不能启用复合备份的。

RMAN> backup copies 2 tablespace users;

Starting backup at 06-AUG-12
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00004 name=/u01/app/oracle/oradata/ORCL/datafile/o1_mf_users_8050fkdh_.dbf
channel ORA_DISK_1: starting piece 1 at 06-AUG-12
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: failure of backup command on ORA_DISK_1 channel at 08/06/2012 10:56:20
ORA-19806: cannot make duplex backups in recovery area


需要为备份片指定名称:

RMAN> backup copies 2 tablespace users format '/u01/app/oracle/flash_recovery_area/ORCL/think_%U';

Starting backup at 06-AUG-12
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00004 name=/u01/app/oracle/oradata/ORCL/datafile/o1_mf_users_8050fkdh_.dbf
channel ORA_DISK_1: starting piece 1 at 06-AUG-12
channel ORA_DISK_1: finished piece 1 at 06-AUG-12 with 2 copies and tag TAG20120806T105802
piece handle=/u01/app/oracle/flash_recovery_area/ORCL/think_04nhv5pq_1_1 comment=NONE
piece handle=/u01/app/oracle/flash_recovery_area/ORCL/think_04nhv5pq_1_2 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 06-AUG-12


也可以在run块中,利用set backup copies n

RMAN> run{
2> set backup copies 2;
3> backup tablespace users format '/home/oracle/think_%U','/u01/app/oracle/flash_recovery_area/ORCL/think_%U';
4> };


第五问:是否设置备份集属性?

在前面我们,或者在分配通道时指定备份片名称,或者在执行备份命令是指定备份片的名称。当然,我们也可以给备份集取个别名。

RMAN>backup tablespace users tag tbs_think;


rman在分配通道时,参数maxpiecesize,就是专门用来指定备份片的大小

RMAN>run{
allocate channel c1 device type disk maxpiecesize=10m format '/u01/app/oracle/backup/think_%U';
backup datafile 1;
}


这样子,每个备份片的大小就不超过10m了。

第六问:是否使用rman恢复目录?

存储rman备份集元数据的数据库,谓之rman恢复目录。强烈建议,不要将恢复目录放到目标数据库中!

创建恢复目录:

1)创建一个独立的表空间:

sys@ORCL> create tablespace rmantbs datafile '/u01/app/oracle/flash_recovery_area/ORCL/rmantbs01.dbf' size 50m;

Tablespace created.


2)创建一个独立的schema,用来记录备份信息,并授予相关权限

sys@ORCL> grant connect,resource,recovery_catalog_owner to rmanct identified by rmanct;    

Grant succeeded.


3)在rman中创建catalog

[oracle@localhost ~]$ rman catalog rmanct/rmanct     

Recovery Manager: Release 10.2.0.1.0 - Production on Mon Aug 6 11:45:25 2012

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

connected to recovery catalog database

RMAN> create catalog tablespace rmantbs;

recovery catalog created


在使用恢复目录前,目标数据库需要向恢复目录注册。一个恢复目录可以同时为多个目标数据库提供服务。

RMAN>rman target / catalog rmanct/rmanct@bakdb


可以通过下列命令注册数据库

RMAN>register database;


可以通过下列命令注销数据库

RMAN>unregister database


当然,目标数据库要想远程连接恢复目录,还需要配置tnsname.ora。

即使目标数据库已经注册到恢复目录,但连接时没有以catalog模式连接,则备份信息仍然只是存储在目标数据库的控制文件中,相当于nocatalog模式。

如果DBA要管理的数据库比较多,则建议使用catalog,这样,只要单独备份恢复目录即可。如果是一个或者很少,那么nocatalog就足够了。

第七问:是否对备份集进行压缩?

RMAN>backup as compressed backupset tablespace users;


压缩备份集诚然是以时间换空间:存储空间有了,但备份与恢复的时间就长了。

你可能感兴趣的:(rman)