重做记录 – 又称重做条目,由一组变更向量组成,每个变更向量描述数据库一个数据块的变化.重做记录包括重新生成数据的所有信息,在介质恢复的时候读取重做记录中的更改向量,并对相关的数据块应用更改信息.
重做记录存储的方式 – redo log buffer -> online redo logfile(顺序复用写入) -> archived redo logfile(archived mode).
LGWR – Log Writer Process. 刷新SGA中的Redo log buffer到online redo logfile. 满足以下条件会触发.
* 每三秒
* 事务发生提交时
* redo log buffer满三分之一或者达到1M(所以REDO LOG BUFFER分区太大没啥用处)
Log Network Server(LNS) – 读取SGA的REDO LOG BUFFER的信息,交由Oracle Net服务传输到相应备库的一个进程,传输包括同步(SYNC)和异步(ASYNC)二种方法.
Remote File Server(RFS) – 备库进程,接收从主库传来的重做数据,写入备用重做日志(Standby Redo Log,SRL).
同步传输(SYNC) – 零数据丢失(),LNS确认重做数据写到备库的磁盘,才允许LGWR认可提交操作成功.这种方式的优点是零数据丢失,缺点是影响主库的性能.
异步传输(ASYNC) – LGWR不必等待来自LNS的确认,因此无论备库离的多远,都几乎不会影响到主库的性能.在传输的过程中,oracle11g提供了一个很酷的功能,如果LNS赶不上,在传之前redo log buffer中已经没有了,自动会从ORL读取和发送,赶上了自动改为REDO LOG BUFFER中读取.
传输滞后(transport lag) – ASYNC会使主库缓存大量的重做数据. 使用ASYNC的方式会存在着数据丢失的可能性,数据丢失的多少取决于传输滞后的量.
重做传输压缩 – 为了减少 translog lag, 11g提供了重做压缩功能,对重做数据进行压缩以加快传输速度,对CPU会有影响.
自动处理间隔 – 当网络(主库到备库的网络)或者备库出现问题时,主库停止传输重做数据到备库时,就会出现日志文件间隔,主库的LWGR继续写入ORL,写满会switch log file以及archive log file,主库的arch进程连续的PING备库,当备库正常时,ARCH进程会查询备用控制文件(RFS进程)来确定备库最后接收的重做数据.确定哪些日志文件需要同步到备库,ARCH的其它进程会同步相应的文件.一旦赶上进度就不再读归档日志.为了加快速度减少日志文件间隔可以启多个ARCH进程来处理.
DATA GUARD的保护模式 – 最高性能,最高可能性,最大保护.
最高性能 – 关注的是主库的性能,轻视数据保护,需要ASYNC传输,LGWR不需要等待LNS的确认.
最高可用性 – 最关注的是可用性,其实强调数据保护(零数据丢失),需要SYNC传输,因为使用的是SYNC传输,所以默认情况下是零数据丢失的,因为LGWR会等待LNS的确认,但这种模式最关注的是可用性,当传输有问题的时候会等待,等待时间超过NET_TIMEOUT这个参数值,就会放弃备库.直到主库(切换日志时检查)能重新传输数据给备库时开始传输数据.
最大保护 – 关注数据,零数据丢失,需要SYNC传输,基本上同最高可用性,只是在备库出现问题时会一直等待.
切换- 计划内事件,切换主备库角色,一般用在版本升级,移动数据中心,更换主机(测试不同平台),平衡主备机硬件损耗,减少停库时间.切换主要有以下几个步骤.
* 通知主数据库切换操作要开始了.
* 切换所有主库的连接.
* 生成特殊的重做记录来标明重做结束.(End of Redo),相当于一个标记,告诉备库后面不会再来重做数据了.
* 主库转换成备库
* 备库apply redo,当读到End of Redo记录,确认所有的重做数据都已经应用,没有丢失数据,备库转为主库.
故障转移 – 计划外事件导致角色转换,是否丢数据取决于DG的保护模式.