Active Data Guard


ADG INTRODUCE

Active Data Guard(ADG)是ORACLE 11g企業版的新特性,需要單獨的License.可以打開Physical standby至read only模式,standby可以用來做報表系統、查詢、排序或Web站點。實時讀寫分離,以此來分擔primary DB的壓力。

 

ADG可以部署在多種商業應用環境中,如:

·通信行業:Schedules服務,自助查詢服務。

·醫療行業:快速訪問最新的醫療記錄。

·金融管理行業:自助查詢和報表。

·運輸行業:包裹跟蹤,訂單狀態查詢。

·商業網站:目錄瀏覽,訂單狀態,售后產品Reader Farms.

 

ADG特性:

1.實時查詢特性,可以打開Physical standby值read only模式並實時應用redo data.

2.啟用RMAN block-change tracking。用戶利用RMAN在primary的增量備份恢復到standby,性能最高可提升20倍。

 

Database只讀模式下允許的操作:

·SELECT操作,包括需要大量臨時段的查詢

·ALTER SESSION,ALTER SYSTEM

·SET ROLE

·調用Procedure

·使用DBLINK寫數據到遠程數據庫

·通過DBLINK調用遠程數據庫的Procedure

·在事務級別讀一致性使用SET TRANSACTION READ ONLY

·執行復雜的查詢,如:GROUPING SET,WITH查詢語句等

Database只讀模式下不允許的操作:

·任何DML或DDL操作

·訪問本地序列的查詢

·對本地臨時表的DML操作

 

ADG的先決條件:

1.ADG選項的license

2.參數COMPATIBLE>=11.0.0

ADG DETAILS

如何檢查當前是否啟用ADG

SQL> select database_role ,open_mode from v$database;

 

DATABASE_ROLE      OPEN_MODE

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

PHYSICAL STANDBY   READ ONLY WITH APPLY

啟用ADG

SQL> alter database open read only;

SQL> recover managed standby database disconnect using current logfile;

 

注:AUDIT_TRAIL參數在數據庫打開時可用,read only的standby不支持update,如果AUDIT_TRAIL=DB,則在DB以read only模式打開后,AUDIT_TRAIL參數值會后台轉換為OS.

Standby為RAC時,如果應用redo的實例down掉,為保護數據的一致性,ORACLE會關閉其余OPEN READ ONLY的時候至MOUNT狀態,需要手工啟用另外的實例應用redo.

評估應用是否適合read-only database

參考文檔:

Note:1206774.1 - EVENT: 3177 "enable logging of read-only violations"

ADG LAG

standby由於以下的原因可能產生延遲:

- CPU處理能力不足

- 高網絡延遲

- 帶寬限制

 

監控LAG:

V$DATAGUARD_STATS

V$STANDBY_EVENT_HISTOGRAM

 

監控redo apply性能:

V$RECOVERY_PROGRESS

 

Transport Lag:

SQL> select * from v$dataguard_stats where name='transport lag';

Apply lag:

SQL> select * from v$dataguard_stats where name='apply lag';

 

查詢SCN實時比較primary和standby的LAG:

SQL> create database link standby connect to system identified by 'oracle' using 'standby';

SQL> select scn_to_timestamp((select current_scn from v$database))-scn_to_timestamp((select current_scn from v$database@standby)) LAG from dual;

 

STANDBY_MAX_DATA_DELAT參數:

STANDBY_MAX_DATA_DELAT={INTERGE|NONE},默認NONE,單位:秒,用來指定可容忍的LAG限定,參數為會話級,對SYS用戶無效。

如果standby查詢超出指定的時間,拋出ORA-3172 STANDBY_MAX_DATA_DELAY has been exceeded.

 

 

創建一個trigger,在用戶登錄時觸發設定該參數:

create or replace trigger adg_logon_trigger after logon on app.schema

begin

if (sys_context('userenv', 'database_role') in ('PHYSICAL STANDBY'))

then

execute immediate 'alter session set standby_max_data_delay=5';

endif;

end;

 

強制redo apply同步:

SQL> alter session sync with primary;

執行此命令后,將會阻塞應用直到standby與primary同步。

 

創建一個trigger強制用戶登錄后同步redo apply:

create trigger adg_logon_sync_trigger after logon on user.schema

begin

if (sys_context('userenv','database_role') in ('PHYSICAL STANDBY'))

then

execute immediate 'alter session sync with primary';

end if;

end;

性能提升

11g ADG的性能比10g提升了許多,oracle內部做了一些優化,介質恢復在symmetric multiprocessing (SMP) systems也比之前版本快了許多。

性能提升包括以下幾點:

- 更多的並行

- 更高效的異步redo讀取、解析和應用

- 減少同步點並行應用算法

- redo log介質恢復時不再阻塞應用下一組日志

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM