zoukankan      html  css  js  c++  java
  • X Oracle 利用FORCE_MATCHING_SIGNATURE捕获非绑定变量SQL

    理解v$sql的exact_matching_signature与force_matching_signature


    对SQL语句,去掉重复的空格(不包括字符常量),将大小写转换成相同,比如均为大写(不包括字符常量)后,如果SQL相同,那么SQL语句的exact_matching_signature就是相同的。
    对SQL语句,去掉重复的空格(不包括字符常量),将大小写转换成相同,比如均为大写(不包括字符常量),然后去掉SQL中的常量,如果SQL相同,那么SQL语句的force_matching_signature就是相同的。


    但是例外的情况是:如果SQL中有绑定变量,force_matching_signature就会与exact_matching_signature一样的生成标准。

    =================================================================================================================
    sql text 相近的sql FORCE_MATCHING_SIGNATURE 相同
    
    因此可以使用下面的语句查找没有绑定变量的SQL:
    
    SELECT *
      FROM (SELECT sql_id,
                   sql_text,
                   FORCE_MATCHING_SIGNATURE,
                   COUNT (1) OVER (PARTITION BY FORCE_MATCHING_SIGNATURE) rid
              FROM v$sql
             WHERE     FORCE_MATCHING_SIGNATURE > 0
                   AND FORCE_MATCHING_SIGNATURE != EXACT_MATCHING_SIGNATURE)
     WHERE rid > 100;
    
    
    
    
    ========================================================================================================================
    
    
    
    select FORCE_MATCHING_SIGNATURE, count(1)
      from v$sql
     where FORCE_MATCHING_SIGNATURE > 0
       and FORCE_MATCHING_SIGNATURE != EXACT_MATCHING_SIGNATURE
     group by FORCE_MATCHING_SIGNATURE
    having count(1) > &a
     order by 2;
  • 相关阅读:
    数组删除元素注意事项
    点击下拉菜单以外的区域,关闭弹窗
    webpack学习笔记(六)优化
    webpack学习笔记(五)
    webpack学习笔记(四)
    webpack学习笔记(三)
    webpack学习笔记(二)
    es6 笔记
    vue学习笔记——组件的优化
    vue学习笔记——路由
  • 原文地址:https://www.cnblogs.com/chendian0/p/12851616.html
Copyright © 2011-2022 走看看