oracle create restore point,Orace Flash 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之后的任何时间点。

1.创建还原点:

还原点模式(normal,guaranteed)

闪回还原点分两种,一种是Normal Restore Points(正常还原点),另一种是Guaranteed Restore Points(担保还原点)

正常还原点和担保还原点的信息都是保存在控制文件,区别在于正常还原点的信息如果不手动删除控制文件也会自动维护管理删除,而担保还原点如果不手动删除,控制文件是不会自动删除的,也就说只要设立了担保还原点没有手动删除,数据库就一定能恢复到那个还原点状态。如果担保还原点和Flashback Database一起使用,那么数据库就能闪回到担保还原点起和之后的任何时间点。

注:

guaranteed模式下只要有足够的闪回区,不会受DB_FLASHBACK_RETENTION_TARGE参数影响。

normal还原点至少保留2048个,保留的个数据受CONTROL_FILE_RECORD_KEEP_TIME参数决定,默认值是7天。

#######Guaranteed 还原点创建

创建guaranteed还原点,必须满足以下条件:

a.创建一个guaranteed 还原点必须有SYSDBA系统权限。创建一个normal还原点,你必须有SELECT ANY DICTIONARY or FLASHBACK ANY TABLE privilege

b.必须创建flash recovery area

配置flash recover area共需要二个参数(DB_RECOVERY_FILE_DEST和DB_RECOVERY_FILE_DEST_SIZE)这两个参数可以在数据库运行过程中在线修改,修改后立即生效,比如以下列子:SQL>alter system set db_recovery_file_dest='+dist1' scope=both;

SQL>alter system set db_recovery_file_dest_size='10g' socpe=both sid='实例1';

c.数据库必须是归档模式(如果是担保还原点,归档目录必须是共享的,因为在FLASHBACK DATABASE NOT STARTED - REQUIRED REDO LOG IS NOT AVAILABLE(文档 ID 560686.1),或者归档进行了备份通过RMAN命令窗口,调用backup进行还原)

$> su – oracle

$> sqlplus / as sysdba;

Find out if ARCHIVELOG is enabled

SQL> select log_mode from v$database;

If step 3 shows that ARCHIVELOG is not enabled then continue else skip to step 8 below.

SQL> shutdown immediate;

SQL> startup mount;

SQL> alter database archivelog;

SQL> alter database open;

SQL> create restore point CLEAN_DB guarantee flashback database;

where CLEAN_DB is the name given to the guaranteed restore point.

Viewing the guaranteed restore point

检查创建的还原点,记录对应的SCN号。

SQL> select * from v$restore_point;

#######闪回guaranteed还原点

$> su – oracle

$> sqlplus / as sysdba;

SQL> select current_scn from v$database;

SQL> shutdown immediate;

----闪回guaranteed时数据库必须mount状态不能OPEN

SQL> startup mount;

SQL> select * from v$restore_point;

SQL> flashback database to restore point CLEAN_DB;

SQL> alter database open resetlogs;

------对比创建还原点时记录的SCN号

SQL> SQL> select current_scn,log_mode,flashback_on from v$database;

CURRENT_SCN LOG_MODE     FLASHBACK_ON

----------- ------------ ------------------

1933454 ARCHIVELOG   RESTORE POINT ONLY           ======>没有打开flashback database功能时

注:如下就是归档没有被共享的情况;

SQL> flashback database to restore point CLEAN_DB;

flashback database to restore point CLEAN_DB

*

ERROR at line 1:

ORA-38754: FLASHBACK DATABASE not started; required redo log is not available

ORA-38762: redo logs needed for SCN 13015580437922 to SCN 13015580437926

ORA-38761: redo log sequence 203744 in thread 2, incarnation 1 could not be

accessed

注:归档目录必须在共烹的文件系统里,否则不能还原回去;

alter system set log_archive_dest_1='LOCATION=/dbreplay/arch5' scope=spfile sid='oyy3a';

alter system set log_archive_dest_1='LOCATION=/dbreplay/arch6' scope=spfile sid='oyy3b';

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值