zoukankan      html  css  js  c++  java
  • Redo Gap 处理与优化

    理论背景

    当redo data 传送发生中断时就会产生redo gap。当redo 传送恢复正常以后,redo transport service 会自动检测redo gap并发送缺失的redo 到destination。解决redo gap的时间与gap 的数量和网络有一定的关系。 Gap越少,网络越好,解决gap就会越快。

    手工解决 Gap 问题

    在Oracle 11g里,Data Guard 切换多了一个新的功能:flush redo。
    SQL> alter system flush redo to target_db_name;
    Flush 能把没有发送的redo 从主库传送到standby库。 只要主库能启动到mount 状态,
    那么Flush 就可以把没有发送的归档和current online redo 发送到备库。

    1 解决物理standby Gap问题

    1.1 物理standby 库上执行如下SQL,判断是否存在gap:
    SQL> SELECT * FROM V$ARCHIVE_GAP;
    THREAD# LOW_SEQUENCE# HIGH_SEQUENCE#
    ----------- ------------- --------------
    1 8 11

    1.2 主库查询,确认一下:
    SQL> SELECT NAME FROM V$ARCHIVED_LOG WHERE THREAD#=1 AND DEST_ID=1 AND SEQUENCE# BETWEEN 7 AND 11;
    NAME
    --------------------------------------------------------------------------------
    /primary/thread1_dest/arcr_1_8.arc
    /primary/thread1_dest/arcr_1_9.arc
    /primary/thread1_dest/arcr_1_10.arc

    1.3 把这些归档copy到物理standby,并使用ALTER DATABASE REGISTER LOGFILE应用这些归档:

    SQL> ALTER DATABASE REGISTER LOGFILE '/physical_standby1/thread1_dest/arcr_1_7.arc';
    SQL> ALTER DATABASE REGISTER LOGFILE '/physical_standby1/thread1_dest/arcr_1_8.arc';
    SQL> ALTER DATABASE REGISTER LOGFILE '/physical_standby1/thread1_dest/arcr_1_9.arc';

    2 解决逻辑standby Gap问题

    2.1 对于logical standby database,在logical standby database上查询DBA_LOGSTDBY_LOG视图。
    SQL> COLUMN FILE_NAME FORMAT a55
    SQL> SELECT THREAD#, SEQUENCE#, FILE_NAME FROM DBA_LOGSTDBY_LOG L WHERE NEXT_CHANGE# NOT IN
    (SELECT FIRST_CHANGE# FROM DBA_LOGSTDBY_LOG WHERE L.THREAD# = THREAD#) ORDER BY THREAD#, SEQUENCE#;

    THREAD# SEQUENCE# FILE_NAME
    ---------- ---------- -----------------------------------------------
    1 6 /disk1/oracle/dbs/log-1292880008_6.arc
    1 10 /disk1/oracle/dbs/log-1292880008_10.arc

    正常情况下,这里每个trhead只返回一个最高值,这里返回2个,说明的7,8,9确实了。

    2.2 Copy 缺失的log file到logical standby database,然后注册:
    SQL> ALTER DATABASE REGISTER LOGICAL LOGFILE '/disk1/oracle/dbs/log-1292880008_7.arc';
    SQL> ALTER DATABASE REGISTER LOGICAL LOGFILE '/disk1/oracle/dbs/log-1292880008_8.arc';
    SQL> ALTER DATABASE REGISTER LOGICAL LOGFILE '/disk1/oracle/dbs/log-1292880008_9.arc';

    优化:

    在网络条件不好的情况下,Redo transport services有2个可选的参数,可以提高恢复速度:
    (1)Redo Transport Compression
    压缩属性是在LOG_ARCHIVE_DEST_n 参数中指定,指定后,会在传送之前对redo data进行压缩,从减少传送的时间。
    日志文件的压缩比很高,对性能会有很大的提高。但会消耗一定的CPU 资源。
    (2)Parallel Redo Transport Network Sessions
    MAX_CONNECTIONS 属性同样也是在LOG_ARCHIVE_DEST_n 参数中指定,可以指定多个sesion 来同时发送redo data。

  • 相关阅读:
    python中自定义模块导入
    EditText------Android
    Fragment类实现
    Android文件访问
    python中pip使用国内镜像提高安装速度
    esri/geometry包 (arcgis api for js)
    【CSDN 编辑器 MarkDowm 使用技巧】
    for 循环 :从指定下标开始,并指定步长
    【车牌识别】-车牌中字符分割代码详解
    【 Linux 常用命令】
  • 原文地址:https://www.cnblogs.com/andy6/p/6534376.html
Copyright © 2011-2022 走看看