Oracle Data Guard延迟的原因

2024-06-03 11:08
文章标签 oracle 原因 data 延迟 guard

本文主要是介绍Oracle Data Guard延迟的原因,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Oracle Data Guard中很可能出现延迟的情况,而数据一旦出现延迟就意味着丢数据。退一步来说丢数据总比数据乱了好,但是回过头来,能不丢数据但是丢了,这就有些说不过去了。

因为预防人为误操作等,可能有些环境中会特意设置一个延迟,基本就是下面的设置方法:

方法1:

alter database recover managed standby database delay 120 disconnect from session;

方法2

alter system set log_archive_dest_3='service=db3 lgwr async delay=120 valid_for=(all_logfiles,all_roles)db_unique_name=db3';

我们这里所说的延迟是计划外的延迟,比如一个ADG的环境,案例应该是实时同步,但是却有数据同步出现延迟的情况。我自己碰到一些,还帮网友处理过几次。

大体来说,10g和11g中的数据同步延迟场景还不大一样。

在10g中如果一主两备的架构下,如果备1是在read only状态,则整个数据同步还是会延迟,需要手工切换日志才能增量同步。

在11g中,倒不存在这样的限制了,因为是Active Data Guard的方式,所以可以在read only的基础上接收应用增量数据变化。但是延迟的问题依旧可能存在。

我一个例子来说明,简单来说,如何判断一个Data Guard是Active Data Guard呢,可以用一个SQL语句来判定。

10:27:21 SQL>select current_scn from v$database;
CURRENT_SCN
232913508003
10:27:22 SQL> /
CURRENT_SCN
232913508005
随着时间的变化,SCN会发生变化,这和10g是一个鲜明的对比。
而如果Data Guard环境出现延迟,如果通过DG Broker来查看,基本就是下面的显示情况。

DGMGRL> show database verbose sol;
Role: PHYSICAL STANDBY
Intended State: APPLY-ON
Transport Lag: 3 minutes 37 seconds
Apply Lag: 3 minutes 37 seconds
Real Time Query: ON
同时在备库的alert日志中查看却似乎看不出什么特别之处。我碰到一个环境,数据延迟时好时坏,很不稳定,听起来很棘手,我们来简单看看。

日志如下:

RFS[1]: Opened log for thread 1 sequence 476185 dbid 1210367666 branch 622336050
Wed Feb 08 11:55:23 2017
Media Recovery Log /U01/app/oracle/oradata/sol/arch/SOL/archivelog/2017_02_08/o1_mf_1_476184_d9o2rzdc_.arc
Media Recovery Waiting for thread 1 sequence 476185 (in transit)
出现这种情况,基本可以断定是差一个归档。

我们看看主备库的日志文件的情况。
查看备库的standby log情况:

SQL> select group#,bytes from v$standby_log;
GROUP# BYTES
---------- ----------
21 524288000
22 524288000
。。。

主库的online log情况:

SQL> select group#,bytes,status from v$log
GROUP# BYTES STATUS
---------- ---------- ----------------
1 209715200 INACTIVE
2 209715200 INACTIVE
3 209715200 INACTIVE
4 209715200 INACTIVE
5 209715200 INACTIVE
6 209715200 INACTIVE
7 524288000 INACTIVE
8 629145600 INACTIVE
9 1073741824 CURRENT
10 1073741824 INACTIVE
如果到了这里,想必就会清晰很多了,主库中的online log大小不一,看起来是经过了多次设置,估计最开始设置为200M,感觉有些小了,后面改进,设置成了500M,估计还是差强人意,就改成了1G。其实这个日志是可以做调整设置的,而不是一锤子买卖,肯定能修改。
如果出现延迟,很可能就是和日志的大小情况有关,主库的小,备库的大,暂时不会出现问题,如果主库的大,备库的小,那就有问题,或者备库没有standby log,也是如此。

一个较为正常的备库的alert日志情况如下,假设归档设置是默认的情况下。会有下面的额外两行尤其需要关注,你可以看到standby log被引用。

RFS[1]: Selected log 23 for thread 1 sequence 476186 dbid 1210367666 branch 622336050
Media Recovery Log /U01/app/oracle/oradata/sol/arch/SOL/archivelog/2017_02_08/o1_mf_1_476185_d9o5ocmt_.arc
Wed Feb 08 14:14:06 2017
Media Recovery Waiting for thread 1 sequence 476186 (in transit)
Recovery of Online Redo Log: Thread 1 Group 23 Seq 476186 Reading mem 0

Mem# 0: /U01/app/oracle/oradata/sol/arch/SOL/onlinelog/o1_mf_23_d9ofo81j_.log

所以说,任何看起来复杂的问题的原因都会很简单,明确了问题,解决起来就会得心应手。

这篇关于Oracle Data Guard延迟的原因的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1026809

相关文章

MyBatis延迟加载与多级缓存全解析

《MyBatis延迟加载与多级缓存全解析》文章介绍MyBatis的延迟加载与多级缓存机制,延迟加载按需加载关联数据提升性能,一级缓存会话级默认开启,二级缓存工厂级支持跨会话共享,增删改操作会清空对应缓... 目录MyBATis延迟加载策略一对多示例一对多示例MyBatis框架的缓存一级缓存二级缓存MyBat

MyBatis Plus大数据量查询慢原因分析及解决

《MyBatisPlus大数据量查询慢原因分析及解决》大数据量查询慢常因全表扫描、分页不当、索引缺失、内存占用高及ORM开销,优化措施包括分页查询、流式读取、SQL优化、批处理、多数据源、结果集二次... 目录大数据量查询慢的常见原因优化方案高级方案配置调优监控与诊断总结大数据量查询慢的常见原因MyBAT

Oracle数据库在windows系统上重启步骤

《Oracle数据库在windows系统上重启步骤》有时候在服务中重启了oracle之后,数据库并不能正常访问,下面:本文主要介绍Oracle数据库在windows系统上重启的相关资料,文中通过代... oracle数据库在Windows上重启的方法我这里是使用oracle自带的sqlplus工具实现的方

Oracle Scheduler任务故障诊断方法实战指南

《OracleScheduler任务故障诊断方法实战指南》Oracle数据库作为企业级应用中最常用的关系型数据库管理系统之一,偶尔会遇到各种故障和问题,:本文主要介绍OracleSchedul... 目录前言一、故障场景:当定时任务突然“消失”二、基础环境诊断:搭建“全局视角”1. 数据库实例与PDB状态2

java.sql.SQLTransientConnectionException连接超时异常原因及解决方案

《java.sql.SQLTransientConnectionException连接超时异常原因及解决方案》:本文主要介绍java.sql.SQLTransientConnectionExcep... 目录一、引言二、异常信息分析三、可能的原因3.1 连接池配置不合理3.2 数据库负载过高3.3 连接泄漏

oracle 11g导入\导出(expdp impdp)之导入过程

《oracle11g导入导出(expdpimpdp)之导入过程》导出需使用SEC.DMP格式,无分号;建立expdir目录(E:/exp)并确保存在;导入在cmd下执行,需sys用户权限;若需修... 目录准备文件导入(impdp)1、建立directory2、导入语句 3、更改密码总结上一个环节,我们讲了

深度剖析SpringBoot日志性能提升的原因与解决

《深度剖析SpringBoot日志性能提升的原因与解决》日志记录本该是辅助工具,却为何成了性能瓶颈,SpringBoot如何用代码彻底破解日志导致的高延迟问题,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言第一章:日志性能陷阱的底层原理1.1 日志级别的“双刃剑”效应1.2 同步日志的“吞吐量杀手”

Oracle迁移PostgreSQL隐式类型转换配置指南

《Oracle迁移PostgreSQL隐式类型转换配置指南》Oracle迁移PostgreSQL时因类型差异易引发错误,需通过显式/隐式类型转换、转换关系管理及冲突处理解决,并配合验证测试确保数据一致... 目录一、问题背景二、解决方案1. 显式类型转换2. 隐式转换配置三、维护操作1. 转换关系管理2.

Oracle查询表结构建表语句索引等方式

《Oracle查询表结构建表语句索引等方式》使用USER_TAB_COLUMNS查询表结构可避免系统隐藏字段(如LISTUSER的CLOB与VARCHAR2同名字段),这些字段可能为dbms_lob.... 目录oracle查询表结构建表语句索引1.用“USER_TAB_COLUMNS”查询表结构2.用“a

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结