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;
  • 相关阅读:
    HDU 5492 Find a path
    codeforce gym 100548H The Problem to Make You Happy
    Topcoder SRM 144 Lottery
    codeforce 165E Compatible Numbers
    codeforce gym 100307H Hack Protection
    区间DP总结
    UESTC 1321 柱爷的恋爱 (区间DP)
    HDU 4283 You Are the One (区间DP)
    HDU 2476 String painter (区间DP)
    UESTC 426 Food Delivery (区间DP)
  • 原文地址:https://www.cnblogs.com/chendian0/p/12851616.html
Copyright © 2011-2022 走看看