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) 收藏 编辑删除目录(?)[+]
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
|
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 为:
基于Asp.Net+C#+Access的网上商店系统,具有智能化、高扩展、稳定、安全等特性,并拥有超强功能,可自由添加频道,后台智能修改风格,只要懂得网站常识的站长就可以轻松利用易想商城建立起专业的大型网上书店,点卡店、鲜花店、手机店、服装店、团购网等不同类型商城。易想商城有CMS增加频道功能,能够容易的把商城系统扩展成资讯网站多风格自由切换,全站经过专业的优化处理,让你的网站在百度上轻易的就能找
0
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
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号