本文作者:
junsansi
转载网址:
http://www.5ienet.com/index.shtml
第四部分Standby之Log应用服务 2008.02.26
前面我们已经接触了很多相关的概念,我们都知道DataGuard 通过应用redo 维持primary 与各standby 之间的一致性,在后台默默无闻支撑着的就是传说中的Log 应用服务。Log 应用服务呢,又分两种方式,一种是redo应用(物理standby 使用,即介质恢复的形式),另一种是sql 应用(逻辑standby 使用,通过LogMiner 分析出sql语句在standby 端执行)。
一、Log应用服务配置选项
1、REDO数据实时应用
默认情况下,log 应用服务会等待单个归档文件全部接收之后再启动应用(在前面redo 传输服务中我们介绍了不同形式的传输方式),如果standby 端使用了standby redologs,就可以打开实时应用(real-time apply),这样dg 就不需要再等待接收完归档文件,只要rfs 将redo 数据写入standby redologs,即可通过MRP/LSP 实时写向standby。
物理standby 启用实时应用通过下列语句:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE ;
逻辑standby 启用实时应用通过下列语句:
SQL> ALTER DATABASE START LOGICAL STANDBYAPPLY IMMEDIATE;
2、REDO数据延迟应用
有实时就有延迟,某些情况下你可能不希望standby 与primary 太过同步:),那就可以在log_archive_dest_n参数中指定delay 属性(单位为分钟,如果指定了delay 属性,但没有指定值,则默认是30 分钟)。注意,该属性并不是说延迟发送redo 数据到standby,而是指明归档到standby 后,开始应用的时候。
不过,即使在log_archive_dest_n 中指定了delay 属性,但如果你应用数据时指定了实时应用,则standby会忽略delay 属性。另外,standby 端还可以通过下列的语句取消延迟应用。
物理standby 取消延迟应用可以通过下列语句:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE NODELAY;
逻辑standby 取消延迟应用可以通过下列语句:
SQL> ALTER DATABASE START LOGICAL STANDBYAPPLY NODELAY;
提示:flashback database 也可视为延迟应用的一种方式。
二、应用redo数据到物理standby
注意:启动redo 应用,物理standby 需要首先启动到mount 状态,然后再执行下列语句启动,或者停止redo应用。
1、启动redo应用
※ 前台应用
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE;
※ 后台应用
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;
※ 启动实时应用,附加USING CURRENT LOGFILE 子句即可
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE;
2、停止redredo应用
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
三、应用redo数据到逻辑standby
注意:启用sql 应用,逻辑standby 需要启动至open 状态。
1、启动sql应用
SQL> ALTER DATABASE START LOGICAL STANDBYAPPLY;
如果要启动实时应用,附加immediate 子句即可:
SQL> ALTER DATABASE START LOGICAL STANDBYAPPLY IMMEDIATE;
2、停止sql应用
SQL> ALTER DATABASE STOP LOGICAL STANDBYAPPLY;