在Dataguard中,能夠將standby備庫切換爲snapshot快照數據庫,在切換爲snapshot數據庫後,備庫將置於可讀寫的模式。可用於模擬業務功能測試。在使用完成以後,能夠將快照數據庫切換爲物理備庫。在此期間,備庫能夠接受主庫傳輸過來的日誌,可是不能應用日誌,須要處於物理備庫的時候才能夠應用。
數據庫
(一)將物理備庫切換爲快照數據庫
1.備庫配置快速恢復區
oracle
alter system set db_recovery_file_dest_size=10g; alter system set db_recovery_file_dest='/u01/app/oracle/fast_recovery_area/adgdb';
2.備庫關閉redo apply應用
app
--在關閉以前,備庫的開啓狀態爲:READ ONLY WITH APPLY --關閉redo apply後,備庫的開啓狀態爲:READ ONLY alter database recover managed standby database cancel;
3.切換爲快照數據庫
測試
--執行轉換爲快照數據庫後,備庫的開啓狀態爲:MOUNTED alter database convert to snapshot standby; --開啓備庫後,數據庫開啓狀態爲:READ WRITE alter database open;
查看狀態:
spa
SQL> select open_mode,database_role,protection_mode,protection_level from v$database; OPEN_MODE DATABASE_ROLE PROTECTION_MODE PROTECTION_LEVEL -------------------- ---------------- -------------------- -------------------- READ WRITE SNAPSHOT STANDBY MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY
在快照數據庫上進行讀寫操做,發現不只能夠讀,還能夠寫入數據
日誌
SQL> select * from lijiaman.test01; ID NAME ---------- -------------------- 1 lijiaman 2 gegeman 3 man 4 a SQL> insert into lijiaman.test01 values(5,'b'); 1 row created. SQL> commit; Commit complete.
(二)將快照數據庫切回物理備庫
1.關閉備庫,將備庫啓動到mount狀態
code
shutdown immediate start mount
2.執行切回命令
blog
alter database convert to physical standby;
3.再次關閉備庫,啓動到open狀態,開啓實時應用
it
--關閉備庫 shutdown immediate --啓動數據庫到open狀態 startup --開始備庫實時應用 alter database recover managed standby database using current logfile disconnect;
4.查看備庫狀態
io
SQL> select name,open_mode,database_role,protection_mode from v$database; NAME OPEN_MODE DATABASE_ROLE PROTECTION_MODE --------- -------------------- ---------------- -------------------- ADGDB READ ONLY WITH APPLY PHYSICAL STANDBY MAXIMUM AVAILABILITY
5.這個時候,再回去查看test01表信息,發現處於snapshot數據庫時insert的數據已經不存在
SQL> select * from lijiaman.test01; ID NAME ---------- -------------------- 1 lijiaman 2 gegeman 3 man 4 a
【完】