Oracle Dataguard一共支持三种模式:最大可用模式(Maximum Availability),最大性能模式(Maximum Performance),最大保护模式(Maximum Protection)。默认创建的是最大性能模式(Maximum Performance)。关于三者的区别,我们来看官方的定义。

Maximum Availability

Transactions do not commit until all redo data needed to recover those transactions has been written to the online redo log and to the standby redo log on at least one synchronized standby database.If the primary database cannot write its redo stream to at least one synchronized standby         database,it operates as if it were in maximum performance mode to preserve primary database availability until it is again able to write its redo stream to a synchronized standby database.

Maximum Performance

This is accomplished by allowing transactions to commit as soon as all redo data generated by those transactions has been written to the online log. Redo data is also written to one of more standby databases,but this is done asynchronously with respect to transaction commitment,so primary       database performance is unaffected by delays in writing redo data to the standby databases.

Maximum Protection

This protection mode ensures that no data loss will occur if the primary database fails.To provide this level of protection,the redo data needed to      recover a transaction must be written to both the online redo log and to the standby redo on at least one synchronized standby database before the transaction commits.To ensure that data loss cannot occur,the primary database will shut down,rather than continue processing transactions,if it     cannot write its redo stream to at least one synchronized standby database.

三种模式对于日志传输的要求如下:

在前篇文章中-《Oracle Dataguard之物理standby的基本配置》,我们最后配置出来的是Physical Standby Database 最大性能模式下的异步传输,现在我们配置该模式下的Real-Time Apply。启用Real-Time Apply需要配置standby redo log,而这也是其它两种模式的基础。

一、 创建standby redo log

1> 查询主库上online redo log的组数和大小   -->> node1 上操作

SQL> select group#,bytes/1024/1024 "size" from v$log;

GROUP#  size
         ------     ----------
         1             50
         2             50
         3             50

2> 在备库上添加standby redo log   -->> group比主库多一组,大小和主库一样,node2上操作

[oracle@node2 ~]$ mkdir /u01/standby

SQL> alter database add standby logfile '/u01/standby/standby01.log' size 50M;

SQL> alter database add standby logfile '/u01/standby/standby02.log' size 50M;

SQL> alter database add standby logfile '/u01/standby/standby03.log' size 50M;

SQL> alter database add standby logfile '/u01/standby/standby04.log' size 50M;

注意:请确保已关闭Redo Apply,不然会报以下错误

SQL> alter database add standby logfile '/u01/standby/standby01.log' size 50M;

alter database add standby logfile '/u01/standby/standby01.log' size 50M
                 *
                 ERROR at line 1:
                 ORA-01156: recovery or flashback in progress may need access to files

关闭Redo Apply,

SQL> alter database recover managed standby database cancel;

二、 修改主库的配置参数  -->> node1 上操作

SQL> alter system set log_archive_dest_2='service=to_victor lgwr affirm sync valid_for=(online_logfiles,primary_role) db_unique_name=victor';

SQL> alter system switch logfile;

三、 在备库上启用Real-Time Apply  -->> node2 上操作

SQL> alter database recover managed standby database using current logfile disconnect from session;

四、 测试

除了用前篇文章中,查看归档日志的应用情况来验证dataguard的配置以外,本文将采用实际案例进行测试。

1> 在主库上新建一个测试表

SQL> create table test(id number);

SQL> insert into test values(1);

2> 在备库中检测

SQL> select * from test;

no rows selected

3> 在主库中提交事务

SQL> commit;

4> 在备库中检测

SQL> select * from test;

ID
          ----------
          1

总结:

这个总结包括物理standby的基本配置和本文中的Real-Time Apply

1> 如果只设置主/次两个本地归档目的地,可以使用初始化参数log_archive_dest指定主归档目的地,使用初始化参数log_archive_duplex_dest指定次归档目的地。

在数据库中,初始换参数log_archive_dest和log_archive_duplex_dest与log_archive_dest_n只能使用一组来设置归档目的地,不能同时使用

2> 备库log_archive_dest_1如果没有显性指定,默认的归档目录将是$ORACLE_HOME/dbs.倘若显性指定,但valid_for不是

(standby_logfiles,standby_role)或者(all_logfiles,all_roles),则该设置无效,报警日志中将报以下错误:

ORA-16032: parameter STANDBY_ARCHIVE_DEST destination string cannot be translated

归档目录将继续为$ORACLE_HOME/dbs

3> 在本文中,log_archive_dest_1='location=/u01/archivelog valid_for=(standby_logfiles,standby_role) db_unique_name=victor',如果再显性指定

log_archive_dest_3='location=/u01/standbyarchive valid_for=(standby_logfiles,standby_role) db_unique_name=victor',将会有两份standby的

归档日志产生,没有必要,只需要一个log_archive_dest_1即可

4> 最大性能模式下,如果是async,即异步,则需要主库切一次日志,备库采用应用。而如果启用Real-Time Apply,则只需要主库事务commit, 备库就能应用

5> 删除日志

SQL> alter database drop logfile group 7;

6> 如果发出了alter database recover managed standby database cancel;这个命令,MRP(Media Recovery process)将停止工作,但

RFS(Remote file server)仍继续工作

7> 如果没有standby redo logs,是不能启动real time apply的

SQL> alter database recover managed standby database using current logfile disconnect from session;
           alter database recover managed standby database using current logfile disconnect from session
           *
           ERROR at line 1:
           ORA-38500: USING CURRENT LOGFILE option not available without standby redo logs

8> standby数据库startup后,没有发出alter database recover managed standby database disconnect from session这个命令,RFS仍然工作,只要监听

都ok

9> disconnect from session代表这个命令后台运行。

10> Real-Time Apply的原理图

Oracle Dataguard之Real-Time Apply的更多相关文章

  1. Oracle Dataguard之failover

    Oracle Dataguard中,角色转换包含两类:Switchover和Failover.上文<Oracle Dataguard之switchover>中,我们已经谈过了switcho ...

  2. Oracle Dataguard之switchover

    Oracle Dataguard的角色转换包含两类:Switchover和Failover.Switchover指主备之间角色转换,主库降为备库,备库升级为主库.而failover则是指主库出现问题时 ...

  3. Oracle Dataguard之物理standby的基本配置

    尽管网上有很多Oracle Dataguard的配置教程,但不难发现,很多采用的是rman duplicate这种方法,尽管此种方法较为简便.但在某种程度上,却也误导了初学者,虽说也能配置成功,但只知 ...

  4. Oracle DataGuard 物理Standby 搭建(上)

    物理standby database 环境搭建 Arch asysnc Oracle Dataguard host IP Oracle_sid DB_unique_name FAL_server FA ...

  5. 9. Oracle DataGuard的介绍

    一. Oracle DataGuard简介 Oracle DataGuard:简称DG.是由一个Primary Database(主库)和一个或者多个Standby Database(备库)组成.对O ...

  6. [Oracle] DataGuard switchover

    Oracle DataGuard switchover 2013/07/11 Tag.Data Guard,primary,standby,switchover 切换前primary site和sta ...

  7. Oracle DataGuard主库丢失归档日志后备库的RMAN增量恢复一例

    第一部分  问题描述和环境状态确认 ----1. 问题场景 Oracle DataGuard主库丢失archivelog,如何不重建备库完成同步? 在Oracle DataGuard主从同步过程中可能 ...

  8. Oracle DataGuard主备切换(switchover)

    Oracle DataGuard主备切换可以使用传统的手动命令切换,也可以使用dgmgr切换,本文记录手动切换. (一)将主库切换为物理备库 STEP1:查看主库状态 SQL> SELECT O ...

  9. Oracle DataGuard搭建(一)

    第一次搭建oracle dataguard.学oracle很长时间,却没有完整的搭过dg,说起来让人笑.总得有第一次,而且第一次总是很痛苦的. 数据库版本: Oracle Database 11g E ...

随机推荐

  1. 解决ie8(及其以下)不支持getElementsByClassName的问题

    这篇技术笔记与大家分享的是:解决IE8(及以下)不支持getElementsByClassName的方法.如果有说错的地方,麻烦留言告诉我,我及时更正,一来是更新一下我的认知,二来也是不要误导的他人, ...

  2. reduce() 函数

    reduce()函数 reduce()函数也是Python内置的一个高阶函数.reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,reduce()传 ...

  3. (转C#中Enum用法小结)

    enums枚举是值类型,数据直接存储在栈中,而不是使用引用和真实数据的隔离方式来存储. (1)默认情况下,枚举中的第一个变量被赋值为0,其他的变量的值按定义的顺序来递增(0,12,3...),因此以下 ...

  4. Courier-MTA 0.72 发布,电子邮件系统

    Courier-MTA 0.72 增加了 ratefilter,用来限制速率的邮件过滤器. Courier 是一个优秀的电子信件系统,功能上它远比 Qmail. Postfix 等我们已经熟知的系统完 ...

  5. A Silverlight Bug ?

    昨日在写Silverlight程序的时候,遇到一个问题,感觉是Silverlight的Bug.使用版本是Silverlight5.异常信息如下: 行: 56错误: Silverlight 应用程序中未 ...

  6. Windows Azure 服务器时间问题

    最近一直在做学校的一个小项目,前期在没有服务器端的情况下意淫做出来了手机客户端.在寒假里使用ASP.NET快速做了一个网站并且设计好了需要使用其他内容,在Windows Azure上测试评估,为学校的 ...

  7. 【腾讯优测干货】看腾讯的技术大牛如何将Crash率从2.2%降至0.2%?

    小优有话说: App Crash就像地雷. 你怕它,想当它不存在.无异于让你的用户去探雷,一旦引爆,用户就没了. 你鼓起勇气去扫雷,它却神龙见首不见尾. 你告诫自己一定开发过程中减少crash,少埋点 ...

  8. angularjs之browserTrigger

    今天推荐一款来自angularjs源码的单元测试辅助库browserTrigger,这是来自于ngScenario的一段代码.主要用户触发浏览器型行为更新ng中scope view model的值. ...

  9. Javascript事件模型系列(四)我所理解的javascript自定义事件

    被我拖延了将近一个月的javascript事件模型系列终于迎来了第四篇,也是我计划中的最后一篇,说来太惭愧了,本来计划一到两个星期写完的,谁知中间遇到了很多事情,公司的个人的,搞的自己心烦意乱浮躁了一 ...

  10. Android多线程分析之五:使用AsyncTask异步下载图像

    Android多线程分析之五:使用AsyncTask异步下载图像 罗朝辉 (http://www.cnblogs.com/kesalin) CC 许可,转载请注明出处 在本系列文章的第一篇<An ...