首页  >  文章  >  数据库  >  [RAC性能调优]gcbufferbusyacquire处理

[RAC性能调优]gcbufferbusyacquire处理

WBOY
WBOY原创
2016-06-07 15:56:301399浏览

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) 收藏 编辑删除

目录(?)[+]

  1. 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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn