Oracle Data Guard理论知识(四)
e Redologs、Archived Redologs及Standby Redologs)。
默认情况下,逻辑Standby数据库生成的归档文件和接收到的归档文件在相同的路径下,这既不便于管理,也极有可能带来一些隐患。建议对每个LOG_ARCHIVE_DEST_n参数设置合适的VALID_FOR属性。本地生成的归档文件和接收到的归档文件最好分别保存于不同路径下。
2.通过DB_UNIQUE_NAME属性指定数据库
DB_UNIQUE_NAME属性是10g版本新增加的一个关键字,在之前版本并没有这一说法。该属性的作用是指定唯一的Oracle数据库名称,也正因有了DB_UNIQUE_NAME,REDO数据在传输过程中才能确认传输到DBA希望被传输到的数据库上。
当然要确保REDO数据被传输到指定服务器,除了在LOG_ARCHIVE_DEST_n参数中指定正确DB_UNIQUE_NAME属性之外,还有一个初始化参数LOG_ARCHIVE_CONFIG也需要进行正确的配置。该参数除了指定Data Guard环境中的唯一数据库名外,还包括几个属性,用来控制REDO数据的传输和接收:
SEND:允许数据库发送数据到远端。
RECEIVE:允许Standby接收来自其他数据库的数据。
NOSEND,NORECEIVE:自然就是禁止喽。
例如,设置Primary数据库不接收任何归档数据,可以做如下的设置:
LOG_ARCHIVE_CONFIG='NORECEIVE,DG_CONFIG= (PRI,ST) '
如果做了如上的设置,如果该服务器发生了角色切换,那它也没有接收REDO数据的能力。
五. Data Guard环境应配置的初始化参数
下列参数为Primary角色相关的初始化参数
DB_NAME
注意保持同一个Data Guard中所有数据库DB_NAME相同
例如:DB_NAME=Dave
DB_UNIQUE_NAME
为每一个数据库指定一个唯一的名称,该参数一经指定不会再发生变化,除非DBA主动修改它
例如:DB_UNIQUE_NAME=DavePre
LOG_ARCHIVE_CONFIG
该参数用来控制从远端数据库接收或发送REDO数据,通过DG_CONFIG属性罗列同一个Data Guard中所有DB_UNIQUE_NAME(含Primary数据库和Standby数据库),以逗号分隔,SEND/NOSEND属性控制是否可以发送,RECEIVE/NORECEIVE属性控制是否能够接收
例如:LOG_ARCHIVE_CONFIG='DG_CONFIG=(DavePre,DaveDG)'
LOG_ARCHIVE_DEST_n
归档文件的生成路径。该参数非常重要,并且属性和子参数也特别多(可以直接查询Oracle官方文档。Data Guard白皮书第14章专门介绍了该参数各属性及子参数的功能和设置)。例如:
LOG_ARCHIVE_DEST_1='LOCATION=l:/oracle/oradata/Dave VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=DavePre'
LOG_ARCHIVE_DEST_STATE_n
是否允许REDO传输服务传输REDO数据到指定的路径。该参数共拥有4个属性值,功能各不相同。
REMOTE_LOGIN_PASSWORDFILE
推荐设置参数值为EXCLUSIVE或者SHARED,注意保证相同Data Guard配置中所有DB服务器SYS密码相同
以下参数为与Standby角色相关的参数(建议在Primary数据库的初始化参数中也进行设置,这样即使发生角色切换,新的Standby也能直接正常运行)
FAL_SERVER
指定一个Net服务名,该参数值对应的数据库应为Primary角色。当本地数据库为Standby角色时,如果发现存在归档中断的情况,该参数用来指定获取中断的归档文件的服务器
例如:FAL_SERVER=DavePre
提示:FAL是Fetch Archived Log的缩写
FAL_SERVER参数支持多个参数值的哟,相互间以逗号分隔
FAL_CLIENT
又指定一个Net服务名,该参数对应数据库应为Standby角色。当本地数据库以Primary角色运行时,向参数值中指定的站点发送中断的归档文件
例如:FAL_CLIENT=DaveDG
FAL_CLIENT参数也支持多个参数值,相互间以逗号分隔。
DB_FILE_NAME_CONVERT
Standby数据库的数据文件路径与Primary数据库数据文件路径不一致时,可以通过设置DB_FILE_NAME_CONVERT参数的方式让其自动转换。该参数值应该成对出现,前面的值表示转换前的形式,后面的值表示转换后的形式
例如:DB_FILE_NAME_CONVERT='f:/oradata/DavePre','l:/oradata/DaveDG'
LOG_FILE_NAME_CONVERT
使用方式与上相同,只不过LOG_FILE_NAME_CONVERT专用来转换日志文件路径
例如:
LOG_FILE_NAME_CONVERT='f:/oradata/DavePre','l:/oradata/DaveDG'
STANDBY_FILE_MANAGEMENT
如果Primary数据库数据文件发生修改(如新建、重命名等)则按照本参数的设置在Standby数据库中作相应修改。设为AUTO表示自动管理。设为MANUAL表示需要手工管理
例如:STANDBY_FILE_MANAGEMENT=AUTO
对于归档失败的处理,LOG_ARCHIVE_DEST_n参数有几个属性,可以用来控制归档过程中出现故障时应该采取的措施。
1.REOPEN 指定时间后再次尝试归档
使用REOPEN=seconds(默认为300秒)属性,在指定时间重复尝试向归档目的地进行归档操作,如果该参数值设置为0,则一旦失败就不会再尝试重新连接并发送,直到下次REDO数据再被归档时会重新尝试。
例如,设置REOPEN为100秒:
LOG_ARCHIVE_DEST_2='SERVICE=DavePrimary LGWR ASYNC REOPEN=100'
2.ALTERNATE 指定替补的归档目的地
ALTERNATE属性定义一个替补的归档目的地,所谓替补就是一旦主归档目的地因各种原因无法使用,则临时向ALTERNATE属性中指定的路径写。
例如:
LOG_ARCHIVE_DEST_1='LOCATION=/disk1 ALTERNATE=LOG_ARCHIVE_DEST_2'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_2='LOCATION=/disk2'
LOG_ARCHIVE_DEST_STATE_2=ALTERNATE
上述参数设置归档