关于oracle restore point(还原点)的心得
首先我们复习一下还原点的一些基本的概念:
还原点(Restore point)是Oracle10gR2配合Flashback database推出的一个新特性。Restore point可以单独使用,也可以和Flashback database联合使用。
我们知道,Flashback database提供了一种将数据库整个的回滚到之前某个时间点的功能,相当于使用之前的某个备份做基于时间点的恢复,但是比基于时间点的恢复更有效率,因为无需执行备份数据文件的复制,只需要使用flashback log执行数据库回滚即可。也就是说,要使用flashback database功能,必须保证所需要的所有flashback log存在(即开了闪回功能)。flashback log存放在flashback recovery area中。由于falshback log中需要包含变更的数据块的映象,设置过长的flashback retention target,可能导致flashback recovery area空间不足。
Restore point有两种类型:Normal和Guaranteed。
Normal restore point相当于某个时间点或者SCN的一个别名。restore point的名字和对应的SCN会保存在控制文件中。创建了normal restore point后,如果需要执行flashback database/flashback table/point-in-time recovery等操作时,就可以制定目标时间点为该restore point,而不需要指定当时的SCN了。在很多关于恢复和闪回的试验中,作者都是在试验前查询系统当前的SCN,执行某些操作,然后恢复或者闪回到之前查询到的SCN。有了normal restore point后,就不再需要查询系统当前scn了,只需要创建一个有意思的normal restore point名,以后使用该名字即可。
Guaranteed restore point的功能和normal restore point的功能基本一致,也是作为SCN的一个别名。但是它还有一些和flashback database相关的特性。前面也提到,在执行flashback database到之前的某个时间点时,必须保证所需要的flashback log存在。
创建一个guaranteed restore point,可以保证能将数据库flashback到该点,即使没有系统启用flashback database日志!这是因为,在创建guaranteed restore point之后,对于任何block的第一次变更,都会将其前映象整个的记录下来。
如果系统启用了flashback database日志,那么guaranteed restore point可以保证能将数据库flashback到guaranteed restore point之后的任何时间点。
以上是一些基本概念,相信大家都不陌生,以下是自己的一些实验所得:
首先创建一个可靠还原点:
create restore point before_point_g guarantee flashback database;
如果数据库是处在非归档模式,则会报错ORA-38784: 无法创建还原点 'BEFORE_POINT_G'。
ORA-38785: 必须对可靠的还原点启用介质恢复。
这是因为数据库没有激活媒介恢复,即启动归档模式,启动归档模式后即能创建成功;
上述是guarantee restore point
如果是normal restore point,则不是归档模式的数据库也能创建成功
因为normal restore point是用的undo segments,也可以用flashback log
但是flashback database to restore point xxx 必须要启用flashback
而且一旦创建了可靠还原点,要密切关注flashback_recovery_area空间的使用情况,因为在创建guaranteed restore point之后,对于任何block的第一次变更,都会将其前映象整个的记录下来。所以当不再使用某一可靠还原点后要及时删除,语法:drop restore point point_name;
posted on 2009-08-24 15:40 xuanyuanvista 阅读(4356) 评论(2) 编辑 收藏 举报