一步一步学DataGuard(23)Standby之Log应用服务

前面我们已经接触了很多相关的概念,我们都知道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 STANDBY APPLY 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 STANDBY APPLY 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、停止redo应用

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

三、应用redo数据到逻辑standby

注意:启用sql应用,逻辑standby需要启动至open状态。

1、启动sql应用

SQL> ALTER DATABASE START LOGICAL STANDBY APPLY;

如果要启动实时应用,附加immediate子句即可:

SQL> ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;

2、停止sql应用

SQL> ALTER DATABASE STOP LOGICAL STANDBY APPLY;


 
阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页