从Oracle 10g开始,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 |