• oracle性能问题排查~记一个单实例的问题


    oracle的第一篇文章~菜鸟遇到的cpu高问题
    一 简介:本人乃一个oracle超级菜菜鸟,开始连基本排除问题的思路都没有,后来请教了高人,才学会了一些
        场景问题:测试环境oracle单实例,IO和内存都不高,只有cpu暴涨,导致系统负载高居不下
    二 分析思路:
      1 收集相关诊断报告(非常重要)
          1收集awr报告
     
         2 收集ash报告
     2 根据 ash和awr报告进行分析
        ash报告重点关注 Top SQL with Top Events(此处是top CPU的消耗排行,从大到小) 
       关注   

       1 event 会反应出SQL状态 (本次报告 latch: cache buffers chains) 

       2 Top Row Source 会反应出sql的explain(本次报告为全表扫描)
       3 sql_id 定位出sql的ID号
       4 SQL Text SQL的内容
       5 % Activity sql的繁忙程度

       


    三 经过师兄的指点,可以发现,这第一条SQL执行的频率最高,并且全表扫描,cpu耗时也很高,基本上能推断出为罪魁祸首(对于latch导致的争用要首先干掉此类sql),将SQL反应给研发,研发进行处理,负载降低
    四 补充 latch:cache buffers chains解读
       1. 低效率的SQL语句(主要体现在逻辑读过高)
          在某些环境中,应用程序打开执行相同的低效率SQL语句的多个并发会话,这些SQL语句都设法得到相同的数据集,每次执行都带有高 BUFFER_GETS(逻辑读取)的SQL语句是主要的原因。相反,较小的逻辑读意味着较少的latch get操作,从而减少锁存器争用并改          善  注意v$sql中BUFFER_GETS/EXECUTIONS大的语句。
       2.Hot block
          当多个会话重复访问一个或多个由同一个子cache buffers chains锁存器保护的块时,热块就会产生。当多个会话争用cache buffers chains子锁存器时,就会出现这个等待事件。有时就算调优了SQL,但多个会话同时执行此SQL,那怕只是扫描特定少数块,也是也会          出现HOT BLOCK的。
    五 常用命令
      1 根据sql_id生成解析树
      select plan_table_output from table (dbms_xplan.display_awr('sql_id',null,null,'ADVANCED +PEEKED_BINDS'));
      2 查看oracle table索引是否失效
      select index_name,status from dba_indexes where table_name=upper('tablename') vald是代表索引正常

  • 相关阅读:
    【长篇高能】ReactiveCocoa 和 MVVM 入门
    圆形头像
    C#开发学习——.net C#中页面之间传值传参的方法以及内置对象
    C#开发学习——内联表达式
    C#开发学习——ADO.NET几个重要对象
    Android开发学习——动画
    Android开发学习—— Fragment
    Android开发学习—— ContentProvider内容提供者
    Android开发学习—— Service 服务
    Android开发学习—— Broadcast广播接收者
  • 原文地址:https://www.cnblogs.com/danhuangpai/p/7606659.html
Copyright © 2020-2023  润新知