從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