Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

0

积分

0

好友

1

主题
#
发表于 2013-11-7 16:53:10 | 查看: 4947| 回复: 6
本帖最后由 无为而为 于 2013-11-11 15:31 编辑

各位好,感谢刘和各位进贴。

环境:rhel5.6x86-64 系统,ibm3850主机,emcvnx5500存储,数据库为10.2.0.5.0 64bit RAC
(详细awr,ash见附件)
现象:8点左右从中间件上发现短时处理积压。

诊断:

8点到8点15分这段时间内发生as积压,从ash来看,比较明显的可以看到是因为gcbuffer等待引起的
  
08:06:00 (6.0 min)
  
  
194
  
  
gc buffer busy
  
  
184
  
  
64.11
  
  
  
  
  
  
CPU + Wait for CPU
  
  
7
  
  
2.44
  


  
SQL ID
  
  
Planhash
  
  
% Activity
  
  
Event
  
  
% Event
  
  
SQL Text
  
  
xxx
  
  
394901286
  
  
55.05
  
  
gc buffer busy
  
  
54.70
  
  
UPDATE ARBICONTRACT A SET A.LE...
  

从相关来看,比较明显的就是如下sql引起的gc buffer busy的等待
UPDATE ARBICONTRACT A SET A.LEG_NUM =:B8 , A.ARBI_STATUS =:B7 , A.FUTU_PRICE_STEP=:B6 , A.HIGH_LIMIT_PRICE =:B5 , A.LOW_LIMIT_PRICE =:B4 WHERE A.FUTU_EXCH_TYPE=:B3 AND A.ARBICONTRACT_ID=:B2 AND A.ARBICODE=:B1

gc buffer busy 等待在RAC中非常常见了,我们应用系统也针对GC做过优化,即根据不同用户分节点连接。ARBICONTRACT表的用户符合我们程序配置规范,所有相关全连在发生积压的第一节点,并且并未在node2上发现ARBICONTRACT表的相关查询。

进一步来看node1上top5
Event        Waits        Time(s)        Avg Wait(ms)        % Total Call Time        Wait Class
gc buffer busy        2,047        157        77        77.0        Cluster
CPU time                 44                 21.6         
log file sync        14,832        11        1        5.2        Commit
reliable message        270        10        36        4.8        Other
control file sequential read        18,771        5        0        2.7        System I/O

可以看到除了gcbuffer的等待,还有大量log file sync等待,这个等待和redolog写入磁盘有关,即写redo慢。

从全局enqueue来看:
  
Statistic
  
  
Total
  
  
per Second
  
  
per Trans
  
  
acks for commit broadcast(actual)
  
  
108
  
  
0.03
  
  
0.01
  
  
acks for commit broadcast(logical)
  
  
116
  
  
0.03
  
  
0.01
  
  
broadcast msgs on commit(actual)
  
  
12,957
  
  
3.60
  
  
0.70
  
  
broadcast msgs on commit(logical)
  
  
12,970
  
  
3.60
  
  
0.70
  
  
broadcast msgs on commit(wasted)
  
  
246
  
  
0.07
  
  
0.01
  
  
broadcast on commit wait time(ms)
  
  
84,616,149
  
  
23,515.04
  
  
4,586.99
  

这里broadcast on commit wait time等待相当惊人。第二节点上gcs log flush sync 平均等待为4ms,说明私有网络也有些偏慢

查看node2上top5

  
Event
  
  
Waits
  
  
Time(s)
  
  
Avg Wait(ms)
  
  
% Total Call Time
  
  
Wait Class
  
  
control file sequential read
  
  
758,090
  
  
141
  
  
0
  
  
83.1
  
  
System I/O
  
  
CPU time
  
  
  
  
82
  
  
  
  
48.1
  
  
  
  
gcs log flush sync
  
  
2,091
  
  
8
  
  
4
  
  
4.4
  
  
Other
  
  
control file parallel write
  
  
3,017
  
  
2
  
  
1
  
  
1.2
  
  
System I/O
  
  
enq: CF - contention
  
  
1,238
  
  
0
  
  
0
  
  
.2
  
  
Other
  

发现关于控制文件的等待很大,还出现了enq: CF - contention,这个是controlfile阻塞的锁。其会阻塞lgwr写。

故我推测:


1 由于控制文件发生争用,阻塞了第二节点lgwr写入磁盘,而此时第一节点的update操作会广播同步(也就是我们看到的broadcast on commit等待),第二节点lgrw写入发生困难,故导致第一节点同步有问题,进而产生大量gcbufferbusy的等待(也就是我们看到的表像)。

2 我怀疑是rman备份的方式,有没有可能是因为备份未删除过期备份记录,归档记录等。导致控制文件被涨的很大等引起的。

3 从第二节点flushlog来看,平均等待有4ms,这个时间偏长。私有网络是否有问题我还在查。

请指教。谢谢







6#
发表于 2013-11-12 00:05:35
对于 细粒度的 阻塞/争用 我建议你直接拉去 dba_hist_active_session_history视图中  当时时段的所有记录为excel, 这也是我在平时研究 锁阻塞和其他短期争用的手段之一

回复 只看该作者 道具 举报

5#
发表于 2013-11-11 15:30:39
附件上传

815ash.rar

10.33 KB, 下载次数: 1220

awr.rar

63.82 KB, 下载次数: 1205

回复 只看该作者 道具 举报

4#
发表于 2013-11-11 13:41:13
1、我们不熟悉你的中间件和应用
2、 gc buffer busy在这里并不多
3、 如果你想分析 极短时间内的性能问题 或者阻塞/并发争用,应当着重说明一下
4、 似乎你移除了 ASH和AWR

回复 只看该作者 道具 举报

3#
发表于 2013-11-11 13:14:16
现在的现象是中间件有处理积压,这个库负载的确是很低的,我觉得我们看问题不能因为负载低,sql执行短就忽视了。09年申银万国因为一个光衰的光纤导致损失惨重,之前就有过中间件短时积压现象却被忽略,从ash来看,事发期间很明显的gc buffer wait,难道就视而不见了?

回复 只看该作者 道具 举报

2#
发表于 2013-11-10 14:51:12
就AWR 看 负载非常低,如果你觉得性能有问题

请指出 有问题的SQL的语句, 以及其执行的时间 ;在TOP SQL里没有找到平均单次运行超过1s的SQL

回复 只看该作者 道具 举报

1#
发表于 2013-11-7 16:58:43
另外我也怀疑 emc存储writecache是否被关闭情况,目前应该是正常的,故IO问题应该可以排除。

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-12-21 12:18 , Processed in 0.052821 second(s), 24 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569