Snapshot Standby(快照备库)
Oracle 11g 中的 Data Guard 不仅引入了Active Data Guard实时查询特性,还提供了snapshot stadnby 数据库的功能。快照备库可以临时提供读写能力,以便线上业务系统进行测试相关场景任务。
snapshot standby database 会从主库接收和归档 redo 数据,但是不会对 redo 数据进行apply。 仅当snapshot standby 的角色转换回physical standby database 的时候才会应用之前接收的redo 数据。 然后擦除作为snapshot standby 数据库时所有的DML和DDL操作。
snapshot standby实际上是基于flashback database的运行机制,因此必须设置闪回区目录及大小。
限制
- Snapshot standby 数据库不能进行switchover 或者failover 操作。 在转换之前,必须先从snapshot standby 转换成physical standby 以后才可以转换
- Snapshot standby 不支持最大保护模式(最大保护模式需要实时应用)
配置
将物理备库转换成快照备库。
设置快速恢复闪回区
确保fast recovery area已经配置并确保大小合适,但不一定需要启动flashback database功能
show parameter flashback
show parameter db_recover
-- 如果大小合适,就不用调整大小
alter system set db_recovery_file_dest_size=1024g scope=both;
停止应用日志
-- 停止Redo Apply
alter database recover managed standby database cancel;
物理备库进行切换(只有mount状态才允许切换)
select open_mode from v$database;
ALTER DATABASE CONVERT TO SNAPSHOT STANDBY;
-- 检查
select database_role,open_mode,protection_level from v$database;
select oldest_flashback_scn, oldest_flashback_time from v$flashback_database_log;
说明
- 此时,会启动一个RVWR的后台进程,并创建一个guaranteed 的resotre point,进行了resetlogs 的操作
- 传输剩余的Standby Redo Log日志信息
- 清理Standby端的online redo log日志组
快照备库已读写模式打开
alter database open;
select open_mode from v$database;
恢复原环境
任务完成后,将 Snapshot Standby 转成 Physical Standby
切换过程
shutdown immediate;
startup mount;
alter database convert to physical standby;
备库 alert 有详细记录 ,转换的过程相当于 Flashback restore ,恢复控制文件和清理日志操作并删除还原点
重新开启日志应用
备库重启并重新开启日志应用
shutdown immediate;
startup;
alter database recover managed standby database using current logfile disconnect from session;
-- 还原点也被删除了
select name,storage_size from v$restore_point;
检查主备数据同步情况
select max(sequence#) from v$archived_log;
-- 备库
select sequence#, applied from v$archived_log;