Oracle 11gR2 DataGuard教程
(Physical Standby Database)
目录
第1章    理论基础    4
1.1    概述    4
1.2    日志发送    4
1.2.1    使用ARCH进程    4
1.2.2    使用LGWR进程的SYNC(同步)方式    4
1.2.3    使用LGWR进程的ASYNC(异步)方式    5
1.3    日志接收    6
1.4    日志应用    6
1.5    数据保护模式    7
1.5.1    最大保护(Maximum Protection)    7
1.5.2    最高可用性(Maximum Availability)    7
1.5.3    最高性能(Maximum Performance)    8
1.5.4    修改数据保护模式    8
第2章    配置    8
2.1    配置参数说明    8
2.1.1    独立参数    8
2.1.2    主库参数    10
2.1.3    备库参数    15
2.2    环境介绍    17
2.2.1    主库环境    17
2.2.2    备库环境    17
oracle 时间转换
2.3    配置过程    18
2.3.1    主库配置    18
2.3.2    备库配置    21
2.3.3    复制数据库    23
2.4    其他问题    24
第3章    角切换    25
3.1    SwitchOver    25
3.1.1    准备工作    25
3.1.2    主库切换为新备库    25
3.1.3    备库切换为新主库    25
3.1.4    新备库应用日志    26
3.2    FailOver    26
第1章  理论基础
1.1 概述
DataGuard至少需要两个数据库,一个READ WRITE(读写)模式打开,进行在线事务处理,角称Primary Database(主一个以READ ONLY只读)模式打开,接收重日志并重新应用,角称为Standby Database备库)
用户连接进行事务处理,更改操作被记录在联机重做日志和归档重做日志中,这些日志通过网络发给备并在备上重新应用,最终实现主备库数据同步。
DataGuard由做传输服务应用服务角管理服务组成,其中前两项服务按照功能
Redo Send(日志发Redo Receive(日志接收Redo Apply(日志应用个部分。DataGuardPhysical Standy(物理备库)和Logical Standby(逻辑备库)两种,本教程只讨论Physical Standby
1.2 日志发送
主库在运行时会不断产生重做日志,这些日志需要发送到备库。发送动作可以由主库LGWR进程或者ARCH进程完成,默认使用ARCH进程,如果使用LGWR进程必须明确指定。不同的归档目的地可以使用不同的方法,但对于同一目的地,只能选用1种方法。
1.2.1 使用ARCH进程
主库不断产生重做日志,这些日志被LGWR进程写入主库联机重做日志文件,此时事务提交即可返回成功;
当一组联机重做日志文件被写满后,会发生日志切换(Log Switch)并触发ARCH进程进行本地归档;
主库的ARCH进程通过网络把这些归档日志发送给备库。
使用ARCH进程发送日志的问题:
主库只有在发生归档时才会发送日志到备库,如果主库异常宕机,联机日志中的重做数据就会丢失,要想避免数据丢失,就必须使用LGWR进程发送日志,而使用LGWR 进程又分SYNC(同步)ASYNC(异步)两种方式。
1.2.2 使用LGWR进程的SYNC(同步)方式
主库不断产生重做日志,这些日志被LGWR进程写入主库联机重做日志文件,同时发送给本地的LNS进程(Logwriter Network Service);
LNS进程通过网络把重做日志发送给远程目的地(每个远程目的地对应一个LNS进程,多个LNS进程能够并行工作)并等待远程确认传送成功;
LGWR进程等待本地联机重做日志文件的写入操作和通过LNS进程的网络传送都成功,确认主库事务提交成功。
当一组联机重做日志文件被写满后,会发生日志切换(Log Switch)并触发ARCH进程进行本地归档,同时触发备库的日志切换和备库重做日志的归档。
使用LGWR进程的SYNC(同步)方式时,可以同时使用NET_TIMEOUT参数,这个参数单位是,如果网络发送在此时间内没有响应,LGWR进程就会返回错误。示例如下:
SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_2 = 'SERVICE=ST LGWR SYNC NET_TIMEOUT=30' SCOPE=BOTH;
使用LGWR进程的SYNC(同步方式问题在于:
如果发送重日志给备库失败,LGWR进程就会报错,分三种情况:
主库工作在最大保护模式下,事务提交会返回失败,无重做数据生成,同时主库被SHUTDOWN,待问题解决后主库才能成功启动;
主库工作在最大可用模式下,事务提交会返回成功,重做数据只写入本地日志文件,同时主库由最大可用模式降为最大性能模式,待问题解决后备库自动向主库请求传送缺失的日志并应用,主库重新恢复为最大可用模式;
主库工作在最大性能模式下,事务提交会返回成功,重做数据只写入本地日志文件,待问题解决后备库自动向主库请求传送缺失的日志并应用。
采用SYNC(同步)方式,主库的LGWR进程高度依赖网络状况,在某些情况下,这种要求可能过于苛刻,这时就可以使用LGWR进程的ASYNC异步)方式。
1.2.3 使用LGWR进程的ASYNC(异步)方式
主库不断产生重做日志,这些日志被LGWR进程写入主库联机重做日志文件,同时发送给本地的LNS进程(Network Server Process),一旦成功写入联机重做日志文件,事务提交即可返回成功;
LNS进程异步通过网络把重做日志发送给远程目的地(每个远程目的地对应一个LNS进程,多个LNS进程能够并行工作);
当一组联机重做日志文件被写满后,会发生日志切换(Log Switch)并触发ARCH进程进行本地归档,同时触发备库的日志切换和备库重做日志的归档。因为LGWR进程不会等待LNS进程的响应结果,所以配置LGWR进程ASYNC(异步)方式时不需要NET_TIMEOUT参数
1.3 日志接收
备库的RFS(Remote File Server)进程接收到重做日志,将其写入Standby Redo Log(SRL,备库重做日志)文件或者归档重做日志文件,具体写入哪个文件,取决于主库的日志传送方式(ARCH或LGWR)和备库的位置本机或远程。如果写入SRL文件,则当主库发生日志切换时,也会触发备库SRL切换,并把这个SRL归档。如果是写入归档日志文件,那么这个动作本身也可以看作是个归档操作。
在日志接收中,需要注意的是库归档日志存放位置,具体如下:
如果配置了STANDBY_ARCHIVE_DEST参数,则使用该参数指定的目录;
如果某个LOG_ARCHIVE_DEST_n参数明确定义了VALID_FOR=(STANDBY_LOGFILE,*)选项,则使用这个参数指定的目录。
如果数据库的COMPATIBLE参数大于等于10.0,则选取任意一个LOG_ARCHIVE_DEST_n的值。
如果STANDBY_ARCHIVE_DEST和LOG_ARCHIVE_DEST_n参数都没有配置,使用缺省的STANDBY_ARCHIVE_DEST参数值,这个缺省值可以通过以下命令查询:
SQL>SHOW PARAMETER STANDBY_ARCHIVE_DEST
1.4 日志应用
日志应用,就是在备库上应用重做日志,实现主备库数据同步。
物理Standby使用MRP进程(Managed Recovery Process),利用Media Recovery(介质恢复)技术应用重做日志,在数据块级别进行恢复,这种方式叫做Redo Apply没有数据类型的限制可以保证两个数据库完全一致
物理Standby只能在MOUNT加载)状态下进行恢复,也可以是OPEN(打开状态,但只能以READ ONLY(只读)模式打开,且打开时不能执行恢复操作。(注意:Oracle 11g已经支持只读模式打开同时进行恢复操作,即READ ONLY WITH APPLY