码迷,mamicode.com
首页 > 其他好文 > 详细

[RAC性能调优] gc buffer busy acquire 处理

时间:2014-05-21 15:16:43      阅读:353      评论:0      收藏:0      [点我收藏+]

标签:style   blog   class   c   code   tar   


RAC性能调优] gc buffer busy acquire 处理              
分类: troubleshooting RAC 255人阅读 评论(0) 收藏 编辑 删除





[RAC性能调优] gc buffer busy acquire 处理
















bubuko.com,布布扣















event 解释:



gc buffer busy acquire是当session#1尝试请求访问远程实例(remote instance) buffer,但是在session#1之前已经有相同实例上另外一个session#2请求访问了相同的buffer,并且没有完成,那么session#1等待gc buffer busy acquire

 

 

原因/解决方法
---------------------
- 1.
》热点块(hot block)
AWRSegments by Global Cache Buffer Busy记录了访问频繁的gc buffer.
解决方法可以根据热点块的类型采取不同的解决方法,比如采取分区表,分区索引,反向index等等。这点与单机数据库中的buffer busywaits类似。

 

Segments by GlobalCache Buffer Busy

  • % of Capture shows % of GC Buffer Busy for each top segment compared
  • with GC Buffer Busy for all segments captured by the Snapshot

Owner

Tablespace Name

Object Name

Subobject Name

Obj. Type

GC Buffer Busy

% of Capture

WMCADMIN

BILLDATA0

FEEORDER_LOG_1404

 

TABLE

79,555,421

78.41

WMCADMIN

BILLINDEX0

FEEORDER_LOG_1404_RSPCODETIME

 

INDEX

21,779,575

21.47

WMCADMIN

BILLINDEX0

IDX_BILLRING_INFO_1404_1

 

INDEX

125,829

0.12

SYS

SYSTEM

UET$

 

TABLE

182

0.00

SYS

SYSTEM

I_FILE#_BLOCK#

 

INDEX

62

0.00

 

 

- 2》低效SQL语句
低效SQL语句会导致不必要的buffer被请求访问,增加了buffer busy的机会。在AWR中可以找到TOP SQL。解决方法可以优化SQL语句减少buffer访问。这点与单机数据库中的buffer busy waits类似。

 

Buffer Gets

Executions

Gets per Exec

%Total

Elapsed Time (s)

%CPU

%IO

SQL Id

SQL Module

SQL Text

539,775,845

8

67,471,980.63

44.45

80,098.98

16.9

17.4

0mtunwsd5p9z1

SQL*Plus

SELECT ‘Result ‘ || ( SELECT C...

520,003,254

7

74,286,179.14

42.82

72,983.93

19

19

bx100749tk78y

SQL*Plus

select ‘Result ‘ || successall...

 

相应的sql 为:

SELECT ‘Result ‘ || ( SELECT COUNT(1) FROM feeorder_log_1404 WHERE requestdata >SYSDATE - 5 / 1440 AND requestdata <= SYSDATE AND rspcode=‘000000‘ ANDSUBSTR(copyrightid, -1, 1)=‘1‘ ) || ‘ ‘ || ( SELECT COUNT(1) FROM feeorder_log_1404 WHERErequestdata > SYSDATE - 5 / 1440 AND requestdata <= SYSDATE ANDSUBSTR(copyrightid, -1, 1)=‘1‘ ) FROM dual

 

select ‘Result ‘ || successall ||‘ ‘|| requestall from (selectcount(1) as requestall from feeorder_log_1404where REQUESTDATA>sysdate-5/1440 and REQUESTDATA<=sysdate), (selectcount(1) as successall from feeorder_log_1404where REQUESTDATA>sysdate-5/1440 and REQUESTDATA <=sysdate and RspCode =‘000000‘)

 

--3》。数据交叉访问。
RAC
数据库,同一数据在不同数据库实例上被请求访问。
如果应用程序可以实现,那么我们建议不同的应用功能/模块数据分布在不同的数据库实例上被访问,避免同一数据被多个实例交叉访问,可以减少buffer的争用,避免gc等待。

 

--4- 可能为Oracle bug
建议安装Oracle推荐的最新Patch SetPSU
Patch set
PSU信息请参考:Oracle Recommended Patches -- Oracle Database (Doc ID 756671.1)

 

如果问题还在的话,可以做一下一下操作:

RAC数据库收集hanganalyze的命令:
SQL> conn / as sysdba
SQL> oradebug setmypid
SQL> oradebug unlimit
SQL> oradebug -g all hanganalyze 3

[RAC性能调优] gc buffer busy acquire 处理,布布扣,bubuko.com

[RAC性能调优] gc buffer busy acquire 处理

标签:style   blog   class   c   code   tar   

原文地址:http://blog.csdn.net/lixora/article/details/26350119

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!