从Oracle10g开始,physical standby也可以临时的置于read/write状态,以便用于开发,测试以及做报表等,然后再通过flashback到先前的时间点,继续应用主库的归档。

  下面通过一个实验演示整个过程:

  1.设置闪回恢复区

  SQL> alter system set db_recovery_file_dest_size=2G;

  系统已更改。

  SQL> alter system set db_recovery_file_dest='e:/oracle/back';

  系统已更改。

  2.取消备库的自动恢复状态

  SQL> alter database recover managed standby database cancel;

  数据库已更改。

  3.创建一个还原点

  SQL> create restore point restore_point_test guarantee flashback database;

  还原点已创建。

  4.在主库归档当前日志,确保前一步创建还原点的scn的归档日志已经传到备库

  SQL> alter system archive log current;

  系统已更改。

  5.将主库到备库的归档目的地的状态设置为defer

  SQL> alter system set log_archive_dest_state_2=defer;

  系统已更改。

  6.激活备库到read/write状态

  SQL> alter database activate standby database;

  数据库已更改。

  SQL> alter database open;

  数据库已更改。

    7.此时可以在备库执行需要的读写操作

  SQL> create table t1 as select * from all_objects where rownum<101;

  表已创建。

  SQL> drop table t1;

  表已删除。

  8.将数据库flashback回原来保存的还原点

  SQL> startup mount force;

  ORACLE 例程已经启动。

 

  Total System Global Area 142606336 bytes
  Fixed Size 1247732 bytes
  Variable Size 83887628 bytes
  Database Buffers 50331648 bytes
  Redo Buffers 7139328 bytes


  数据库装载完毕。

  SQL> flashback database to restore point restore_point_test;

  闪回完成。

  9.转换成备库

  SQL> alter database convert to physical standby;

  数据库已更改。

  10.将备库至于自动恢复状态

  SQL> startup mount force;

  ORACLE 例程已经启动。

 

  Total System Global Area 142606336 bytes
  Fixed Size 1247732 bytes
  Variable Size 83887628 bytes
  Database Buffers 50331648 bytes
  Redo Buffers 7139328 bytes


  数据库装载完毕。
    SQL> alter database recover managed standby database disconnect from session;

  数据库已更改。

  11.将主库到备库的归档目的地的状态设置为enable

  SQL> alter system set log_archive_dest_state_2=enable;

  系统已更改。

  12.检查主备库,状态正常

  主库检查归档目的状态

 

  SQL> select dest_name,status from v$archive_dest;
  DEST_NAME STATUS
  ------------------------------ ------------------
  LOG_ARCHIVE_DEST_1 VALID
  LOG_ARCHIVE_DEST_2 VALID
  LOG_ARCHIVE_DEST_3 INACTIVE
  LOG_ARCHIVE_DEST_4 INACTIVE
  LOG_ARCHIVE_DEST_5 INACTIVE
  LOG_ARCHIVE_DEST_6 INACTIVE
  LOG_ARCHIVE_DEST_7 INACTIVE
  LOG_ARCHIVE_DEST_8 INACTIVE
  LOG_ARCHIVE_DEST_9 INACTIVE
  LOG_ARCHIVE_DEST_10 INACTIVE


  已选择10行。

  备库检查相关进程

  SQL> select process,status from v$managed_standby;
  PROCESS STATUS
  ------------------ ------------------------
  ARCH CONNECTED
  ARCH CONNECTED
  MRP0 WAIT_FOR_LOG
  RFS IDLE