欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

[RAC性能调优]gcbufferbusyacquire处理

程序员文章站 2024-02-05 20:23:04
...

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 [RAC性能调优]gcbufferbusyacquire处理

    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