应用升级/灾备测试时使用guarantee 闪回点迅速回退

发布于:2025-06-12 ⋅ 阅读:(17) ⋅ 点赞:(0)

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;