设为首页 加入收藏

TOP

[RAC性能调优]gcbufferbusyacquire处理
2014-11-23 23:30:48 】 浏览:7573
Tags:RAC 性能 gcbufferbusyacquire 处理
[RAC性能调优] gc buffer busy acquire 处理
\
event 解释:
gc buffer busy acquire是当session#1尝试请求访问远程实例(remote instance) buffer,但是在session#1之前已经有相同实例上另外一个session#2请求访问了相同的 buffer,并且没有完成,那么session#1等待 gc buffer busy acquire
原因/解决方法
---------------------
- 1.》热点块(hot block)
在AWR中Segments 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 Set和PSU。

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

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇实体完整性约束参照完整性约束左.. 下一篇数据库范式小结1NF2NFBCNF3NF4NFD..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目