为什么要多一组
跟上应用日志的步伐.很特殊的情况下.
比如写日志很快3个很快写满.这样可能dg端的std也是3个写满,这样无法接收日志.应该来不及应用.而多一个就不会出现这样的情况.
当主库的日志文件1写满的时候 切换到2 然后触发归档 写redo的速度大于了归档的速度 所以当三个日志写满的时候 备库的三个日志也是满的 且正在归档 无法被覆盖 多一个就会减少日志等待的性能问题 是吗?
Dataguard 分类:
Physical Standby(Redo Apply)
Logical Standby(SQL Apply)
Dataguard 保护模式:
maximize performance(最大性能模式)
maximize availability(最大可用模式)
maximize protection(最大保护模式)
Online redo log
存放着在线事务未归档的更改信息,主库肯定是要配置的。
如果是Physical Standby,对于备库无法open read write,所以备库而言online redo log几乎无用,但是考虑到备库随时可能切换为主库,就必须配置online redo log;
如果是Logical Standby,备库可以open read write,所以必须配置online redo log.
Standby redo log
备库的remote file server(RFS)进程接收到主库传过来的redo data,然后写到standby redo log中,standby redo log的作用类似于主库的online redo log,只是他存在
于备库,只存放主库传过来的redo data.在考虑主库可能会切换为备库的情况下,主库也需要配置standby redo log.
在下面三种情况备库配置必须standby redo log:
1)在最大保护和最大可用模式下
2)在实时应用情况下
3)配置级联dataguard情况下
Standby redo log日志的配置原则:
和主库online redo log大小一致,组数至少比主库online redo log组多一组
在Data Guard环境中,Standby Redo Log是一个比较特殊的日志类型。从最新的DG安装指导中,都推荐在Primary和Standby端,都配置Standby Redo Log。
简单的说,Standby Redo Log就是在Standby端应用传递Redo Log过程中,逐步执行的online redo log。Standby端虽然也有online redo log,但是在redo apply应用的过程中,是不使用online redo log的。即使是11g Active Data Guard支持apply中读取standby数据,这个操作也是read-only的,并不涉及当前实例redo log的生成(注意是生成)。所以,如果一直是在Standby角色,online redo log是不需要的。
Primary传递过来的redo log信息,是存放在standby redo log组内进行apply的。并且随着主库Primary日志的切换动作而切换。这也就是为什么推荐standby redo log的大小和Primary online redo log的大小保持一致的原因。
单机情况下
所有redo_log组数+1
RAC环境下
所有redo log组数+实例数
正常情况下,一般每个实例的redo log组数目是一样的,比如为你,则standbby redo log组数为(n+1)*thread
假如有个rac共三个实例,每个实例都是3个log组,那么如果要做dg的standby log要增加12个standby loggroup
(3+1)*3=12
假如有个rac共三个实例,实例1有3个log组,实例2有4个log组,实例3有5个log组,总共有12个log组,那么如果要做dg的standby log要增加15个standby loggroup
所有redo log组数+实例数=(3+4+5)+3=15
-----SRL
前段时间搭建了一个测试库,主库是双节点rac,备库是单实例。
最近开发测试,老反应主备数据不同步。
检查主备参数配置的都没问题。最后通过dataguard日志,终于找出问题所在。
1 Log Apply Services Informational 0 1888 0 NO 2015-08-06 23:26:02 Media Recovery Log /u01/app/oracle/arch/2_1046_884367293.arc
1 Log Apply Services Warning 0 1889 0 NO 2015-08-06 23:26:03 Media Recovery Waiting for thread 2 sequence 1047 (in transit)
1 Remote File Server Warning 0 1890 0 NO 2015-08-06 23:27:02 RFS[79]: No standby redo logfiles created for thread 2
可以看到,日志报 没有创建thread 2的standby redo logfiles。
为备库添加上thread 2的standby logfile问题就解决了。
alter database add standby logfile thread 2 group 21 size 50M;
alter database add standby logfile thread 2 group 22 size 50M;
alter database add standby logfile thread 2 group 23 size 50M;
alter database add standby logfile thread 2 group 24 size 50M;
原来一直以为rac的单实例备库只需要thread 1的standby logfile,看来这个想法是严重错误的。
rac有几个节点,就要创建几个thread standby logfile。