Oracle 11g引入Snapshot Standby,允许standby database以read-write模式打开。当切换回standby模式,所有在read-write模式的修改都丢失。它是通过flashback database实现,但是standby database不需要显式启用flashback database。

如果使用RAC,关闭所有其他实例,而保留一个实例。确保实例在mount模式。
shutdown immediate;
startup mount;

1.关闭managed recovery
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

2.转换standby为一个snapshot standby。

SELECT flashback_on FROM v$database;

FLASHBACK_ON
------------------
NO

ALTER DATABASE CONVERT TO SNAPSHOT STANDBY;
ALTER DATABASE OPEN;
SELECT flashback_on FROM v$database;

FLASHBACK_ON
------------------
RESTORE POINT ONLY

完成后,你可以像任何read-write数据库一样对待standby。

3.将standby转换回physical standby,丢失所有转换为snapshot standby后的修改。

SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE CONVERT TO PHYSICAL STANDBY;
SHUTDOWN IMMEDIATE;
STARTUP NOMOUNT;
ALTER DATABASE MOUNT STANDBY DATABASE;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;
SELECT flashback_on FROM v$database;

FLASHBACK_ON
------------------
NO

现在,standby又回到了managed recovery,归档日志的传输也恢复了。
注意,flashback database仍然没有开启。