DATAGUARD的日志应用服务


一、日志应用服务介绍

  日志应用服务自动应用重做到备数据库,以维护与主数据库的同步并允许对数据库的事务一致性访问。

  默认地,日志应用服务在应用归档重做日志文件到备数据库之前等待完全的归档重做日志文件到达备数据库。从主数据库传送的重做数据被备系统上的远程文件服务进程(RFS)接收,在那里RFS 进程写重做数据到归档重做日志文件或备重做日志文件。然而,如果你使用备重做日志文件,你能允许实时应用,这允许Data Guard从正在被RFS 进程写的当前备重做日志文件恢复重做数据。

  日志应用服务使用下面的方法来维护物理和逻辑备数据库:

  重做应用(只有物理备数据库)

  使用介质恢复来保持主和物理备数据库同步。

  注意:

  你也能以只读模式打开物理备数据库,允许用户查询备数据库用作报表用途。当打开的时候,还是接收重做数据的;然而,重做应用停止并且物理备数据库没有与主数据库保持同步。如果在此时间发生故障,会延长故障转移操作完成所需的时间

  SQL应用(只有逻辑备数据库)

  从主数据库接收的重做重组SQL语句并在逻辑备数据库上执行SQL语句。

  逻辑备数据库能以读/写模式打开,但是由逻辑备数据库维护的目标表只能以只读模式打开以用于报表用途(倘若数据库guard 适当设置)。SQL 应用允许你使用逻辑备数据库用于报表活动,即使当SQL 语句被应用时。

  二、日志应用服务配置选项

  使用实时应用来立即应用重做数据

  如果允许了实时应用特性,日志应用服务能在接收重做数据时应用,而不用等待当前备重做日志文件归档。这导致更快的切换和故障转移时间,因为备重做日志文件在故障转移或切换开始的时候已经应用到备数据库。

  使用 ALTER DATABASE 语句来允许实时应用特性,如下:

  对于物理备数据库,执行 ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE 语句。

  对于逻辑备数据库,执行ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE 语句。

  注意:使用实时应用需要备重做日志文件。

  图 1 显示了使用本地目的地和备目的地的Data Guard 配置。当远程文件服务(RFS)进程在备数据上写重做数据到备重做日志文件时,日志应用服务能从正在被写的备重做日志文件恢复重做。

点击查看大图

图1 使用实时应用应用重做数据到备目的地

  对归档重做日志文件的应用指定时间延迟

  在一些情况下,你可能想在重做数据从主站点接收到它应用到备数据库的时间之间创建一个时间延迟。你能指定时间间隔(分钟)来保护损坏或错误的数据的应用到备数据库,当你设置DELAY 间隔,它不是延迟重做数据的传输到备数据库。替代地,你指定的时间延迟从重做数据完整地归档到备目的地开始。

  注:如果你定义对一个允许实时应用的目的地的延迟,则该延迟被忽略。

  指定时间延迟

  你能使用 LOG_ARCHIVE_DEST_n 初始化参数的DELAY=minutes 属性,在主和备数据库上设置时间延迟来延迟应用归档重做日志文件到备数据库。默认地,没有时间延迟。如果你指定DELAY 而没有指定一个值,则默认的延迟间隔是30 分钟。

  取消时间延迟

  你能取消指定的延迟间隔,如下:

  对于物理备数据库,使用 RECOVER MANAGED STANDBY DATABASE 字句的NODELAY 关键词:

  SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE NODELAY;

  对于逻辑备数据库,指定下面的 SQL 语句:

  SQL> ALTER DATABASE START LOGICAL STANDBY APPLY NODELAY;

  这些命令导致日志应用在时间间隔过期之前,立即开始应用归档重做日志文件到备数据库。

  使用Flashback 数据库作为设置时间延迟的另一选择

  作为设置应用延迟的另一选择,你能使用Flashback 数据库来从损坏或错误数据的应用中恢复到备数据库。Flashback 数据库能快速、简单地闪回备数据库到一个任意的时间点。

  三、应用重做数据到物理备数据库

  默认地,重做数据从归档重做日志文件应用。当执行重做应用时,物理备数据库能使用实时应用特性来从正在被RFS 进程写的备重做日志文件直接应用重做。注意当物理备数据库以只读模式打开时日志应用服务不能应用重做数据。

  开始重做应用

  要在物理备数据库上开始日志应用服务,确保物理备数据库是启动并安装的,然后使用SQL:ALTER DATABASE RECOVER MANAGED STANDBY DATABASE 语句来开始重做应用。

  你能指定重做应用作为前台会话或后台进程运行,并允许它实时应用。

  要在前台开始重做应用,执行下面的 SQL 语句:

  SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE;

  如果你开始一个前台会话,控制不会返回到命令提示符,直到恢复被其它会话取消了。??  要在后台开始重做应用,在 SQL 语句中包括DISCONNECT 关键词。例如:

  SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;

  这条语句开始了一个分离的服务进程并立即返回控制到用户。当管理恢复进程在后台执行恢复,执行RECOVER 语句的前台进程能继续执行其它任务。这不会断开当前的SQL 会话。

  要开始实时应用,在 SQL 语句上包含USING CURRENT LOGFILE 字句。例如:

  SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE;

  停止重做应用

  要停止重做应用,在其它窗口执行下面的 SQL 语句:

  SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

  四、应用重做数据到逻辑备数据库

  SQL 应用从归档重做日志或备重做日志转换数据到SQL 语句,然后在逻辑备数据库上执行这些SQL 语句。因为逻辑备数据库保持打开,维护的表能同时用于其它任务,如报表、总结、和查询。

  开始SQL 应用

  要开始 SQL 应用,启动逻辑备数据库并执行下面语句:

  SQL> ALTER DATABASE START LOGICAL STANDBY APPLY;

  在逻辑备数据库上停止SQL应用

  要停止SQL 应用,在逻辑备数据库上执行下面语句:

  SQL> ALTER DATABASE STOP LOGICAL STANDBY APPLY;

  当你执行该语句,SQL 应用等待直到它提交了所有在应该过程中完成的事务。这样,该命令可能不能立即停止SQL 应用进程。如果你想立即停止 SQL 应用,执行下面语句:

  SQL> ALTER DATABASE ABORT LOGICAL STANDBY APPLY;


« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3