问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何诊断Oracle Redo Log引发的性能问题

发布网友 发布时间:2022-04-29 06:16

我来回答

1个回答

热心网友 时间:2022-04-10 08:43

  一、Rodo Log性能调整目标:

  在能够影响Oracle性能的诸多因素中,Redo
Log相关的因素从某种程度上可以说是最为重要同时也是最值得关注的。因为在一个OLTP系统中Oracle通过各种技术以及优良的设计,尽量做到将大部分操作在内存中完成,以便最大程度的提升性能。因此在Oracle的诸多后台进程以及用户进程的大部分操作都是内存操作,而且这些操作会通过延迟写入技术尽可能的将磁盘I/O操作滞后。但是在这些操作中却有某些例外,其中最明显的就是针对Redo
Log的操作。

  在Oracle中针对Redo
Log的操作主要由LGWR进程完成,这个进程可以说是Oracle所有后台进程中最繁忙的进程,而且这个进程可能要频繁的进行I/O操作,这是因为Oracle出于数据安全的考虑必须保证联机在线重做日志可靠的写入日志文件,以便在发生崩溃时能够有效恢复数据,而真正的数据可能会等一些时间延迟写入数据文件。这种特点在Oracle的各个后台进程中显得有些独树一帜。另外LGWR全局唯一,即一个实例只能有一个活动的LGWR进程,由于要进行频繁的I/O操作可想而知是很容易造成LGWR进程竞争的。由于LGWR在Oracle实例结构设计中的特殊地位,一旦出现LGWR性能瓶颈,那么对整个系统的性能影响将会是极为严重的,同时对数据安全也是一个潜在的威胁。

  因此作为Oracle日常的数据库管理,我们要给与这部分相当的关注,尽早发现问题,尽早作出调整。调整的目标就是要做到Log_Buffer大小适中(不要过大,也不能太小),要满足用户进程的使用需要,每当系统负载有一个明显的增加时,就应该考虑调整它的大小。比如因为业务拓展当前系统固定用户数量从1万人猛增到3万人,那么就应该对Log_Buffer大小给与关注。另外就是要做到日志文件的大小适中,日志组的日志文件数量合适,不能影响LGWR写日志文件的性能,不能造成日志文件间的写入竞争,不能在日志切换归档发生时引发磁盘竞争等等。

  二、监控与问题排查:

  在进行Redo
Log问题监控时,主要关注两个方面:日志缓冲区空间使用的等待情况和日志缓冲区数据槽的分配情况。通过这两方面的监控并配合一些问题排查手段,通常可以发现大量问题。

  (1)日志缓冲区空间使用的等待情况:

  可以通过查询v$session_wait来监控日志缓冲区空间使用的等待情况,通过如下SQL语句进行查询:

select sid,event,seconds_in_wait,state
from v$session_wait
where
event='log buffer space%';

  以上的查询中可以通过观察seconds_in_wait的数值来分析问题,这个数值可以显示如下问题:日志切换缓慢引发的等待、LGWR写入缓慢引发的等待、日志文件写入引起的磁盘竞争引发的等待。

  这些等待的发生可能是由于如下问题引起的:

  1、日志文件写入时存在磁盘竞争:

  这种情况多见于日志切换发生时,由于日志文件组的规划不当,或者存放日志文件的磁盘写入速度缓慢,或者是因为磁盘RADI类型不当都会引发这个问题,如果怀疑村在这些情况,可以通过如下语句进行监控:

select event,total_waits,time_waited,average_wait
from
v$system_event
where event like 'log file switch
completion%';

  可以通过观察total_waits,time_waited,average_wait数值来分析问题,如果这些值过高(注意何谓“过高”,不同系统考量标准不一样,要具体分析),那么说明存在以上问题。此时可以通过如下措施解决:

  ● 将同一日志文件组的各个成员分配到不同的磁盘上,进而减少日志写入以及日志切换和日志归档时引发的竞争;

  ● 将日志文件尽可能存放在快速的磁盘上;

  ● 要合理选择RADI类型对磁盘进行条带化,通常不要选择RADI5来作为日志文件磁盘的RADI类型,通常推荐使用RADI10;

  ● 可以增加REDO LOG文件大小,来延缓日志切换,下面是一个增加日志文件大小的方法;

  假如原来有3个小的redo log file,下面是UNIX环境下的一个例子:

  第一步:往数据库添加三个大的redo logfile

SVRMGRL>ALTER DATABASE ADD LOGFILE GROUP
4
('/opt/oradata/app/redo04.log',
'/ora_bak/oradata2/redolog/redo04.log')
size 16M reuse;

SVRMGRL>ALTER DATABASE ADD LOGFILE GROUP
5
('/opt/oradata/app/redo05.log',
'/ora_bak/oradata2/redolog/redo05.log')
size 16M reuse;

SVRMGRL>ALTER DATABASE ADD LOGFILE GROUP
6
('/opt/oradata/app/redo06.log',
'/ora_bak/oradata2/redolog/redo06.log')
size 16M reuse;

  第二步: 手工地做log switch,使新建的redo logfile起作用

SVRMGRL>alter system switch logfile;

  此操作可以执行一到几次,使旧的redo logfile成invalid状态。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
轻度慢性萎缩性胃炎 活动期,伴轻度肠 化 胃角多发糜烂。医生说了我... 胃窦粘膜慢性轻度萎缩性炎伴轻度肠化胃窦粘膜慢性轻度萎缩性炎? 芬兰留学读研费用是多少 芬兰留学读研时间 去芬兰留学学费生活费一年要多少 芬兰留学读研费用是多少? 芬兰留学读研学费多少? 感冒好多天了,可不可以打蓝球或者其它运动出出汗啊? 感冒打喷嚏,鼻塞然后可以让自己多出出汗吗 宝宝感冒了能去游泳吗 oracle current online redo log 丢失 数据库会不会丢失数据 Oracle误删除了日志,我们公司的oracle数据库被人误删除了在线日志onlin... 银杏果怎么吃好 梦见一只老鼠被蛇逮住刚要吞 ,后面一只猫把蛇一口咬住吃掉了我赶过去猫跑了,留下一条老鼠尾巴 梦见有老鼠乱爬也梦到了大蛇,不小心踩住蛇的尾巴蛇来咬我,我坐在了蛇头上摸七寸不想被咬却摸到了蛇信子? 隔年的银杏果可以食用吗 梦见蛇和老鼠打架蛇尾巴断了老鼠死了 白果怎么吃才没有毒? 梦见老鼠壁虎和蛇在窗户上,老鼠把壁虎的尾巴咬掉了,蛇也逃走了,老鼠也... 银杏果怎么处理才能无毒安全食用? 银杏果怎么处理才能无毒,安全食用? 梦见老鼠把小蛇咬来吃了是什么意思 解梦鼠吃蛇 梦见老鼠把蛇吃了,是什么征兆?? 银杏果怎么吃不中毒 有哪些禁忌 做梦梦到老鼠吃蛇 银杏果怎么吃才能不容易中毒 前天做了个梦。很奇怪,我梦见包里有一条蛇,然后拿出来后从它的嘴巴里爬出老鼠从蛇的尾巴把蛇一点点吃掉 javascript 的 promise 模式,有什么典型的应用 银杏果怎么吃不中毒 oracle 删除archivelog对数据库影响么 越狱了的iphone4s连接到电脑用什么查看文件 redo.log删除,oracle数据库open库方法 iPhone4s越狱后无法连接电脑. oracle archive log 删除对数据库有影响吗 越狱苹果4S自动升级电量不够就直接数据线连接在电脑上了现在卡屏了怎么办? oracle数据库中日志的作用是什么?简单描述Oracle二级日志结构的特点... 苹果4s越狱后连接itunes或者pp助手都无反应,但是手机连接电脑驱动有usb显示为何 Oracle中select查询语句会产生redo log吗 越狱苹果4S升级用手机自动升级的电量不够就直接给数据线连接在电脑上了现在卡屏了怎么办~求大神~ oracle数据库日志满了如何清理 我的苹果4s越狱了用什么软件和电脑同步? Oracle的redo日志会自动清理吗 越狱苹果4S升级 用手机自动升级的 电量不够就直接给数据线连接在电脑上了 现在卡屏了 怎么办~求大神~ 抖音剪辑电影到哪里下载 oracle数据库系统发生障碍时,可以基于日志进行恢复? 可以恢复哪些信息... 苹果4S数据线怎么连接电脑?越狱要关机么? 微信怎么发表情有特效 刚买的苹果4s越狱后怎么用数据线一连接电脑就显示,已连接照相机Apple iPhone啊,到底怎么能下载软件啊, oracle中如果redo日志文件损坏,应该怎么恢复呀?