在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
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/4093.html
標籤:Oracle
