在这种情况下对于flashback database可以将数据库恢复到闪回窗口中的任意时间点和特定的受保护的还原点所对应的状态,但你必须监控制闪回区的空间使用。
使用正常和受保护还原点
使用受保护还原点的要求
为了支持使用受保护还原点,数据库必须满足下面的要求:
1.compatible参数必须设置为10.2或更高版本
2.数据库必须运行在归档模式下。flashback database操作将数据库还原到受保护的还原点时要求使用一直到还原点以来的归档重做日志。
3.必须设置闪回区.受保护的还原点使用了一种类似于闪回日志的机制,Oracle必须在闪回区存储所要使用的日志
4.如果没有启用闪回数据库,当创建第一个受保护的还原点心(或者如果所有之前创建的受保护的还原点已经被删除后)那么数据库必须处于mount状态,不能是open状态。
注意:在使用正常的还原点没有特殊的要求。
创建正常和受保护还原点
为了创建正常或受保护还原点,使用create restore point语句,并给还原点提供了一个名称并指定它是受保护还原点还是正常还原点(默认值)。
在创建还原点时数据库可以处于open或mount状态。如果是mount状态,那么必须已经完全关闭(物理备库除外)。
下面的命令用来创建一个正常还原点
SQL> create restore point before_truncate;
Restore point created.
下面的命令用来创建一个受保护还原点
SQL> create restore point before_truncate guarantee flashback database;
create restore point before_truncate guarantee flashback database
*
ERROR at line 1:
ORA-38784: Cannot create restore point 'BEFORE_TRUNCATE'.
ORA-38787: Creating the first guaranteed restore point requires mount mode when flashback database is off.
根据错误提示可以看出当数据库没有启用flashback database时想要创建受保护的还原点只能在mount状态下创建。
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 327155712 bytes
Fixed Size 1273516 bytes
Variable Size 138412372 bytes
Database Buffers 184549376 bytes
Redo Buffers 2920448 bytes
Database mounted.
SQL> create restore point before_truncate guarantee flashback database;
Restore point created.
SQL> col name for a20
SQL> SELECT NAME, SCN, TIME, DATABASE_INCARNATION#,
2 GUARANTEE_FLASHBACK_DATABASE,STORAGE_SIZE
3 FROM V$RESTORE_POINT;
NAME SCN TIME DATABASE_INCARNATION# GUARANTEE_FLASHBACK_DATABASE STORAGE_SIZE
-------------------- ---------- ----------------------------------- --------------------- ---------------------------- ------------
BEFORE_TRUNCATE 2849315 27-JAN-15 02.40.56.000000000 PM 2 YES 8192000
显示还原点
为了查看当前定义的还原点,可以使用v$restore_point控制文件视图:
SQL> SELECT NAME, SCN, TIME, DATABASE_INCARNATION#,
GUARANTEE_FLASHBACK_DATABASE,STORAGE_SIZE
FROM V$RESTORE_POINT;
SQL> col name for a20
SQL> SELECT NAME, SCN, TIME, DATABASE_INCARNATION#,
2 GUARANTEE_FLASHBACK_DATABASE,STORAGE_SIZE
3 FROM V$RESTORE_POINT;
NAME SCN TIME DATABASE_INCARNATION# GUARANTEE_FLASHBACK_DATABASE STORAGE_SIZE
-------------------- ---------- ----------------------------------- --------------------- ---------------------------- ------------
BEFORE_TRUNCATE 2849315 27-JAN-15 02.40.56.000000000 PM 2 YES 8192000