oracle 11g中的snapshot standby可参考:http://blog.itpub.net/28539951/viewspace-1767427/
snapshot standby是在oracle 11g才有的特性,大概是通过还原点(restore point)和闪回数据库的原理(flashback database),可以以读/写方式打开物理备用数据库,对数据库进行修改,之后再根据还原点,恢复到物理备用数据库.oracle 10g也有闪回数据库和还原点的功能,所以虽然不能象11g中直接通过convert就可以方便的转换,但实现方法也比较容易.
以下测试:
一:物理备用数据库到类似快照数据库
--查看当前备用数据库的角色
SQL> select open_mode,database_role from v$database;
OPEN_MODE DATABASE_ROLE
-------------------- ----------------
MOUNTED PHYSICAL STANDBY
--设置闪回恢复区,用于存储在还原点切换之后的变更
SQL> alter system set db_recovery_file_dest='/u01/app/oracle/fast_recovery_area';
System altered.
SQL> alter system set db_recovery_file_dest_size=4182M;
System altered.
--取消物理standby的redo应用
SQL> alter database recover managed standby database cancel;
Database altered.
--创建还原点
SQL> create restore point standby_point01 guarantee flashback database;
Restore point created.
--物理standby转换为读写数据库
SQL> alter database activate standby database;
Database altered.
SQL> alter database open;
Database altered.
--查看当前备用数据库的角色
SQL> select open_mode,database_role from v$database;
OPEN_MODE DATABASE_ROLE
-------------------- ----------------
READ WRITE PRIMARY
二:类似快照数据库到物理备用数据库
--关闭并启动到mount
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 730714112 bytes
Fixed Size 2256832 bytes
Variable Size 482345024 bytes
Database Buffers 243269632 bytes
Redo Buffers 2842624 bytes
Database mounted.
--重新转回到物理standby
SQL> flashback database to restore point standby_point01;
Flashback complete.
SQL> alter database convert to physical standby;
--关闭并启动到mount
Database altered.
SQL> shutdown immediate;
ORA-01507: database not mounted
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 730714112 bytes
Fixed Size 2256832 bytes
Variable Size 482345024 bytes
Database Buffers 243269632 bytes
Redo Buffers 2842624 bytes
Database mounted.
--启动物理standby的redo应用
SQL> alter database recover managed standby database disconnect from session;
Database altered.
--删除还原点
SQL> drop restore point standby_point01;
Restore point dropped.
备注:
物理standby是最高保护模式(maximum protection),是不能转换为snapshot standby的.
物理standby使用了standby redo log,在create restore point后,要alter system switch logfile;,以保证还原点
的scn在物理standby库上是归档的,不然可能无法成功闪回到还原点.
物理standby在切换为类似快照standby后,如果间隔很长时间,primary数据库产生的大量的重做日志,这样可以在转换为物理standby后,通过对primary数据库的增量备份并recover到物理standby,来加快物理standby的还原速度.