Data Guard三种模式解释
Data Guard 保护模式(Data Guard Protection Modes)
对于 Data Guard 而言,其生存逻辑非常简单,由于它提供了三种数据保护的模式,我们又亲切的叫它:有三模:
最大保护(Maximum protection):
这种模式能够确保绝无数据丢失。要实现这一步当然是有代价的,它要求所有的事务在提交前其 redo 不仅
被写入到本地的 online redo log,还要同时提交到 standby
数据库的 standby redo log,并确认 redo 数据至少在一
个 standby 数据库可用(如果有多个的话),然后才会在 primary 数据库上提交。如果出现了什么故障导致 standby
数据库不可用的话,primary 数据库会被 shutdown。
最高性能(Maximum performance):
这种模式提供在不影响 primary 数据库性能前提下最高级别的数据保护策略。事务可以随时提交,当前
primary 数据库的 redo 数据也需要至少写入一个 standby 数据库,不过这种写入可以是不同步的。
如果网络条件理想的话,这种模式能够提供类似最高可用性的数据保护而仅对 primary 数据库有轻微的性能
影响。
这种模式提供在不影响 primary 数据库可用前提下最高级别的数据保护策略。其实现方式与最大保护模式类
似,也是要求所有事务在提交前必须保障 redo 数据至少在一个 standby 数据库可用,不过与之不同的是,如果
出现故障导入无法同时写入 standby 数据库 redo log,primary 数据库并不会 shutdown,而是自动转为最高性能
模式,等 standby 数据库恢复正常之后,它又会再自动转换成最高可用性模式。
首先需要搞明白oracle执行方式。如执行一条数据操作后,比如插入数据行,oracle不会在数据库中立即执行的。而是把你的这条sql语句写到日志里(可理解成redo log),然后再传一份log给备库。
启用data guard后,这三种模式实际上就是当redo log没法传到备库会怎样。
最大保护,就是发现当redo log没法传到至少一个备库时,主库上就不执行这条命令。这种模式性能最低,但最安全。
最大性能,就是不管redo log能不能传到至少一个备库,主库都会执行这条命令。这种模式性能最高,但最不安全。
最大可用,当 redo log可以传到至少一个备库时,和最大保护模式相同。但如果不能传到至少一个备库是,就自动转到最大性能模式既执行这条命令。这种模式性能和安全性取中间。
最大保护及最高可用性需要至少一个 standby 数据库 redo 数据被同步写入。三种模式都需要指定LOG_ARCHIVE_DEST_n 初始化参数