zoukankan      html  css  js  c++  java
  • Enq: KO

    大量的等待事件,系统缓慢,从AWR看DBtime已经满负载了,主要等待事件如下

    Enq: KO - Fast Object Checkpoint 占比DBTime的45%。通过ASH查询阻塞关系,等待该事件的用户SQL都被796会话阻塞,而该用户是CKPT进程。

    SYS@orcl1>select sid,serial#,program,status from v$session where sid=796

           SID    SERIAL# PROGRAM                                          STATUS

    ---------- ---------- ------------------------------------------------ --------

          1897          1 oracle@rac1 (CKPT)                               ACTIVE

    Elapsed: 00:00:00.00

    分析 

    当Oracle使用direct path read时,需要在操作对象上发生对象级的checkpoint,此时需要等待脏数据写入磁盘,这个等待事件

    就是Enq: KO - Fast Object Checkpoint,如果用户多个表被多次全表扫,ORacle根据具体表大小和执行方式选择了direct path read

    此时将表直接读到PGA,此时IO异常,可能全表扫带来问题或者其他导致IO繁忙,或者存储性能本身不好,就会出现Enq: KO - Fast Object Checkpoint这个等待事件。

    此时观察负载、一般IO压力很多

    iostat -xm 2 10 

    解决方法:

    调整数据库参数

    1 调整异步IO    

    2 增加日志组                  <<<<看日志自身状态确定

    3 增加DB writer数量      <<<<IO撑不住,这个效果一般

    4 解决存储自身问题

    调整业务SQL

    5 调优SQL消除全表扫和大排序 <<<<<核心解决方法

    如果多数业务频繁大表扫描,无法避免,建议关闭该功能,此时内存压力会增大,CPU也会有压力,需要了解这些资源情况

    6 调整隐藏参数

    "_serial_direct_read"=NEVER

    SYS@orcl1>SELECT   ksppinm, ksppstvl, ksppdesc FROM   x$ksppi x, x$ksppcv y WHERE   x.indx = y.indx AND  ksppinm ='_serial_direct_read';

    KSPPINM                   KSPPSTVL                       KSPPDESC

    ------------------------- ------------------------------ ----------------------------------------------------

    _serial_direct_read       auto                           enable direct read in serial

    修改隐藏参数

    alter system set "_serial_direct_read"=never;

    满足下面条件TABLE FULL SCAN 不走SGA,直接从文件抓到PGA操作。

    SYS@orcl1>SELECT   ksppinm, ksppstvl, ksppdesc FROM   x$ksppi x, x$ksppcv y WHERE   x.indx = y.indx AND  ksppinm ='_adaptive_direct_read';

    KSPPINM                   KSPPSTVL                       KSPPDESC

    ------------------------- ------------------------------ ----------------------------------------------------

    _adaptive_direct_read     TRUE                           Adaptive Direct Read

    SYS@orcl1> SELECT   ksppinm, ksppstvl, ksppdesc FROM   x$ksppi x, x$ksppcv y WHERE   x.indx = y.indx AND  ksppinm ='_small_table_threshold';

    KSPPINM                   KSPPSTVL                       KSPPDESC

    ------------------------- ------------------------------ ----------------------------------------------------

    _small_table_threshold    1872                           lower threshold level of table size for direct reads

  • 相关阅读:
    Unique Binary Search Trees 解答
    Unique Paths II 解答
    Unique Paths 解答
    Maximum Subarray 解答
    Climbing Stairs 解答
    House Robber II 解答
    House Robber 解答
    Valid Palindrome 解答
    Container With Most Water 解答
    Remove Duplicates from Sorted List II 解答
  • 原文地址:https://www.cnblogs.com/shujuyr/p/14656266.html
Copyright © 2011-2022 走看看