欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

Oracle Data Guard LOG_ARCHIVE_DEST_n参数的可选属性

程序员文章站 2022-05-23 12:49:35
...

在Oracle Database Data Guard日常的配置过程中,设置LOG_ARCHIVE_DEST_n初始化参数中的AFFIRM,NOAFFIRM,DB_UNIQUE_NAME,DELAY,L

在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目的地。