1.场景
应用要升级,当升级失败时,数据库回退到升级前.
要测试系统,测试完成后,数据库要回退到测试前。
相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。
2.技术实现
数据库设置 2个db_recovery参数
创建guarantee闪回点,不需要开启数据库闪回。
guarantee闪回点方式,只能闪回到闪回点建立的时刻。适合于应用升级测试这种场景。不开启数据库闪回,降低了操作复杂度,减少闪回日志需要的空间。
3. 设置参数并建guarantee 闪回点的sql
- 单实例
alter system set db_recovery_file_dest_size=100g ;
alter system set db_recovery_file_dest='/u02/fra';
create restore point before_upgrade guarantee flashback database;
select scn,name from v$restore_point;
- RAC
alter system set db_recovery_file_dest_size=100g sid='*';
alter system set db_recovery_file_dest='+arch' sid='*';
create restore point before_upgrade guarantee flashback database;
select scn,name from v$restore_point;
4.升级/测试应用
对应用进行升级/测试
5. 升级失败时回退数据库
1) 回退数据库的sql
- 单实例
shutdown immediate;
startup mount
flashback database to restore point before_upgrade;
alter database open resetlogs;
drop restore point before_upgrade;
- RAC
关闭所有实例,( 每个实例都执行,或者srvctl stop database -d asp)
shutdown immediate;
在节点1执行
startup mount
flashback database to restore point before_upgrade;
alter database open resetlogs;
drop restore point before_upgrade;
shutdown immediate;
重启所有实例
srvctl start database -d asp
2) 做rman备份
reseetlogs打开数据库后要马上做RMAN备份.
6.升级正常-不回退数据库
应用升级完成, 运行2天后确认没有问题后,应该删除闪回点。
删除闪回点不需要关闭数据库,可以在数据库运行状态下直接删除。
drop restore point before_upgrade;
7. 查看fra使用率
ref: Space issue in Fast / Flash Recovery Area - FRA Full (Doc ID 829755.1)
show parameter db_recovery_file
SELECT ROUND((SPACE_USED - SPACE_RECLAIMABLE)/SPACE_LIMIT * 100, 1) AS PERCENT_FULL FROM V$RECOVERY_FILE_DEST;