DG有下面三种模式
– Maximum protection
– Maximum availability
– Maximum
performance
在Maximum protection下, 可以保证从库和主库数据完全一样,做到zero data
loss.事务同时在主从两边提交完成,才算事务完成。如果从库宕机或者网络出现问题,主从库不能通讯,主库也立即宕机。在这种方式下,具有最高的保护等级。但是这种模式对主库性能影响很大,要求高速的网络连接。
在Maximum availability模式下,如果和从库的连接正常,运行方式等同Maximum
protection模式,事务也是主从库同时提交。如果从库和主库失去联系,则主库自动切换到Maximum
performance模式下运行,保证主库具有最大的可用性。
在Maximum performance,主库把归档的 archived
log通过arch进程传递给从库,在这种方式下,主库运行性能最高,但是不能保证数据不丢失,且丢失的数据受redo log的大小影响。在redo
log过大的情况下,可能一天都没有归档一个日志,可以通过手工切换日志的方式来减小数据的丢失。
大家在做dataguard database 的时候一般选择什么样的模式?
目前国内基本上是最大性能模式,其他模式会整死你
Maximum availability觉得也挺好的,如果网络没有问题,和Maximum protection一样,如果网络不好和Maximum
performance一样
首先Maximum protection在只有一台standby database
的情况下一般不会使用的,一方面对主库的性能影响比较的大,一方面要保证快速安全的网络速度,如果网络断开或者standby database
失效的话,那么会引起主库的down机,虽然说可以最大保护数据,但是还是不安全,如果有多台standby database 的话可以考虑
Maximum
performance;虽然对主库的性能影响不大,但是对数据的保护不好啊,9i一般日志默认大小是100M,如果主库的磁盘全不坏了,那至少要损失100m
的日志数据啊,这就起不到保护数据的作用
现在比较好的就是Maximum availability,在正常情况下运行在Maximum protection下,如果网络或者standby
dababase 有问题的时候会自动切换到Maximum performance下,但是我在测试的时候发现如果我把standby 以read only open
的时候发现主库就不传送日志了,stanndby database 就失效了
我用Maximum performance模式.
我认为要看生产需要,不同的应用需求不一样,我们的库就是不能宕,所以就不可能使用保护模式了,呵呵
觉得Maximum protection切换比较麻烦,以前忙了好半天才切换成功
还是用第三种模式吧!成熟!
这个应该关键还是看需要吧,客户允许宕机时间,允许数据丢失多少,客户现有机器设备条件都要综合考虑的。没有最好,只有最合适
呵呵比较好的一种方式是使用Max performance 但是 log transfer 使用LGWR ASYNC
NOAFFIRM
这样,在保证性能的情况下,在standby处保留了一份redo
log,虽然在Crash时仍然可能会丢失数据,但是可以控制在一定范围内……
不过,使用LGWR时,虽然使用Max performance
,在standby 异常down的时候,仍然有可能使Primary hung 住一定时间。在我做过的测试中,如果standby 的网络断了,Primary
hung住了3 min。虽然可以通过修改DB 参数以及OS
参数使这个hung的时间缩短,但还是存在一定风险。
我最终采用的是另一种折衷方式,Max performance , ARCH
optional 的传输模式。另外,在storage 和 local disk 上各保存一份redo log,以防范
storage的crash……
原帖:http://hi.baidu.com/byfeihz/item/d238b6975ce371c8b62531f7