[RAC性能调优] gc buffer busy acquire 处理
2014-05-20 11:02
651 查看
RAC性能调优] gc buffer busy acquire 处理
分类:
troubleshooting
RAC 2014-04-21 20:02
255人阅读 评论(0)
收藏
编辑
删除
目录(?)[+]
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
- 2》低效SQL语句
低效SQL语句会导致不必要的buffer被请求访问,增加了buffer
busy的机会。在AWR中可以找到TOP
SQL。解决方法可以优化SQL语句减少buffer访问。这点与单机数据库中的buffer
busy waits类似。
相应的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
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 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
相关文章推荐
- gc buffer busy acquire和gc buffer busy release原理及案例
- RAC性能分析gc buffer busy acquire 等待事件
- GC Buffer Busy Waits处理(转载)
- 【Oracle数据库技术支持】RAC性能分析 - gc buffer busy acquire 等待事件
- gc buffer busy acquire
- RAC性能分析 - gc buffer busy acquire 等待事件
- gc buffer busy acquire vs release
- gc buffer busy release
- GC Buffer Busy等待事件
- gc buffer busy等待事件
- gc buffer busy/gcs log flush sync与log file sync
- gc buffer busy/gcs log flush sync与log file sync
- 找到RAC中导致gc buffer busy等待事件的热点块
- gc buffer busy等待事件
- RAC gc buffer busy 等待事件简单说明(转)
- GC Buffer Busy等待事件
- Oracle RAC 碰到 gc buffer busy
- gc buffer busy/gcs log flush sync与log file sync
- gc buffer busy waits(ZT)
- Oracle RAC 碰到 gc buffer busy