snapshot database状态下允许对备库进行读写,且在切回物理备库时恢复原有状态。
同时主库日志仍然会向备库传输,当备库从snapshot状态切回到物理备库后,应用这些日志。
1)备库设置闪回区
使用snapshot database需要配置以下2个参数,不需要打开flashback。
(也可以在前面配置备库参数时进行设置)
SQL> alter system set db_recovery_file_dest_size =2G;
System altered.
SQL> alter system set db_recovery_file_dest='/oracle/dbdata/snapshot';
System altered.
SQL> select flashback_on from v$database;
FLASHBACK_ON
------------------
NO
2)关闭备库日志应用
SQL> alter database recover managed standby database cancel;
3)重启备库至mount状态,切换备库至snapshot状态
SQL> shutdown immediate
SQL> startup mount;
SQL> alter database convert to snapshot standby;
SQL> alter database open;
4)查看备库状态
SQL> select database_role,open_mode from v$database;
DATABASE_ROLE OPEN_MODE
---------------- --------------------
SNAPSHOT STANDBY READ WRITE
5) 查看RESTORE POINT
SQL> select FLASHBACK_ON from v$database;
FLASHBACK_ON
------------------
RESTORE POINT ONLY
6) 检查主库alert日志,此时主库依然在向DG库传输归档日志:
7) 备库做各种测试
8) 重新切回到物理备库
SQL> shutdown immediate
SQL> startup mount
SQL> alter database convert to physical standby;
SQL> shutdown immediate
SQL> startup nomount
SQL> alter database mount standby database;
9) 开启日志应用
SQL> alter database recover managed standby database using current logfile disconnect;
10)查看备库alert log
至此snapshot切换完成。