【12c】數據庫閃回與Data Guard

在Data Guard環境中可以利用數據庫的閃回特性將備庫以讀寫模式打開,用於執行對主數據庫的某種測試工作,當測試完畢後,再將數據庫閃回到之前的狀態,作爲備份繼續提供保護服務。

1 在備庫閃回數據庫

1)取消備庫託管恢復

SQL> alter database recover managed standby database cancel;



Database altered.

2)設置備庫的閃回恢復區

SQL> show parameter db_recover



NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

db_recovery_file_dest string /u01/app/oracle/fast_recovery_

area

db_recovery_file_dest_size big integer 4560M

3)啓動閃回特性

SQL> startup mount

ORACLE instance started.



Total System Global Area 1644167168 bytes

Fixed Size 2925024 bytes

Variable Size 1073745440 bytes

Database Buffers 553648128 bytes

Redo Buffers 13848576 bytes

Database mounted.

SQL> alter database flashback on;



Database altered.



SQL> select flashback_on from v$database;



FLASHBACK_ON

------------------

YES

4)創建一個保證還原點

SQL> create restore point before_opem_rw guarantee flashback database;



Restore point created.

5)將主庫向備庫傳輸日誌的目標目的地設置爲延遲狀態

SQL> show parameter log_archive_dest_2



NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

log_archive_dest_2 string SERVICE=shhai LGWR ASYNC

VALID_FOR=(ONLINE_LOGFILES,P

RIMARY_ROLE)

DB_UNIQUE_NAME=orcldg

SQL> show parameter log_archive_dest_state_2



NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

log_archive_dest_state_2 string ENABLE

SQL> alter system set log_archive_dest_state_2='defer';



System altered.

6)激活物理備庫,將備庫轉換爲獨立的數據庫運行

SQL> alter database activate physical standby database;



Database altered.

SQL> alter database open;



Database altered.



SQL> select database_role,open_mode,flashback_on from v$database;



DATABASE_ROLE OPEN_MODE FLASHBACK_ON

---------------- -------------------- ------------------

PRIMARY READ WRITE YES

7)在激活後的備庫執行測試等各種操作

8)測試完畢,將數據庫閃回到保證還原點

SQL> shutdown abort

ORACLE instance shut down.

SQL> startup mount

ORACLE instance started.



Total System Global Area 1644167168 bytes

Fixed Size 2925024 bytes

Variable Size 1073745440 bytes

Database Buffers 553648128 bytes

Redo Buffers 13848576 bytes

Database mounted.

SQL> flashback database to restore point before_opem_rw;



Flashback complete.

SQL> select database_role,open_mode,flashback_on from v$database;



DATABASE_ROLE OPEN_MODE FLASHBACK_ON

---------------- -------------------- ------------------

PRIMARY MOUNTED YES

此時,數據庫仍然使獨立的數據庫,只是狀態回到了還原點。

9)將數據庫轉換爲備庫

SQL> alter database convert to physical standby ;



Database altered.



SQL> select database_role,open_mode,flashback_on from v$database;



DATABASE_ROLE OPEN_MODE FLASHBACK_ON

---------------- -------------------- ------------------

PHYSICAL STANDBY MOUNTED YES



SQL> alter database open;



Database altered.

10)在主庫啓用向備庫的日誌傳輸

SQL> alter system set log_archive_dest_state_2='enable';



System altered.

11)啓動物理備庫的日誌應用

SQL> alter database recover managed standby database disconnect from session;



Database altered.



SQL> select database_role,open_mode,flashback_on from v$database;



DATABASE_ROLE OPEN_MODE FLASHBACK_ON

---------------- -------------------- ------------------

PHYSICAL STANDBY READ ONLY WITH APPLY YES

上述演示展示了創建還原點將備庫激活,以讀寫模式打開,進行一系列的測試,並利用閃回技術還原,之後再將其轉爲備庫,整個過程比較繁瑣,並且再備庫以讀寫模式打開後,實際上是作爲一個獨立的數據庫存在,但這個期間數據庫停止接收了來自主庫的重做日誌,這在一定程度上就失去了對主庫的保護,那麼有沒有一種方法,在使備庫處於讀寫狀態時,可以繼續接收重做日誌,只是不應用?

快照數據庫(Snapshot standby database)可以做到,下面將進行演示。

2 快照備用數據庫

1)取消備庫託管恢復

SQL> alter database recover managed standby database cancel;



Database altered.

2)將備庫轉換爲快照數據庫

SQL> alter database convert to snapshot standby;



Database altered.

SQL> select database_role,open_mode,flashback_on from v$database;



DATABASE_ROLE OPEN_MODE FLASHBACK_ON

---------------- -------------------- ------------------

SNAPSHOT STANDBY MOUNTED YES

3)打開數據庫

SQL> alter database open;



Database altered.



SQL> select database_role,open_mode,flashback_on from v$database;



DATABASE_ROLE OPEN_MODE FLASHBACK_ON

---------------- -------------------- ------------------

SNAPSHOT STANDBY READ WRITE YES

4)在快照數據庫執行一系列的測試等操作;

5)轉換快照數據庫爲物理備庫

SQL> shutdown abort

ORACLE instance shut down.

SQL> startup mount

ORACLE instance started.



Total System Global Area 1644167168 bytes

Fixed Size 2925024 bytes

Variable Size 1073745440 bytes

Database Buffers 553648128 bytes

Redo Buffers 13848576 bytes

Database mounted.

SQL> alter database convert to physical standby;



Database altered.



SQL> alter database open;



Database altered.

6)備庫開啓託管恢復

SQL> alter database recover managed standby database disconnect from session;



Database altered.

7)主庫修改數據

SQL> update scott.emp set comm=1000 where empno=7369;



1 row updated.



SQL> commit;



Commit complete.



SQL> select * from scott.emp where empno=7369;



EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO

---------- ---------- --------- ---------- --------- ---------- ---------- ----------

7369 SMITH CLERK 7902 17-DEC-80 800 1000 20

8)備庫驗證,一致。

SQL> select * from scott.emp where empno=7369;



EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO

---------- ---------- --------- ---------- --------- ---------- ---------- ----------

7369 SMITH CLERK 7902 17-DEC-80 800 1000 20

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章