一、 rman信息库可以存放两个位置
1,目标数据库的控制文件;
2,恢复目录;
二、 控制文件里面存放记录分为两类
1,可删除的记录归档日志文件的历史记录以及rman备份的元数据(记录备份集位置的数据)
2,不可删除记录数据文件,联机日志文件列表等
如果需要在控制文件中存放新的记录,则可以删除那些可删除部分,从而提供可用空间。
注意:如果rman备份的元数据被删除,rman的备份数据失去了意义,因此rman备份的元数据很重要。
三、设置初始化参数
controlfile_record_keep_time 来决定控制文件中可删除部分,这个参数默认是七天,表示控制文件始终保持最近七天的可删除记录,七天前的备份信息,归档日志记录被删除,如果设置为零,表 示不删除历史记录,那么控制文件的增长将会失控,因此rman的备份周期不能超过七天。
四、rman备份顺序,保证不丢失数据
1,数据库数据文件
2,归档日志
3,控制文件
4,参数文件
--------------------------------------推荐阅读 --------------------------------------
Oracle基础教程之通过RMAN复制数据库
--------------------------------------分割线 --------------------------------------
五、实验一
备份完成后,我们把控制文件删除掉,然后用过去的控制文件来恢复,看看是否能恢复数据库
RMAN> run {
2> allocate channel c1 type disk;
3> allocate channel c2 type disk;
4> backup database filesperset 2 format '/u02/backup/full_%d_%t_%s_%p';
5> backup current controlfile format '/u02/backup/ctl_%d_%t_%s_%p';
6> sql 'alter system archive log current';
7> sql 'alter system archive log current';
8> sql 'alter system archive log current';
9> backup archivelog all format '/u02/backup/log_%d_%t_%s_%p' delete input;
10> }
备份完成后,删除所用的控制文件,我们用过去的控制文件进行恢复,是否可以恢复并打开数据库?
RMAN> restore controlfile from '/u02/backup/ctl_ORCL_843148742_17_1';
RMAN> alter database mount;
RMAN> recover database;
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 03/25/2014 16:08:31
RMAN-06054: media recovery requesting unknown log: thread 1 seq 37 lowscn 1157615
注意:这里提示我们缺少日志文件seq37!
说明这个备份方案有错误!有可能找不到我们的日志文件的备份级,如果是在磁盘上也不是太难,但是如果是带库就比较麻烦了!
打开另一个会话:
RMAN> catalog backuppiece '/u02/backup/log_ORCL_843148747_18_1';
cataloged backuppiece
backup piece handle=/u02/backup/log_ORCL_843148747_18_1 recid=14 stamp=843150418
RMAN> catalog backuppiece '/u02/backup/log_ORCL_843148747_19_1';
cataloged backuppiece
backup piece handle=/u02/backup/log_ORCL_843148747_19_1 recid=15 stamp=843150442
RMAN> catalog backuppiece '/u02/backup/log_ORCL_843148749_20_1';
cataloged backuppiece
backup piece handle=/u02/backup/log_ORCL_843148749_20_1 recid=16 stamp=843150457
RMAN>
返回到上一个会话上:
RMAN> recover database;
Starting recover at 25-MAR-14
using channel ORA_DISK_1
starting media recovery
如果我们先备份控制文件后备份归档日志,那么控制文件中,一定没有记录备份的归档信(备份归档信息的名称和存放的位置)
六、备份全库
orale]$ rman target / log /tmp/rman_full.log
RMAN> configure controlfile autobackup on;
RMAN> configure controlfile autobackup format for device type sbt_tape to '%F';
注:在添加数据文件和删除数据文件的时候,在数据库物理操作,它会自动备份控制文件,这样数据库有可能出现挂起现象。
RMAN> configure controlfile autobackup format for device type disk to '%F';k to '%F';注:物理操作备份到disk
run{
allocate channel c1 type sbt_tape;把控制文件备份到带库上。
backup database;
}
如果rman中把控制文件的自动备份打开,还是刚才的那个备份脚本,当它完成对归档备份完成以后,仍然对控制文件进行备份。
run {
2> allocate channel c1 type disk;
3> allocate channel c2 type disk;
4> backup database filesperset 2 format '/u02/backup/full_%d_%t_%s_%p';
5> backup current controlfile format '/u02/backup/ctl_%d_%t_%s_%p';
6> sql 'alter system archive log current';
7> sql 'alter system archive log current';
8> sql 'alter system archive log current';
9> backup archivelog all format '/u02/backup/log_%d_%t_%s_%p' delete input;
10> }
七、Rman Log
在rman备份的时候,有个选项是log输出,在备份的时候,oracle说明是一个选项,但是对于我们来说,备份一定要有log。
1,备份脚本的格式
%c:备份片的副本数
%d:数据库名称
%D:位于该月的第几天
%M:位于该年的第几个月
%n:数据库名称,向右增补到最大8个字符
%u:一个8个字符的名称,代表备份集和创建时间
%p:该备份集的备份片号,从1开始到创建的文件数
%U:一个唯一的名字%u_%p_%c
%s:备份的编号
%t:备份的时间戳
%T:年月日格式(YYYY-MM-DD)