zoukankan      html  css  js  c++  java
  • DataGuard动态性能视图及日志传输

    原文:https://www.modb.pro/db/53451?xzs=

    一、DataGuard相关动态性能视图

    序号动态性能视图名称说明
    1 v$database 查询打开模式,角色,保护模式,保护级别
    2 v$managed_standby 备库查询进程情况,RFS、MRP0
    3 v$standby_log 查看standby redo log
    4 v$archive_dest_status 查看归档目的地的状态
    5 v$archive_dest 查看归档的目的地
    6 v$dataguard_status 查看DG状态事件
    7 v$standby_log 查看归档日志应用情况,非常重要
    8 v$archive_gap 查询主备之间gap
    9 v$log_history 查询归档历史
    10 v$dataguard_config 查看DG配置的DB_UNIQUE_NAME

    1.v$database(主、备)

    首当其冲肯定是v$database,在主备库执行下面语句分别查看:

    --查看db_name,打开模式,数据库角色,保护模式,保护级别 select name,open_mode,database_role,protection_mode,protection_level from v$database;

    image.png
    image.png

    上两张图可见该环境搭建了物理备库,最大性能模式并且已经开启了日志应用(MRP),如果备库取消日志应用的话,则执行该语句显示

    image.png

    • open_mode状态:read write、 read only、 READ ONLY WITH APPLY、 mounted;
    • database_role状态:PHYSICAL STANDBY、 LOGICAL STANDBY、 PRIMARY、SNAPSHOT STANDBY;
    • protection_mode及protection_level状态:MAXIMUM AVAILABILITY、 MAXIMUM PROTECTION、 MAXIMUM PERFORMANCE、resynchronization(重新同步模式,当备库没有同步之后,再重新同步显示该状态)、 unprotected(数据库mount,未保护状态?)

    2.v$managed_standby(备)

    查看进程情况,如果没有MRP0,就是没开启日志应用

    select process,pid,status,thread#,sequence# from v$managed_standby;

    image.png

    说明下这几个字段:

    • PROCESS:进程名称,主要有ARCH归档进程、RFS日志接收进程、MRP0日志应用进程;
    • PID:OS进程号
    • STATUS:进程状态,不同进程状态不一样,只说一下MRP0的有
      • APPLYING_LOG :正在应用日志,实时应用开启会一直显示,非实时只在应用时显示
      • WAIT_FOR_LOG :等待应用日志,开启非实时应用或主备不通显示该状态

    3.v$standby_log(备)

    查看standby redo log

    select group#,sequence#,archived,status from v$standby_log;

    image.png

    关于archived和status的官方文档说明

    image.png

    注意:最大可用模式,最高保护模式的备库都必须要有standby redo log

    4.v$archive_dest_status(备)

    V$ARCHIVE_DEST_STATUS displays runtime and configuration information for the archived redo log destinations.
    就是查看归档目的地的状态

    select dest_name,status,type,recovery_mode,SYNCHRONIZATION_STATUS,ERROR from v$archive_dest_status; --验证是否有gap,dest_id=2代表备库,1代表主库 select t."STATUS", t."GAP_STATUS" from v$archive_dest_status t where t."DEST_ID" = 2;

    image.png

    • status:
      • VALID:有效
      • INACTIVE:非活动的
      • DEFERRED:手工禁用(可用临时禁用同步,如果想临时禁用dg的话可以设置这个参数)
    • type:
      • LOCAL:主库
      • PHYSICAL:物理standby
      • LOGICAL:逻辑standby
      • SNAPSHOT:快照standby
    • recovery_mode这个字段能看到当前的日志应用模式,开启了实时应用就是MANAGED REAL TIME APPLY,没有开启实时应用是MANAGED

    5.v$archive_dest(主、备)

    主要是看归档的目的地,搭建的时候配置了LOG_ARCHIVE_DEST_1和LOG_ARCHIVE_DEST_2

    select dest_name,status,DESTINATION,ERROR from v$archive_dest;

    image.png

    6.v$dataguard_status(备)

    查看DG状态事件,如果有什么错误就可以在这里查看

    select * from v$dataguard_status t order by t."TIMESTAMP" desc

    7.v$standby_log(查看归档日志,非常重要)

    --查看日志应用情况 select unique thread#,max(sequence#) over(partition by thread#) last from v$archived_log; --查看哪些日志尚未应用(备库) select thread#,sequence#,first_time,next_time,applied from v$archived_log where applied='NO'; --查看哪些已应用 select thread#,name,sequence#,first_time,next_time,applied from v$archived_log;

    image.png

    • applied:
      • YES:日志文件已经应用,数据文件已经更新。
      • IN-MEMORY:日志文件已经在内存中应用,但数据文件还未更新。

    8.v$archive_gap

    查询备库有哪些没有同步

    9.v$log_history

    查询归档历史

    select database_role,db_unique_name,open_mode,protection_mode,protection_level,switchover_status from v$database;

    image.png

    10.V$DATAGUARD_CONFIG

    查看DG配置的DB_UNIQUE_NAME

    二、DataGuard日志传输服务

    1.归档目的地及状态参数

    --1.归档目的地的位置 show parameter log_archive_dest_1 本地 show parameter log_archive_dest_2 备库 --2.归档目的地状态(enable:开启 defer:禁用) show parameter log_archive_dest_state_1 本地 show parameter log_archive_dest_state_2 备库

    2.LGWR SYNC AFFIM 参数介绍(需要结合架构和概念那篇一起看)

    • SYNC:主库commit之前,等待备库接收完日志数据,至少一个备库。
    • ASYNC:主库commit之前,无需等待备库接收完日志数据。
    • AFFIRM:日志信息写到备库standby日志后,通知主库日志接收完毕。
    • NOAFFIRM:不用等日志信息写到备库standby日志,就通知主库日志接收完毕。

    官方文档说明的配置

    • 最大性能推荐配置: LGWR ASYNC NOAFFIRM
    • 最高可用推荐配置: LGWR SYNC AFFIRM
    • 最大保护推荐配置: LGWR SYNC AFFIRM

    3.log_archive_dest_n设置时的几个可选设置

    SYNC AFFIRM NET_TIMEOUT=15 REOPEN=60 COMPRESSION=ENABLE SERVICE=tnssbdb LGWR SYNC AFFIRM NET_TIMEOUT=15 REOPEN=60 COMPRESSION=ENABLE VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=sbdb
    • NET_TIMEOUT:在SYNC模式下,LGWR进程等待备库成功接收日志的时间,默认30秒,使用该参数修改
    • REOPEN:自动重新连接备库的最小秒数,默认300秒,使用该参数修改
    • COMPRESSION:数据以压缩的形式传输,enable启用日志压缩,可以减少带宽的占用

    三、DataGuard日志应用服务

    本质上是使用介质恢复来保持主库和备库的数据同步。

    应用redo数据(主库)到standby备库,以保持与primary主库的数据一致。
    redo数据即可以从standby数据库的归档文件读取,也可直接应用standby redo log文件(如果实时应用打开了的话)。

    --1.开启实时应用 alter database recover managed standby database using current logfile disconnect; --2.开启非实时应用,切换归档才应用日志 alter database recover managed standby database disconnect; --3.取消应用 alter database recover managed standby database cancel;
    日积月累
  • 相关阅读:
    浅析String.intern()方法
    com.alibaba.druid.pool.DruidPooledConnection cannot be cast to oracle.jdbc.OracleConnection 异常解决办法
    ChannelEventRunnable handle RECEIVED operation error, channel is NettyChannel解决方法
    jsch channel is not opened原因及解决
    学习地址(oraclemysqllinux)
    python中数据分析常用函数整理
    Python之使用Pandas库实现MySQL数据库的读写
    Python数据分析
    如何用sql查询出连续三个月金额大于50的记录
    【Python项目实战】Pandas:让你像写SQL一样做数据分析(一)
  • 原文地址:https://www.cnblogs.com/ss-33/p/14922016.html
Copyright © 2011-2022 走看看