[Oracle][Data Guard]Oracle 10g DG第二章Understanding the oracle DG architecture

Oracle 10g DG第二章Understanding the oracle DG architecture

小弟認為了解架構是一件很重要的事,因當有know how知識又具備know why精神,我想不管遇到任何事情都難不倒自己的。

文章均為自己見解,如有錯誤還請指教

事前確認事項

Hardware and Operatin System限制

*同一個DG中所有的ORACLE DB的OS須同一平台。

*不同的DB 硬體可以不同 如CPU 記憶體 硬碟大小數量等,但是須確保

standby DB有足夠的硬碟空間來接收和應用Redo log。

Oracle databse software限制

* DG只有ORACLE 企業版才有的特性。

*sys accounts密碼須相同。

*每個DB有各自controlfile。

*primary and standby must archivelog mode。

*primary enable force logging(alter database force logging)。

*primary為ASM/OMF那麼standby也要ASM/OMF。

 

 

DG架構

clip_image002

Log writer(LGWR)process:收集transaction redo information and updates the online redo logs and standby redo logs。

Archiver(ARCn) process: 預設情況下,redo傳輸服務使用ARCn歸檔redo日誌(primary db switch logfile就會啟動)。

Remote file server(RFS) process:接收primary db redo informatino。

Fetch archive log(FAL):當archivelog失敗或中斷,DG會自動解決處理就是靠這參數。Fal_server接收fal_client請求,fal_client主動要求再傳送。

Managed recovery process(MRP):physical standby only。Apply archivelog

Logical standby process(LSP):logical standby only。

 

參數介紹

DB_UNIQUE_NAME:DG中所有DB_NAME需要相同,但DB_UNIQUE_NAME在同一機器上一定要不同。

VAILD_FOR:指定傳輸archivelog對象。

Primary.ora

*.LOG_ARCHIVE_DEST_1='LOCATION=D:\oradata\priarch

VALID_FOR=(ALL_LOGFILES,ALL_ROLES)

DB_UNIQUE_NAME=pridg'

*.LOG_ARCHIVE_DEST_2='SERVICE=sdb2 LGWR ASYNC

VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)

DB_UNIQUE_NAME=sdb2'

Standby.ora

*.LOG_ARCHIVE_DEST_1='LOCATION=D:\oradata\sdb2arch

VALID_FOR=(ALL_LOGFILES,ALL_ROLES)

DB_UNIQUE_NAME=sdb2'

*.LOG_ARCHIVE_DEST_2='SERVICE=pridg LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)

DB_UNIQUE_NAME=pridg'

Only one invalid:standby_logfile,primary_role

 

Standby redo log configuration

*enable即時應用

*size建議和online redo log一樣(方便接收)

*oracle推薦最好建立(primary and standby)

*接收primary redo data,online redo log則是紀錄本機操作紀錄

*建立方式可透過EM和SQL

add

Alter database add standby logfile group 4(‘d:\oradata\pridg\STANDBYRD01.log’) size 50M;

Delete

Alter database drop standby logfile group 4;

Check standby redo log

SELECT GROUP#,THREAD#,SEQUENCE#,ARCHIVED,STATUS FROM V$STANDBY_LOG;