zoukankan      html  css  js  c++  java
  • Active Data Guard

    ADG INTRODUCE

    Active Data Guard(ADG)是ORACLE 11g企业版的新特性,需要单独的License.可以打开Physical standby至read only模式,standby可以用来做报表系统、查询、排序或Web站点。实时读写分离,以此来分担primary DB的压力。

    ADG可以部署在多种商业应用环境中,如:

    ·通信行业:Schedules服务,自助查询服务。

    ·医疗行业:快速访问最新的医疗记录。

    ·金融管理行业:自助查询和报表。

    ·运输行业:包裹跟踪,订单状态查询。

    ·商业网站:目录浏览,订单状态,售后产品Reader Farms.

     

    ADG特性:

    1.实时查询特性,可以打开Physical standby值read only模式并实时应用redo data.

    2.启用RMAN block-change tracking。用户利用RMAN在primary的增量备份恢复到standby,性能最高可提升20倍。

    Database只读模式下允许的操作:

    ·SELECT操作,包括需要大量临时段的查询

    ·ALTER SESSION,ALTER SYSTEM

    ·SET ROLE

    ·调用Procedure

    ·使用DBLINK写数据到远程数据库

    ·通过DBLINK调用远程数据库的Procedure

    ·在事务级别读一致性使用SET TRANSACTION READ ONLY

    ·执行复杂的查询,如:GROUPING SET,WITH查询语句等

    Database只读模式下不允许的操作:

    ·任何DML或DDL操作

    ·访问本地序列的查询

    ·对本地临时表的DML操作

    ADG的先决条件:

    1.ADG选项的license

    2.参数COMPATIBLE>=11.0.0

    ADG DETAILS

    如何检查当前是否启用ADG

    SQL> select database_role ,open_mode from v$database;

    DATABASE_ROLE      OPEN_MODE

    ------------------ --------------------

    PHYSICAL STANDBY   READ ONLY WITH APPLY

    启用ADG

    SQL> alter database open read only;

    SQL> recover managed standby database disconnect using current logfile;

    注:AUDIT_TRAIL参数在数据库打开时可用,read only的standby不支持update,如果AUDIT_TRAIL=DB,则在DB以read only模式打开后,AUDIT_TRAIL参数值会后台转换为OS.

    Standby为RAC时,如果应用redo的实例down掉,为保护数据的一致性,ORACLE会关闭其余OPEN READ ONLY的时候至MOUNT状态,需要手工启用另外的实例应用redo.

    评估应用是否适合read-only database

    参考文档:

    Note:1206774.1 - EVENT: 3177 "enable logging of read-only violations"

    ADG LAG

    standby由于以下的原因可能产生延迟:

    - CPU处理能力不足

    - 高网络延迟

    - 带宽限制

    监控LAG:

    V$DATAGUARD_STATS

    V$STANDBY_EVENT_HISTOGRAM

    监控redo apply性能:

    V$RECOVERY_PROGRESS

    Transport Lag:

    SQL> select * from v$dataguard_stats where name='transport lag';

    Apply lag:

    SQL> select * from v$dataguard_stats where name='apply lag';

    查询SCN实时比较primary和standby的LAG:

    SQL> create database link standby connect to system identified by 'oracle' using 'standby';

    SQL> select scn_to_timestamp((select current_scn from v$database))-scn_to_timestamp((select current_scn from v$database@standby)) LAG from dual;

     

    STANDBY_MAX_DATA_DELAT参数:

    STANDBY_MAX_DATA_DELAT={INTERGE|NONE},默认NONE,单位:秒,用来指定可容忍的LAG限定,参数为会话级,对SYS用户无效。

    如果standby查询超出指定的时间,抛出ORA-3172 STANDBY_MAX_DATA_DELAY has been exceeded.

    创建一个trigger,在用户登录时触发设定该参数:

    create or replace trigger adg_logon_trigger after logon on app.schema

    begin

    if (sys_context('userenv', 'database_role') in ('PHYSICAL STANDBY'))

    then

    execute immediate 'alter session set standby_max_data_delay=5';

    endif;

    end;

    强制redo apply同步:

    SQL> alter session sync with primary;

    执行此命令后,将会阻塞应用直到standby与primary同步。

    创建一个trigger强制用户登录后同步redo apply:

    create trigger adg_logon_sync_trigger after logon on user.schema

    begin

    if (sys_context('userenv','database_role') in ('PHYSICAL STANDBY'))

    then

    execute immediate 'alter session sync with primary';

    end if;

    end;

    性能提升

    11g ADG的性能比10g提升了许多,oracle内部做了一些优化,介质恢复在symmetric multiprocessing (SMP) systems也比之前版本快了许多。

    性能提升包括以下几点:

    - 更多的并行

    - 更高效的异步redo读取、解析和应用

    - 减少同步点并行应用算法

    - redo log介质恢复时不再阻塞应用下一组日志

     

  • 相关阅读:
    Android5.0全透明状态栏效果
    从关系库导入数据到hive-hbase表中
    Find Minimum in Rotated Sorted Array II 旋转数组中找最小值(有反复元素) @LeetCode
    深度解析国内首个云原生数据库POLARDB的“王者荣耀”
    深度解析国内首个云原生数据库POLARDB的“王者荣耀”
    nodejs中httpserver的安装和使用
    Java的循环语句
    Java的循环语句
    Java的循环语句
    Mybatis-generator生成Service和Controller
  • 原文地址:https://www.cnblogs.com/l10n/p/9407309.html
Copyright © 2011-2022 走看看