这段时间一直在练手rman恢复,由于之前对os下用户热备份的原理比较了解,陆陆续续看eygle的书然后动手,慢慢的了解rman基本的原理,还是比较有成就感的。
热备份的原理是利用备份集restore(修复)数据库中数据文件 控制文件,然后通过归档日志,redo log中记载的全部数据库信息recover(恢复)重组数据文件,其中关键的有checkpoint scn等知识点。
下面实际晒一下这段时间rman练手细节
首先此时通过rman做了一个数据库的全备份
Rman>run{
Allocate channel d1 tpye disk;
Backup database tag=ashuang0817;
}
如果是用控制文件做恢复目录,应该也必要把rman中关于控制文件的自动备份开启
Rman>configure controlfile autobackup on
默认的是关闭的,由于是测试数据库,数据文件容量不是很大,就用目标数据库的控制文件代替恢复目录了。
开启控制文件自动备份后,rman的备份信息会记录在控制文件中,这个写操作又会触发控制文件的自动备份,所以上面的全库备份会带来控制文件和spfile文件的自动备份,默认的存储位置在闪回区中。全库备份的应该是oracle_base /flash_recovery_areatestbackupset,
控制文件自动备份默认存储在oracle_base /flash_recovery_areatestautobackup,Test是测试数据库的db_name。
此时我们拥有一个全库的备份集,控制文件和spfile文件。
1 数据文件os上删除,坏块等
Shutdown immediate
Os上删除数据文件rm掉所有数据文件
Cmd>rman target /
Rman>Startup mount
Rman>Restore database
修复数据库的所有数据文件
Rman>recover database
恢复数据库
Rman>alter database open
2 数据文件和控制文件一起在os上删除了
Shutdown immediate
Os上删除数据文件rm掉所有数据文件和控制文件
Cmd>rman target /
Rman>Startup nomount
Rman>restore controlfile to ‘oracle_baseoradatatestcontrol01.ctl’ from ‘’
需要制定备份集,不然oracle无法得知离我们最近的备份,或者指定db_id
Rman>alter database mount;
Rman>Restore database
Rman>recover database
Rman>alter database open resetlogs
由于是利用备份的控制文件来恢复数据库的,需要指定resetlogs来打开数据库,当然不完全恢复也就是丢失了当前日志文件组,重建控制文件指定resetlogs都需要以resetlogs打开数据库。
当然以上两种情况数据库都必须在归档模式下,如果数据库不在归档模式,那非常的可怕,最简单的例如redo log 1中记录了demp的表的数据信息,此时由于日志切换,redo log 1被覆盖了,虽然数据块已经写入数据文件。例如此时服务器硬件问题,磁盘坏掉,只能用冷备份来恢复数据库,但是无法利用archivelog来恢复你的demp表了,日志被覆盖,备份点到实例失败的信息是无法恢复的,所以没有归档的数据库很危险。
由于rman涉及的内容比较多,控制文件快照,rac的rman备份 恢复,指定catalog恢复目录,增量备份全备份啊。后面整理了继续更新!
[@more@]来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25362835/viewspace-1053968/ ,如需转载,请注明出处,否则将追究法律责任。