在oracle 10g中實現oracle 11g的snapshot standby特性

selectshen發表於2015-08-10
oracle 11g中的snapshot standby可參考:http://blog.itpub.net/28539951/viewspace-1767427/
snapshot standby是在oracle 11g才有的特性,大概是透過還原點(restore point)和閃回資料庫的原理(flashback database),可以以讀/寫方式開啟物理備用資料庫,對資料庫進行修改,之後再根據還原點,恢復到物理備用資料庫.oracle 10g也有閃回資料庫和還原點的功能,所以雖然不能象11g中直接透過convert就可以方便的轉換,但實現方法也比較容易.
以下測試:
一:物理備用資料庫到類似快照資料庫
--檢視當前備用資料庫的角色
SQL> select open_mode,database_role from v$database;

OPEN_MODE            DATABASE_ROLE
-------------------- ----------------
MOUNTED              PHYSICAL STANDBY

--設定閃回恢復區,用於儲存在還原點切換之後的變更
SQL> alter system set db_recovery_file_dest='/u01/app/oracle/fast_recovery_area';

System altered.

SQL> alter system set  db_recovery_file_dest_size=4182M;

System altered.
--取消物理standby的redo應用
SQL> alter database recover managed standby database cancel;

Database altered.
--建立還原點
SQL> create restore point standby_point01 guarantee flashback database;

Restore point created.
--物理standby轉換為讀寫資料庫
SQL> alter database activate standby database;

Database altered.

SQL> alter database open;

Database altered.
--檢視當前備用資料庫的角色
SQL> select open_mode,database_role from v$database;

OPEN_MODE            DATABASE_ROLE
-------------------- ----------------
READ WRITE           PRIMARY

二:類似快照資料庫到物理備用資料庫
--關閉並啟動到mount
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.

Total System Global Area  730714112 bytes
Fixed Size                  2256832 bytes
Variable Size             482345024 bytes
Database Buffers          243269632 bytes
Redo Buffers                2842624 bytes
Database mounted.
--重新轉回到物理standby
SQL> flashback database  to restore point standby_point01;

Flashback complete.

SQL> alter database convert to physical standby;

--關閉並啟動到mount
Database altered.
SQL> shutdown immediate;
ORA-01507: database not mounted


ORACLE instance shut down.

SQL> startup mount;
ORACLE instance started.

Total System Global Area  730714112 bytes
Fixed Size                  2256832 bytes
Variable Size             482345024 bytes
Database Buffers          243269632 bytes
Redo Buffers                2842624 bytes
Database mounted.
--啟動物理standby的redo應用
SQL> alter database recover managed standby database disconnect from session;

Database altered.
--刪除還原點
SQL> drop restore point standby_point01;

Restore point dropped.

備註:
物理standby是最高保護模式(maximum protection),是不能轉換為snapshot standby的.
物理standby使用了standby redo log,在create restore point後,要alter system switch logfile;,以保證還原點
的scn在物理standby庫上是歸檔的,不然可能無法成功閃回到還原點.
物理standby在切換為類似快照standby後,如果間隔很長時間,primary資料庫產生的大量的重做日誌,這樣可以在轉換為物理standby後,透過對primary資料庫的增量備份並recover到物理standby,來加快物理standby的還原速度.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28539951/viewspace-1767431/,如需轉載,請註明出處,否則將追究法律責任。

相關文章