注意事项:
数据库要为归档模式。
数据库不需要开启闪回。
数据库需要设置db_recovery_file_dest 和db_recovery_file_dest_size 参数
–有关Flashback的相关参数:
SQL> show parameter db_recovery_file_dest
NAME TYPE VALUE
db_recovery_file_dest string D:\app\Administrator\flash_rec overy_area
db_recovery_file_dest_size big integer 1300M
SQL> show parameter db_flashback
NAME TYPE VALUE
db_flashback_retention_target integer 1440
SQL> select flashback_on from v$database;
FLASHBACK_ON
NO
–创建restore point
SQL>startup mount
SQL> create restore point upgrade_pointguarantee flashback database;
Restore point created.
SQL>shutdown immediate
注意:
如果数据库的Flashback database 没有打开,那么只能在mount 状态下进行创建。
如果是Open 状态执行,创建完之后,DB 会变成mount状态。
–查看我们创建的restore point
RMAN> list restore point all;
SCN RSP Time Type Time Name
1316268211 GUARANTEED 29-OCT-11UPGRADE_POINT
这里我们就不执行,我们创建一个表,演示一下效果。
SQL> select open_mode from v$database;
OPEN_MODE
READ WRITE
SQL> create table d1(id number);
Table created.
SQL> insert into d1 values(1);
1 row created.
SQL> insert into d1 values(2);
1 row created.
SQL> commit;
Commit complete.
SQL> select * from d1;
ID
1
2
3.3 如果失败,就进行回滚
注意:执行Flashback Database时,DB 不能处于open状态.
SQL> shutdown immediate
SQL> startup mount;
SQL> select open_mode from v$database;
OPEN_MODE
MOUNTED
SQL> select flashback_on from v$database;
FLASHBACK_ON
RESTORE POINT ONLY
SQL> flashback database to restore point upgrade_point;
Flashback complete.
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS orNORESETLOGS option for database open
–提示必须用Resetlogs打开:
SQL> alter database open resetlogs;
Database altered.
–查看我们之前的创建的表:D1
SQL> select * from d1;
select * from d1
*
ERROR at line 1:
ORA-00942: table or view does not exist
提示我们表不存在,数据闪回到了我们之前的Restore Point了。 用resetlogs 打开DB 之后记得重新备份一下数据库。
3.4如果升级成功,我们直接删除restore point即可
SQL> drop restore point upgrade_point;
Restore point dropped.
用RMAN 验证:
RMAN> list restore point all;
using target database control file insteadof recovery catalog
SCN RSP Time Type Time Name
RMAN>
已经为空。
基于Restore Points的方法,还可以将standby库临时激活到读写状态进行测试,测试完成后,在还原到之前的状态。这种方法的步骤,参考如下链接: