Oracle筛选没有使用绑定变量的语句
Oracle筛选没有使用绑定变量的语句
花时间写了这一条SQL,可以查询出次数大于等于50,一个月内没有使用绑定变量的语句的信息。
select parsing_schema_name 用户, module 程序, fms_co 次数, fms 特征码, sql_id SQLID号, sql_text "SQL文本(样板)" from (select to_char(FORCE_MATCHING_SIGNATURE) fms, sql_text, parsing_schema_name, module, SQL_ID, count(1) over(partition by FORCE_MATCHING_SIGNATURE order by null) fms_co, --fms的次数>1的表示可能没有使用绑定变量,可能是因为连同使用绑定变量的也会>1 row_number() over(partition by FORCE_MATCHING_SIGNATURE order by null) rn, count(1) over(partition by sql_id order by null) sqlid_co --标志已经使用绑定变量的SQL,sqlid_co>1 from gv$sql where last_active_time >= sysdate - 30 --一个月内 and to_char(force_matching_signature) != '0' and parsing_schema_name not in ('SYS', 'DBSNMP') order by fms_co desc) where rn = 1 and fms_co >= 50 --只筛选>=50执行次数的 --and fms_co != 1 and sqlid_co = 1;
需要注意的是,如果存在使用绑定变量,但是语句一样不过多了空格类似的问题也是会被筛选出来,比如
select * from a where a.id = :1 or a.id = :2
select * from a where a.id = :1 or a.id = :2
同时存在以上两条SQL会被该脚本筛选出来。
这种情况就没办法了,不过应该会比较少。
分类:
Oracle
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?