在Oracle Database Data Guard日常的配置过程中,设置LOG_ARCHIVE_DEST_n初始化参数中的AFFIRM,NOAFFIRM,DB_UNIQUE_NAME,DELAY,LOCATION,SERVICE,SYNC,ASYNC,VALID_FOR属性能够满足大部分的应用场景,也可以认为这部分参数为必选参数。这篇文章将基于11gR2的文档讨论一些LOG_ARCHIVE_DEST_n其他的可选属性,这部分属性将帮助我们更深入的了解Oracle Data Guard的工作原理和工作细节。同时,这篇文章也是对我书中讨论DG一章的补充。
1.ALTERNATE属性
当初始的目的地失败,将使用该参数指定一个轮换的归档目的地。该属性不支持LOG_ARCHIVE_DEST_11到LOG_ARCHIVE_DEST_31 Redo目的地设置。
ALTERNATE=LOG_ARCHIVE_DEST_n,LOG_ARCHIVE_DEST_n是一个目的地,n是从1到10的一个值。
通过V$ARCHIVE_DEST.STATUS可以查看ALTERNATE目的地相关信息。
如果REOPEN属性被指定为一个非零的值,ALTERNATE属性被忽略,除非MAX_FAILURE属性也被指定为一个非零的值,那么如果失败次数超过指定的失败阀值(MAX_FAILURE),ALTERNATE目的地被启用,这样,ALTERNATE属性不与一个非零的REOPEN属性值冲突。
针对每个LOG_ARCHIVE_DEST_n初始化参数只能指定一个ALTERNATE目的地,但是多个LOG_ARCHIVE_DEST_n初始化参数共享相同的ALTERNATE目的地。
避免指定的ALTERNATE目的地与主目的地使用相同的磁盘或网络,避免当主目的地无效导致ALTERNATE目的地也无效。
如果没有指定引用的LOG_ARCHIVE_DEST_n的位置,那么ALTERNATE目的地暗示被延迟(DEFER),同样在运行时可以通过使用ALTER SYSTEM来启用或延迟(DEFER)ALTERNATE目的地。
可以通过增加归档目的地的数量,来减少活动的ALTERNATE归档目的地数量。
当归档目的地失败,ALTERNATE目的地被启用进行下一次归档操作,这里不支持在归档操作的过程中启用ALTERNATE目的地。因为REOPEN属性的行为要求重新读取目的地已经处理的块。
下面的例子展示如果一个错误发生或者磁盘满了,下次归档操作将从LOG_ARCHIVE_DEST_1自动FAILOVER到ALTERNATE目的地LOG_ARCHIVE_DETS_2进行。
LOG_ARCHIVE_DEST_1='LOCATION=/disk1 MANDATORY MAX_FAILURE=1
ALTERNATE=LOG_ARCHIVE_DEST_2'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_2='LOCATION=/disk2 MANDATORY'
LOG_ARCHIVE_DEST_STATE_2=ALTERNATE
下面的例子展示如何设置ALTERNATE目的地的Oracle Net Service名称,指定到相同的STANDBY数据库:
LOG_ARCHIVE_DEST_1='LOCATION=/disk1 MANDATORY MAX_FAILURE=1'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_2='SERVICE=stby1_path1 ALTERNATE=LOG_ARCHIVE_DEST_3'
LOG_ARCHIVE_DEST_STATE_2=ENABLE
LOG_ARCHIVE_DEST_3='SERVICE=stby1_path2'
LOG_ARCHIVE_DEST_STATE_3=ALTERNATE
2.COMPRESSION属性
COMPRESSION属性用于表明是否在将REDO数据传输到REDO传输目的地之前进行压缩。
Redo传输压缩是Oracle Advanced Compression组件的一个特性,必须购买该选件的license之后才能使用该特性。
COMPRESSION=ENABLE或者DISABLE,默认值是DISABLE。
通过查询V$ARCHIVE_DEST.COMPRESSION字段可以判断是否启用了压缩。
下面的例子展示LOG_ARCHIVE_DEST_n参数中的COMPRESSION属性:
LOG_ARCHIVE_DEST_3='SERVICE=denver SYNC COMPRESSION=ENABLE'
LOG_ARCHIVE_DEST_STATE_3=ENABLE
3.MANDATORY属性
MANDATORY属性指明填满的在线日志文件必须被成功归档到目的地之后才能被重用。
通过V$ARCHIVE_DEST.BINDING字段可以查看是否指定了该参数。
LOG_ARCHIVE_DEST_11到LOG_ARCHIVE_DEST_31初始化参数不支持MANDATORY属性。
即使所有的归档目的地是可选的,至少一个归档目的地必须成功。如果归档到一个可选目的地失败,在线Redo日志文件可能会被重用,最终可能被覆盖。然而,如果归档一个MANDATORY目的地操作失败,在线Redo日志文件不能被覆盖。
LOG_ARCHIVE_MIN_SUCCEED_DEST=n初始化参数(n是一个整数,范围从1到10),该参数指定在线Redo日志文件被覆盖之前,必须归档成功的目的地数目。
所有MANDATORY目的地和可选本地目的地有助于满足LOG_ARCHIVE_MIN_SUCCESSD_DEST=n数目。
# Database must archive to at least two locations before
# overwriting the online redo log files.
LOG_ARCHIVE_MIN_SUCCEED_DEST = 2
数据库必须至少有一个本地目的地,你可以定义MANDATORY或者保留为可选目的地。至少有一个本地目的地设置MANDATORY是因为LOG_ARCHIVE_MIN_SUCCESSD_DEST参数的最小值为1。
LOG_ARCHIVE_MIN_SUCCEED_DEST参数值不能大于MANDATORY目的地加上可选本地目的地的数目。
V$ARCHIVE_DEST.BINDING字段表明什么样的失败不影响归档操作。
以下的例子展示了MANDATORY属性:
LOG_ARCHIVE_DEST_1='LOCATION=/arch/dest MANDATORY'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_3='SERVICE=denver MANDATORY'
LOG_ARCHIVE_DEST_STATE_3=ENABLE
4.MAX_CONNECTIONS属性
在发送一个归档Redo日志文件到Redo传输目的地时启用多重网络连接,使用多重网络连接能在高延迟的网络连接中提升Redo传输的性能。
默认值为1,值的范围是1到20。
通过查询主数据库的V$ARCHIVE_DEST.MAX_CONNECTIONS字段可以获得该参数值设置。
如果指定这个参数,只有当Redo传输服务使用ARCn进程进行归档的时候才会使用。
如果MAX_CONNECTIONS设置为1(默认),Redo传输服务使用单一ARCn进程传输Redo数据到远程目的地。
如果MAX_CONNECTIONS设置的值大于1,Redo传输服务使用多个ARCn进程并行传输Redo到远程目的地归档Redo日志文件。每个归档进程使用独立的网络连接。
Redo数据是从ARCn进程接收,直接写到归档Redo日志文件,因此,该属性不能应用在实时日志应用。
真实在使用的归档进程数在不同的时间可能是不同的,这是根据归档负载和LOG_ARCHIVE_MAX_PROCESSES初始化来决定的,归档进程的总数量受到LOG_ARCHIVE_MAX_PROCESSES的限制。
以下的例子显示了MAX_CONNECTIONS属性:
LOG_ARCHIVE_DEST_1='LOCATION=/arch/dest'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_3='SERVICE=denver MAX_CONNECTIONS=3'
LOG_ARCHIVE_DEST_STATE_3=ENABLE
5.MAX_FAILURE属性
该属性控制Redo传输服务连续的尝试重新建立连接,在主数据库放弃该目的地之前传输Redo数据到失败的目的地的次数。
没有默认值,正确的值为>=0。
要求REOPEN属性,查看V$ARCHIVE_DEST视图的MAX_FAILURE,FAILURE_COUNT,REOPEN_SECS字段查看相关信息。
默认情况下,Oracle没有限制归档尝试失败目的地的次数。
这个属性对失败目的地问题的解决是有用的,可以使得在失败之后尝试传输Redo数据到其他目的地,而不是遥遥无期的等待。
当指定了MAX_FAILURE属性,必须设置REOPEN属性。一旦指定的连续尝试次数被超过,该目的地被当作没有指定REOPEN进行处理。
可以通过V$ARCHIVE_DEST.FAILURE_COUNT字段查看失败的次数,相关的REOPEN_SECS字段标识REOPEN属性的值。
一旦目的地失败次数到达指定的MAX_FAILURE属性值,只有一种方法重新使用该目的地,修改MAX_FAILURE属性值或者任何其他属性,这将重新设置失败次数为0。
无论什么时候,通过ALTER SYSTEM SET语句修改目的地参数失败次数都将被重置为0,这是为了防止设置一个比当前失败次数还小的MAX_FAILURE属性值。
一旦失败次数大于或者等于设置的MAX_FAILURE属性值,REOPEN属性值被暗中设置为0,这将导致在下次归档操作的时候,Redo传输服务传输Redo数据到一个ALTERNATE目的地。
如果没有指定MAX_FAILURE属性(或者设置MAX_FAILORE=0),并且为REOPEN属性指定一个非0值,Redo传输服务遥遥无期的尝试归档到失败目的地。如果目的地设置了MANDATORY属性,在线Redo日志文件不能被重用,直到在线Redo日志文件被成功归档到该目的地。
以下的例子允许Redo日志传输服务3次连续归档尝试,每5秒进行重试,到arc_dest目的地。如果归档操作3次尝试后失败,目的地被当作REOPEN属性没有指定进行处理。
LOG_ARCHIVE_DEST_1='LOCATION=/arc_dest REOPEN=5 MAX_FAILURE=3'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
6.NET_TIMEOUT属性
指定LGWR后台进程等待Redo传输目的地确认收到Redo数据的秒数,如果确认没有在NET_TIMEOUT秒内收到,一个错误被记录,同时到该目的地的Redo传输会话被中断。
默认值为30秒,值的范围1到1200。
指定该参数必须指定SYNC属性。
通过在主数据库查询V$ARCHIVE_DEST.NET_TIMEOUT字段查看该属性的值。
虽然允许NET_TIMEOUT的最小值为1秒,Oracle推荐最小值在8到10秒,防止瞬时网络错误的情况下断开与Standby数据库的连接。
以下的例子显示如何在主数据库使用NET_TIMETOUT属性设置10秒的网络超时值:
LOG_ARCHIVE_DEST_2='SERVICE=stby1 SYNC NET_TIMEOUT=10'
LOG_ARCHIVE_DEST_STATE_2=ENABLE
7.REOPEN属性
该属性指定Redo传输服务尝试重新打开失败目的地等待的最小秒数。
默认值为300秒,值应该大于0。
通过V$ARCHIVE_DEST视图的REOPEN_SECS和MAX_FAILURE字段可以获得相关信息。
在日志切换时Redo传输服务尝试重新打开失败的目的地。
Redo传输服务检查如果最后错误的时间加上REOPEN间隔小于当前时间,Redo传输服务尝试重新打开目的地。
REOPEN应用于所有的错误,不仅仅是连接失败。这些错误包括但不仅限于网络失败,磁盘失败,和权限异常。
如果为可选目的地指定了REOPEN,如果有任何的错误,Oracle数据库很可能覆盖在线Redo日志文件,如果对MANDATORY目的地指定了REOPEN,当不可能成功传输Redo数据,Redo传输服务可能拖延主数据库。当这种情况发生,考虑一下选项:
a).延迟该目的地,指定该目的地为可选目的地,或者改变SERVICE属性值。
b).指定ALTERNATE目的地。
c).禁用该目的地。
以下的例子显示了REOPEN属性:
LOG_ARCHIVE_DEST_3='SERVICE=stby1 MANDATORY REOPEN=60'
LOG_ARCHIVE_DEST_STATE_3=ENABLE
8.TEMPLATE属性
在目的地对Redo日志文件名称定义特定目录和格式模板,模板参数用于在Redo目的地生成与LOG_ARCHIVE_FORMAT初始化参数定义的格式不同的文件名。
通过查询V$ARCHIVE_DEST的REMOTE_TEMPLATE和REGISTER字段可以查询相关信息。
如果没有指定TEMPLATE,归档Redo日志使用LOG_ARCHIVE_FORMAT初始化参数的值进行命名。
TEMPLATE属性��对远程目的地有效(通过SERVICE属性指定的目的地)。
指定的文件名模板必须包含%s,%t和%r指令:
%t 实例线程号。
%T 实例线程号,用0填充。
%s 日志文件序列号。
%S 日志文件序列号,用0填充。
%r resetlogs ID。
%R resetlogs ID,用0填充。
filename_template值被传送到目的地,是在创建文件名之前进行传输和验证。
翻译自:《Oracle? Data Guard Concepts and Administration 11g Release 2 (11.2) Part Number E25608-03》
--------------------------------------分割线 --------------------------------------
Oracle Data Guard 重要配置参数
基于同一主机配置 Oracle 11g Data Guard
探索Oracle之11g DataGuard
Oracle Data Guard (RAC+DG) 归档删除策略及脚本
Oracle Data Guard 的角色转换
Oracle Data Guard的日志FAL gap问题
Oracle 11g Data Guard Error 16143 Heartbeat failed to connect to standby 处理方法
--------------------------------------分割线 --------------------------------------
: