zoukankan      html  css  js  c++  java
  • 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是代表索引正常

  • 相关阅读:
    DLL相关注意
    给我个理由要用虚析构函数
    字符指针常量和字符数组
    给自己普及网络基本知识
    面向对象三大基本特性,五大基本原则
    C/C++内存区域划分
    C++多态性
    Java XML Schema详解
    Java SE 第一百零五讲 对象的克隆与浅拷贝
    Java SE 第九十七~一百零五讲 线程与进程
  • 原文地址:https://www.cnblogs.com/danhuangpai/p/7606659.html
Copyright © 2011-2022 走看看