[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:oradatapriarch

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:oradatasdb2arch

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:oradatapridgSTANDBYRD01.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;