oracle dataguard延迟,dataguard延迟日志应用的问题

article/2025/9/29 16:05:53

本帖最后由 lfree 于 2012-12-11 12:07 编辑

我管的dataguard使用recover managed standby database disconnect from session delay 720。

我发现一个问题,如果使用asm作为存储,会出现"大量“读取操作。

dd06a1abc3fb84da465ff4eff32374f6.gif

snap.jpg (10 KB, 下载次数: 43)

2012-12-11 12:04 上传

如果执行alter  database open read only ;,流量下降下来。我的存储使用IP存储。

我开始以为SGA设置不合理,检查发现:

SQL> show sga

Total System Global Area 2147483648 bytes

Fixed Size                  2085360 bytes

Variable Size             385879568 bytes

Database Buffers         1744830464 bytes

Redo Buffers               14688256 bytes

SQL> show parameter 32k

NAME                                 TYPE        VALUE

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

db_32k_cache_size                    big integer 256M

--应该是正常,也是db_32k_cache_size设置小一点,设置为512M。

recover managed standby database disconnect from session delay 720 ;

top -c 观察,隔一段时间出现在前面:

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND

19628 oracle    15   0 2221m  37m  16m S  1.0  0.9   0:00.67 ora_mrp0_icarestd

使用strace跟踪发现:

$ strace -p 19628 -t -e pread  -o /tmp/aa1

....

15:05:48 pread(17, "\25\302\0\0\260\3\0\0\35\312\23\0\377\377\1\4\212\245\0"..., 49152, 137101312) = 49152

15:05:48 pread(17, "\25\302\0\0\307\1\0\0\257\311\23\0\377\377\1\4\346\r\0"..., 16384, 126861312) = 16384

15:05:48 pread(18, "\25\302\0\0\310\1\0\0\260\311\23\0\377\377\1\4\303\r\0"..., 16384, 229507072) = 16384

15:05:53 pread(17, "\25\302\0\0\1\0\0\0\0\0\0\0\0\0\1\4\24\232\0\0\0\0\0\0"..., 16384, 125845504) = 16384

15:05:53 pread(17, "\25\302\0\0\1\0\0\0\0\0\0\0\0\0\1\4\24\232\0\0\0\0\0\0"..., 16384, 429932544) = 16384

....

lrwx------  1 oracle oinstall 64 Dec 10 15:07 17 -> /dev/raw/raw1

lrwx------  1 oracle oinstall 64 Dec 10 15:07 18 -> /dev/raw/raw2

$ cut -f1 -d' ' /tmp/aa1 | uniq -c

212 15:05:48

164 15:05:53

48 15:05:54

212 15:05:59

212 15:06:04

69 15:06:09

143 15:06:10

--基本上间隔5秒,读/dev/raw/raw[12].

--过滤^15:05:59。

$ grep '^15:05:59'  /tmp/aa1  | cut -f2 -d '=' > /tmp/aa2

$ wc -l /tmp/aa2

212 /tmp/aa2

--后面写入211个+,并且加入pq

$ cat /tmp/aa2 | dc

20267008

--读取了 20267008/1024/1024=19.328125M,分摊到5秒的时间内,确实正好4M上下。基本和流量图一致。

#  dstat -n -N eth1,eth0,total 1 100

--net/eth1----net/eth0---net/total-

recv  send: recv  send: recv  send

0     0 :   0     0 :   0     0

20M 5043k:2545k   64k:  22M 5108k

0     0 :   0     0 :   0     0

19k   81k:  24k 2168B:  44k   83k

0     0 :   0     0 :   0     0

5634B  108k:  60k 6982B:  66k  114k

0     0 :   0     0 :   0     0

20M  161k:  17k 2524B:  20M  164k

0     0 :   0     0 :   0     0

17k   37k: 958B  624B:  18k   38k

0     0 :   0     0 :   0     0

11M  109k:  29k 2232B:  11M  111k

0     0 :   0     0 :   0     0

9227k   89k:4685B  962B:9231k   90k

0     0 :   0     0 :   0     0

27k  297k: 144k   12k: 172k  309k

0     0 :   0     0 :   0     0

20M  254k:  82k 3384B:  20M  257k

0     0 :   0     0 :   0     0

18k   43k:3890B  962B:  22k   43k

0     0 :   0     0 :   0     0

--基本验证。

#  dstat -d -D sda,sdb,total 1 100

--dsk/sda-----dsk/sdb----dsk/total-

read  writ: read  writ: read  writ

252B   13k:6134B   11k:6387B   24k

0     0 :   0    59k:   0    59k

0     0 :  16k   37k:  16k   37k

0     0 :   0     0 :   0     0

0     0 :  19M  481k:  19M  481k

0   168k:  16k   62k:  16k  230k

0     0 :   0   108k:   0   108k

0     0 :   0    18k:   0    18k

0     0 :  16k   46k:  16k   46k

0     0 :  16M 9216B:  16M 9216B

0     0 :3568k   18k:3568k   18k

0     0 :  16k   58k:  16k   58k

0     0 :   0  4096B:   0  4096B

0     0 :   0    14k:   0    14k

0     0 :  16k   40k:  16k   40k

0     0 :  19M 5120B:  19M 5120B

0     0 :   0    40k:   0    40k

0     0 :  16k   47k:  16k   47k

0     0 :   0     0 :   0     0

0     0 :  12M  132k:  12M  132k

0     0 :  48M   32k:  48M   32k

0     0 :   0   168k:   0   168k

0     0 :   0    14k:   0    14k

0     0 :  16k  180k:  16k  180k

0    16k:   0  4096B:   0    20k

0     0 :5776k  153k:5776k  153k

0     0 :  14M   36k:  14M   36k

0     0 :   0  5120B:   0  5120B

0     0 :   0    78k:   0    78k

0     0 :  16k   80k:  16k   80k

0     0 :   0   176k:   0   176k

--问题是不知道mrp进程到底读取什么????

我在另外使用文件系统的dataguard上监测mrp进程,发现读取的控制文件。而且文件系统有缓存的,基本不存在读取磁盘操作。

这个是否以为延迟应用日志+asm这个方式有一些问题。


http://chatgpt.dhexx.cn/article/mKspHFNj.shtml

相关文章

Oracle Dataguard(主库为 Oracle rac 集群)配置教程(01)—— dataguard 服务器安装 Oracle 软件

Oracle Dataguard(主库为 Oracle rac 集群)配置教程(01)—— dataguard 服务器安装 Oracle 软件 / 本专栏详细讲解 Oracle Dataguard(Oracle 版本为11g,主库为双节点 Oracle rac 集群)的配置过程…

Oracle DataGuard

一、DataGuard介绍 DataGuard是Oracle的一种高可用性数据库方案,主要用于数据容灾和读写分离。 数据库角色 Primary:主库 Standby:备库 Standby类型 物理standby:redolog以介质恢复的方式实现同步。用于数据备份(11G也可以读写分离)。 逻辑…

Data Guard原理

文章来源于网络整理 DG通过提供冗余数据来提供数据保护 1.常用于异地容灾和小企业的高可用解决方案 2.虽然可以在Standby机器上执行只读查询,从而分散Primary数据库的性能压力,但是绝不是性能解决方案 DataGuard介绍 在DG环境中,至少会有两…

基于Java的员工工资管理系统

​ 源码编号:F-A15 项目类型:Java SE项目(awtswing) 项目名称:基于Java的员工工资管理系统(EmployeeSalary) 用户类型:双角色(员工、管理员) 主要技术:ja…

Java工程师工资水平出炉!真厉害了

Java因为其十分适用于企业级开发的特点,所以一直是国内大厂最主要使用的语言之一,也是应用最广泛的编程语言。 也由于Java主要用于开发企业级应用,市场需求同比其他语言来说会更大一些,自然它的起薪也相对较高,因而很多…

Java培训出来后一般多少工资

学完Java培训出来后一般多少工资呢?这是很多人都比较关心的一个问题,小编在这里告诉大家,java技术这个岗位分为初级、中级和高级,每个等级的工资情况也是不一样,来看看下面的详细介绍。 Java培训出来后一般多少工资?Java程序员薪…

2022上海Java工资收入概览

微信公众号,关注:georgezheng 越来越多的人选择从事IT,接触计算机互联网,除了学习复杂庞大的知识体系,也比较关注各地区Java工资收入,我收集了上海的信息做一次整理,数据来源职友集和平…

Java基础(员工工资管理系统)

项目介绍: 某公司的雇员分为以下若⼲类: SalariedEmployee:拿固定⼯资的员⼯。 HourlyEmployee:按⼩时拿⼯资的员⼯,每⽉⼯作超出160⼩时的部分按照1.5倍⼯资发放 SalesEmployee:销售⼈员,⼯资由⽉销售额和…

2020年5大一线城市Java薪资水平汇总,你还差多少呢?

程序员作为薪资最高的行业之一,一直是很多人转行的热门首选行业。Java程序员又在所有程序员中占比最大, 因此,Java程序员的薪资就能够很好的代表行业的薪资水准。 今天就为大家整理5大热门城市的Java薪资情况,看看你还差多少,你又想拿多少?或者你希望去哪个城市发展呢?…

Redis LRU

一:Redis内存驱逐的几种策略 检测易失数据(可能会过期的数据集server.db[i].expires ) ① volatile-lru:挑选最近最少使用的数据淘汰 ② volatile-lfu:挑选最近使用次数最少的数据淘汰 ③ volatile-ttl&#xff1a…

LRU链表及LRU缓存

注:本文分析基于linux-4.18.0-193.14.2.el8_2内核版本,即CentOS 8.2 1、 关于LRU LRU即Least recently used,也就是最近最少使用,一般用作缓存淘汰上,它的核心思想是——如果一个数据在最近一段时间没有被访问到&…

14.1 LRU链表

在最近几十年操作系统的发展过程中,有很多页面交换算法,其中每个算法都有各自的优点和缺点。linux内核中采用的页面交换算法主要是LRU算法和第二次机会法(second chance)。 LRU链表 LRU是least recently used(最近最少使用)的缩写…

mysql lru_MySQL · 源码分析 · InnoDB LRU List刷脏改进之路

之前的一篇内核月报MySQL 引擎特性 InnoDB Buffer Pool 中对InnoDB Buffer pool的整体进行了详细的介绍。文章已经提到了LRU List以及刷脏的工作原理。本篇文章着重从MySQL 5.7源码层面对LRU List刷脏的工作原理,以及Percona针对MySQL LRU Flush的一些性能问题所做…

图解LRU算法

目录 一、什么是LRU算法? 二、基于双向链表Map实现LRU算法 1. 用双向链表看成cache缓存, 数据存放在链表上的每个节点上。 2. 用Map记录访问cache的历史, 只要访问了 cache就将节点放置Map里。 3. 图解移动节点和淘汰策略过程 三、完整代码 四、借助LinkedHashMap实现 一…

mysql lru_浅析MySQL的lru链表

一、简述传统的LRU链表 LRU:Least Recently Used 相信大家对LRU链表是不陌生的,它算是一种基础的数据结构吧,而且想必面试时也被问到过什么是LRU链表,甚至是让你手写一个LRU链表。 想必你已经知道了MySQL的Buffer Pool机制以及MyS…

LRU实现算法

转载自:https://www.cnblogs.com/Dhouse/p/8615481.html 四种实现方式 LRU 1.1. 原理 LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过&#x…

Redis LRU算法

一、配置Redis内存淘汰策略 maxmemory 100mbmaxmemory-policy allkeys-lrumaxmemory-samples 5注意:Redis的LRU算法并非完整的实现,而是近似LRU的算法,详细介绍点击这里 二、LRU实现原理 1、双向链表 哈希表 1、哈希表:查找快&…

LRU链表介绍

文章目录 1. 简介2. LRU 组织 2.1 LRU 链表2.2 LRU Cache2.3 LRU 移动操作 2.3.1 page 加入 LRU2.3.2 其他 LRU 移动操作3. LRU 回收 3.1 LRU 更新3.2 Swappiness3.3 反向映射3.4 代码实现 3.4.1 struct scan_control3.4.2 shrink_node()3.4.3 shrink_list()3.4.4 shrink_acti…

LRU页面回收

内存回收算法总是会在一定的时间将一些内存回收, 内存回收算法是通过LRU链表对page页面进行管理的,对于那些新的页面会将其插入到LRU链表头,回收时将返回LRU链表末尾的元素,代表老化程度最高的页面 基本数据结构 typedef struct…

利用数组实现lru

LRU主要包含两个函数,第一个插入一个页面,第二个获得一个页面 主要思路如下,当插入页面的时候,所有的页面向后移动一个单位(若果多出来一个元素舍弃掉),然后把这个页面放到数组首元素 当获得一…