[RAC性能调优]gcbufferbusyacquire处理
RAC性能调优] gc buffer busy acquire 处理 分类: troubleshooting RAC 2014-04-21 20:02 255人阅读 评论(0) 收藏 编辑删除 目录(?)[+] RAC性能调优 gc buffer busy acquire 处理 [RAC性能调优] gc buffer busy acquire event 解释: gc buffer busy acquir
RAC性能调优] gc buffer busy acquire 处理 分类: troubleshooting RAC 2014-04-21 20:02 255人阅读 评论(0) 收藏 编辑删除目录(?)[+]
- RAC性能调优 gc buffer busy acquire 处理
[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 - 5 / 1440 AND requestdata
select 'Result ' || successall ||' '|| requestall from (selectcount(1) as requestall from feeorder_log_1404where REQUESTDATA>sysdate-5/1440 and REQUESTDATAsysdate-5/1440 and REQUESTDATA
--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