You need to enable JavaScript to run this app. 如何获取已从v$sql消失的SQL_ID对应的PROGRAM_ID
优惠活动
大模型
产品
解决方案
定价
更多

如何获取已从v$sql消失的SQL_ID对应的PROGRAM_ID

可查询指定SQL_ID对应PROGRAM_ID的可用视图

v$sql存储共享池内当前存续的SQL游标信息,当游标被LRU机制换出共享池后,就会从该视图中消失。目前两个目标SQL的历史信息已被AWR捕获留存,可直接通过以下历史视图查询对应的PROGRAM_ID,不需要等SQL游标重新加载到共享池:

  • DBA_HIST_SQLSTAT
    这是AWR的核心SQL统计视图,在每个快照捕获时刻,会留存对应SQL的关联执行上下文,其中直接包含PROGRAM_ID字段,通过sql_id条件过滤即可直接获取对应值。
  • DBA_HIST_ACTIVE_SESS_HISTORY
    该视图为AWR活跃会话采样记录,会逐次留存采样时刻正在执行SQL的会话上下文信息,其中包含PROGRAM_ID字段;只要目标SQL在历史执行过程中被ASH采样命中,就可以通过对sql_id分组去重拿到对应的PROGRAM_ID。
  • DBA_HIST_SQLTEXT
    该视图虽然核心存储SQL文本内容,同时会留存该SQL首次被AWR捕获时关联的PL/SQL程序属性,可直接通过sql_id过滤查询对应的PROGRAM_ID关联值。

补充说明:如果查询结果中PROGRAM_ID为空,说明对应SQL是直接在客户端执行、没有嵌套在PL/SQL程序内部,本身就不存在关联的PROGRAM_ID值;拿到ID值后如果需要匹配对应程序名称,可关联DBA_OBJECTS视图通过对象ID完成映射。

内容的提问来源于stack exchange,提问作者Migs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.30 00:24:01