从Oracleg开始physical standby也可以临时的置于read/write状态以便用于开发测试以及做报表等然后再通过flashback到先前的时间点继续应用主库的归档
下面通过一个实验演示整个过程
设置闪回恢复区
SQL> alter system set db_recovery_file_dest_size=G;
系统已更改
SQL> alter system set db_recovery_file_dest=e:/oracle/back;
系统已更改
取消备库的自动恢复状态
SQL> alter database recover managed standby database cancel;
数据库已更改
创建一个还原点
SQL> create restore point restore_point_test guarantee flashback database;
还原点已创建
在主库归档当前日志确保前一步创建还原点的scn的归档日志已经传到备库
SQL> alter system archive log current;
系统已更改
将主库到备库的归档目的地的状态设置为defer
SQL> alter system set log_archive_dest_state_=defer;
系统已更改
激活备库到read/write状态
SQL> alter database activate standby database;
数据库已更改
SQL> alter database open;
数据库已更改
此时可以在备库执行需要的读写操作
SQL> create table t as select * from all_objects where rownum<;
表已创建
SQL> drop table t;
表已删除
将数据库flashback回原来保存的还原点
SQL> startup mount force;
ORACLE 例程已经启动
Total System Global Area bytes
Fixed Size bytes
Variable Size bytes
Database Buffers bytes
Redo Buffers bytes
数据库装载完毕
SQL> flashback database to restore point restore_point_test;
闪回完成
转换成备库
SQL> alter database convert to physical standby;
数据库已更改
将备库至于自动恢复状态
SQL> startup mount force;
ORACLE 例程已经启动
Total System Global Area bytes
Fixed Size bytes
Variable Size bytes
Database Buffers bytes
Redo Buffers bytes
数据库装载完毕
SQL> alter database recover managed standby database disconnect from session;
数据库已更改
将主库到备库的归档目的地的状态设置为enable
SQL> alter system set log_archive_dest_state_=enable;
系统已更改
检查主备库状态正常
主库检查归档目的状态
SQL> select dest_namestatus from v$archive_dest;
DEST_NAME STATUS
LOG_ARCHIVE_DEST_ VALID
LOG_ARCHIVE_DEST_ VALID
LOG_ARCHIVE_DEST_ INACTIVE
LOG_ARCHIVE_DEST_ INACTIVE
LOG_ARCHIVE_DEST_ INACTIVE
LOG_ARCHIVE_DEST_ INACTIVE
LOG_ARCHIVE_DEST_ INACTIVE
LOG_ARCHIVE_DEST_ INACTIVE
LOG_ARCHIVE_DEST_ INACTIVE
LOG_ARCHIVE_DEST_ INACTIVE
已选择行
备库检查相关进程
SQL> select processstatus from v$managed_standby;
PROCESS STATUS
ARCH CONNECTED
ARCH CONNECTED
MRP WAIT_FOR_LOG
RFS IDLE