Oracle如何定位硬解析高的语句?

==查询subpool 情况

select KSMDSIDX supool,round(sum(KSMSSLEN)/1024/1024,2) SQLA_size_mb  
from x$ksmss  
where KSMDSIDX<>0  
and KSMSSNAM='SQLA'  
group by KSMDSIDX;

==查询subpool top5

 SELECT *
    FROM (SELECT KSMDSIDX subpool,
                 KSMSSNAM name,
                 ROUND(KSMSSLEN / 1024 / 1024 / 1024, 2) compent_size_gb,
                 ROW_NUMBER() OVER(PARTITION BY KSMDSIDX ORDER BY KSMSSLEN DESC) RANK
            FROM x$ksmss) t
   WHERE t.RANK < 6
     AND subpool > 0
   ORDER BY t.subpool, -t.compent_size_gb;

==监控 size>10m的sql cursor

Select sysdate,sql_text,sql_id,sharable_mem from v$sqlarea where sharable_mem > 10000000 order by sharable_mem;

==找硬解析次数大于200的语句

With c As
 (Select inst_id,
         force_matching_signature,
         round(Sum(sharable_mem) / 1024 / 1024, 2) shared_mb,
         Max(sql_id) As max_sql_id,
         Count(*) cnt
    From gv$sqlarea
   Where force_matching_signature != 0
   Group By inst_id, force_matching_signature
  Having Count(*) > = 200),
sq As
 (Select inst_id,
         sql_text,
         plan_hash_value,
         force_matching_signature,
         row_number() over(Partition By inst_id, force_matching_signature, plan_hash_value Order By inst_id, sql_id Desc) p
    From gv$sqlarea s
   Where force_matching_signature In
         (Select force_matching_signature From c))
Select Sysdate,
       inst_id,
       max_sql_id               As "sql_id",
       plan_hash_value,
       shared_mb                As "shared mem(MB)",
       force_matching_signature,
       cnt                      As "sql_count",
       rank,
       sql_text
  From (Select c.inst_id,
               sq.sql_text,
               c.max_sql_id,
               sq.plan_hash_value,
               sq.force_matching_signature,
               c.shared_mb,
               c.cnt,
               row_number() over(Partition By c.inst_id Order By c.inst_id, c.shared_mb Desc, c.cnt Desc) rank
          From c, sq
         Where sq.force_matching_signature = c.force_matching_signature
           And sq.inst_id = c.inst_id
           And sq.p = 1
         Order By inst_id, c.shared_mb Desc, c.cnt Desc) t
 Where t.rank <= 20;

相关推荐

  1. Oracle如何定位解析语句

    2024-06-08 10:32:02       9 阅读
  2. [应急]Oracle抓undo语句

    2024-06-08 10:32:02       34 阅读
  3. Oracle如何定义定时器

    2024-06-08 10:32:02       8 阅读
  4. ORACLE 软 软 软 解析!

    2024-06-08 10:32:02       36 阅读
  5. Oracle基本SQL语句

    2024-06-08 10:32:02       30 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-08 10:32:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-08 10:32:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-08 10:32:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-08 10:32:02       20 阅读

热门阅读

  1. Unity学习要点

    2024-06-08 10:32:02       10 阅读
  2. kali-vulhub(持续更新)

    2024-06-08 10:32:02       8 阅读
  3. 每日一题36:数据分组之科目种类数量

    2024-06-08 10:32:02       10 阅读
  4. kubernetes之安装ingress-nginx(k8s1.19版本之后)

    2024-06-08 10:32:02       12 阅读
  5. azure cli的安装和使用

    2024-06-08 10:32:02       8 阅读
  6. go语言打印出变量的类型

    2024-06-08 10:32:02       6 阅读
  7. 【自动驾驶】点与向量从ego系转odometry系

    2024-06-08 10:32:02       10 阅读
  8. Github 2024-06-08 开源项目日报Top10

    2024-06-08 10:32:02       8 阅读
  9. 长轮询之websocket

    2024-06-08 10:32:02       9 阅读
  10. langchian_aws模块学习

    2024-06-08 10:32:02       11 阅读