RAC 性能分析 - 'log file sync' 等待事件
简介
本文主要讨论 RAC 数据库中的'log file sync' 等待事件。RAC 数据库中的'log file sync' 等待事件要比单机数据库中的'log file sync' 等待事件复杂,主要原因是由于RAC 数据库需要将SCN同步到所有实例。
首先,回顾一下单机数据库中的'log file sync' 等待事件,当user session 提交(commit)时,user session会通知LGWR进程将redo buffer中的信息写入到redo log file,当LGWR进程完成写操作后,LGWR再post(通知)user session 写操作已经完成,user session 接收到LGWR的通知后提交操作才完成。因此user session 在没有收到LGWR post(通知)之前一致处于等待状态,具体的等待事件为'log file sync'。
在RAC数据库中为了一致性读,需要将Commit SCN同步/传播到所有的节点上。SCN同步/传播的主要方法有两种:Lamport SCN 和 immediate commit propagation (BOC)。
10gR1 及以下版本默认使用Lamport SCN,Lamport SCN方式即一个节点上的commit SCN 不保证立刻同步/传播到所有节点,也就是说可能延时同步/传播,对于一些实时性要求高的RAC数据库Lamport SCN方式是不可取的。如果希望commit SCN 立刻同步/传播到所有节点,手动修改参数MAX_COMMIT_PROPAGATION_DELAY=1
从10gR2开始默认使用immediate commit propagation (BOC),BOC即一个节点上的commit SCN 立刻同步/传播到所有节点。
介绍 immediate commit propagation (BOC)的工作原理
1. user session 执行提交(commit),user session会通知LGWR进程将redo buffer中的信息写入到redo log file。
2. LGWR进程收到user session通知后,将redo buffer中的信息写入redo log file,同时LGWR 将COMMIT SCN 同步/传播给远程的数据库实例的LMS 进程。
3. 远程数据库实例的LMS将commit SCN同步到本地SCN,然后通知commit实例的LMS,表示SCN 同步已经完成。
4. 当commit 实例的LMS接收到所有远程数据库实例的LMS的通知后,commit 实例的LMS再通知本地的LGWR 所有节点SCN同步已经完成。
5. LGWR 在完成了IO 操作和LMS进程通知后,LGWR通知user session commit 成功。user session在没有收到LGWR通知前,一直处于等待log file sync。
通过以上原理的说明,我们不难看出来导致'log file sync' 等待事件的主要原因有:
1. 磁盘IO 慢导致LGWR进程将redo buffer中的信息写入到redo log file速度慢。
2. user session commit过于频繁。
3. 本地或者远程服务器CPU资源不足,导致LMS和/或者LGWR不能及时得到CPU调度,不能正常工作。
4. RAC私有网络性能差,导致LMS同步commit SCN慢。
5. ORACLE BUG.
分析处理'log file sync' 等待事件时的重要log/信息
1. AWR
例如:AWR中log file sync 的等待时间与log file parallel write的时间基本相同,因此是由于IO问题导致的log file sync.
2. LGWR and LMS process trace file
例如:LGWR trace文件中报出下面的信息,很有可能是IO慢导致的。
Warning: log write time 1000ms, size 2KB
3. OSWatcher <--- 可以帮助我们确认服务器CPU资源使用情况
例如:下面的是OSW中vmstat 的输出,其中runQ中的进程达到48个,表明当时CPU资源是非常紧张的,会导致LMS/LGWR不能获得CPU 调度,导致Log file sync等待。
procs memory page faults cpu
r b w avm free re at pi po fr de sr in sy cs us sy id
48 22 0 23877753 30244459 0 0 0 0 0 0 0 153454 2184632 114234 38 60 2
48 22 0 23877753 30244094 0 0 0 0 0 0 0 153694 2181493 114887 36 61 3
注:关于OSW的安装配置请参考BLOG中的文章:
4. Alert log
5. Script to Collect Log File Sync Diagnostic Information (lfsdiag.sql) [Document 1064487.1]
解决'log file sync' 等待事件主要方法
1. 提高磁盘IO速度
2. 采用批量提交,减少应用commit次数
3. 安装OSWatcher 定位CPU使用率高的进程
4. 采用专用网络,正确设置网络UDP buffer参数
5. 安装最新版本数据库避免bug,具体bug修复的版本参考文档:
WAITEVENT: "log file sync" Reference Note (Doc ID 34592.1)
https://blogs.oracle.com/Database4CN/entry/rac_%E6%95%B0%E6%8D%AE%E5%BA%93%E4%B8%AD%E7%9A%84_log_file_sync
RAC 性能分析 - 'log file sync' 等待事件的更多相关文章
- 完全揭秘log file sync等待事件-转自itpub
原贴地址:http://www.itpub.net/thread-1777234-1-1.html 谢谢 guoyJoe 老大 这里先引用一下tanel poder大师的图: 什么是log fil ...
- Oracle数据库由dataguard备库引起的log file sync等待
导读: 最近数据库经常出现会话阻塞的报警,过一会又会自动消失,昨天晚上恰好发生了一次,于是赶紧进行了查看,不看不知道,一看吓一跳,发现是由dataguard引起的log file sync等待.我们知 ...
- log file sync等待超高案例浅析
监控工具DPA发现海外一台Oracle数据库服务器DB Commit Time指标告警,超过红色告警线(40毫秒左右,黄色告警是10毫秒,红色告警线是20毫秒),如下截图所示,生成了对应的时段的AWR ...
- log file sync等待超高一例
这是3月份某客户的情况,原因是server硬件故障后进行更换之后,业务翻译偶尔出现提交缓慢的情况.我们先来看下awr的情况. 我们能够看到,该系统的load profile信息事实上并不高,每秒才21 ...
- RAC Wait Event: gcs log flush sync 等待事件 转
RAC Wait Event: gcs log flush sync https://www.hhutzler.de/blog/rac-wait-event_gcs_log_flush_sync/#o ...
- oracle之 等待事件LOG FILE SYNC (awr)优化
log file sycn是ORACLE里最普遍的等待事件之一,一般log file sycn的等待时间都非常短 1-5ms,不会有什么问题,但是一旦出问题,往往都比较难解决.什么时候会产生log f ...
- log file sync 事件(转)
log file sync log file sync等待时间发生在redo log从log buffer写入到log file期间. 下面对log file sync做个详细的解释. 何时发 ...
- log file sync 等侍值高的一般通用解决办法
log file sync等待时间发生在redo log从log buffer写入到log file期间. 下面对log file sync做个详细的解释. 何时发生日志写入: 1.commit或者r ...
- Oracle之 等待事件log file sync + log file parallel write (awr优化)
这是3月份某客户的情况,原因是server硬件故障后进行更换之后,业务翻译偶尔出现提交缓慢的情况.我们先来看下awr的情况. 我们能够看到,该系统的load profile信息事实上并不高,每秒才21 ...
随机推荐
- (转)S5pv210 HDMI 接口在 Linux 3.0.8 驱动框架解析 (By liukun321 咕唧咕唧)
作者:liukun321 咕唧咕唧 日期:2014.1.18 转载请标明作者.出处:http://blog.csdn.net/liukun321/article/details/18452663 本文 ...
- MySQL无法重启问题解决Warning: World-writable config file ‘/etc/mysql/my.cnf’ is ignored
今天在修改mysql数据库的配置文件,由于方便操作,就将“/etc/mysql/my.cnf” 的权限设置成 “777” 了,然后进行修改,当修改完进行重启mysql的时候,却报错,提示Warning ...
- Android学习CursorWrapper与Decorator模式 (转至http://www.cnblogs.com/bastard/archive/2012/05/31/2527944.html)
一 Decorator模式 意图: 动态的给一个对象添加一些额外的职责.就增加功能来说,Decorator模式相比生成子类更为灵活. 动态的给一个对象,而不是对整个类添加额外职责,说明此模式将采用的结 ...
- jquery.attach附件上传jquery插件
html: <!DOCTYPE html> <html lang="zh-cn"> <head> <meta http-equiv=&qu ...
- iperf/netperf网络性能测试工具、Wireshark网络包分析工具
iperf http://www.linuxidc.com/Linux/2014-05/101160.htm netperf http://www.linuxidc.com/Linux/2013 ...
- C#一个关于委托和事件通俗易懂的例子
using System; namespace Test { public class 室友 { public delegate void 这是一个委托(); public void 起床晨跑去() ...
- 【View】之【SimpleWaveView】可多色可刷新的加速球、进度球【demo】
当前版本:SimpleWaveView_v1.0.20140618 先看效果图,这个加速球是动态的,并且当调用了myView.setRefresh(0.8F);方法后可以从当前值动态降到0再升到80% ...
- 告诉你html5比普通html多了哪些东西?
- fildder教程
转载地址:写得很不错的fildder教程 http://kb.cnblogs.com/page/130367/ Fiddler的基本介绍 Fiddler的官方网站: www.fiddler2.c ...
- HBase表的架构原理
HBase总体架构图 Hbase Table的基本单位是Region,一个Table相应多个Region.Table层级关系例如以下: Table (HBase table) Re ...