第一问:是否选择增量备份?
所有增量备份都必须先创建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;
压缩备份集诚然是以时间换空间:存储空间有了,但备份与恢复的时间就长了。