中易网

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

答案:1  悬赏:10  
解决时间 2021-03-01 22:47
如何诊断Oracle Redo Log引发的性能问题
最佳答案
一、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状态。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
好口福炖汤快餐猪脚粉老店地址在什么地方,想
横山区司法局武镇司法所在哪里啊,我有事要去
小米4下面那45个眼是干什么的
为什么有的人会那么喜欢看鬼片或者恐怖故事?
和谐白领公寓在什么地方啊,我要过去处理事情
请问我想坐亚航从吉隆坡到新加坡,再从新加坡
VF 中错误 LINK : fatal error LNK1207: inco
明月几时有把酒问青天,不知天上宫阆,今昔是
全国二本以上招收体育舞蹈专业的大学
辽宁瀚新集团这个地址在什么地方,我要处理点
It is such a good place__________everybody
法律保障的规范是什么?
南财管道湛江市营销中心地址在什么地方,想过
设A,B两个字节中的数据为:A=01111001,B=
qq华夏对话框
推荐资讯
NIKE品质的标准有哪些?谢谢了,大神帮忙啊
民生银行信用卡每个月28号还款,推迟一天行吗
大直沽中路/津塘路(路口)在什么地方啊,我要
变身英雄联盟解说中的干巴鲁是什么意思
用英美治理雾霾的方式治理中国合适吗
西岸村在哪里啊,我有事要去这个地方
韩国的黎字发音
工地发生安全事故谁来重视处理?
锦江花园三区在什么地方啊,我要过去处理事情
跟嗜血狂袭和恶魔高校差不多的热血后宫番
形容曹操的词语
邻里饭店这个地址在什么地方,我要处理点事
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?