特点:
snapshot standby database 会从主库接收和归档 redo data,但是不会对redo data进行apply。 仅当snapshot standby 的角色转换回physical standby database 的时候才会应用之前接收的apply 文件。 然后擦除作为snapshot standby 数据库时所有的DML和DDL操作。
限制:
(1)Snapshot standby 数据库不能进行switchover 或者failover 操作。 在转换之前,也必须先从snapshot standby 转换成physical standby 以后才可以转换。
(2)Snapshot standby 不支持最大保护模式。(原因:最大保护需要real time applied)
优点:
想做测试,主库不能操作,可以将备库转为快照备库,做完测试,再转为物理备库。
将Physical Standby转成Snapshot Standby Database :
流程:
2. 确保fast recovery area已经配置(确保大小合适),但不需要启动flashback database功能。
SQL> show parameter flashback
NAME TYPE VALUE
------------------------------------ ----------- --------------------
db_flashback_retention_target integer 1440
SQL> show parameter db_recover
NAME TYPE VALUE
------------------------------------ ----------- --------
db_recovery_file_dest string +FLASH
db_recovery_file_dest_size big integer 3882M
-- 如果大小合适,不用调整大小
SQL> alter system set db_recovery_file_dest_size=10g scope=both;
System altered.
停止Redo Apply
SQL> alter database recover managed standby database cancel;
3. 备库进行切换
SQL> ALTER DATABASE CONVERT TO SNAPSHOT STANDBY;
Database altered.
SQL> select open_mode from v$database;
OPEN_MODE
--------------------
MOUNTED
说明:备库的 alert 日志里面有详细记录,启动了一个后台进程:RVWR ,创建了一个guaranteed 的resotre point,
进行了resetlogs 的操作 。
SQL> alter database open;
Database altered.
SQL> select open_mode from v$database;
OPEN_MODE
--------------------
READ WRITE
--模拟测试
SQL> create table andysnap (id int);
Table created.
SQL> insert into andysnap values(1);
1 row created.
4. 主库日志切换,看日志是否正常传递到备库,且没有应用。
SQL> alter system switch logfile;
System altered.
备库查看
SQL> select thread#,sequence#,applied from v$archived_log;
。。。。
1 78 NO
5. 测试完毕,将 Snapshot Standby 转成 Physical Standby
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database convert to physical standby;
Database altered.
说明: 备库 alert 有详细记录 ,转换的过程相当于 Flashback restore , 并 drop 掉restore point 。
SQL> shutdown immediate;
SQL> startup;
SQL> alter database recover managed standby database using current logfile disconnect from session;
Database altered.
6. 检测主备同步情况
主库:
SQL> select max(sequence#) from v$archived_log;
MAX(SEQUENCE#)
--------------
78
备库:
SQL> select sequence#,applied from v$archived_log;
。。。。。
78 IN-MEMORY
71 rows selected.