• 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;
  • 相关阅读:
    vue学习
    BBS登录注册技术点归纳
    BBS项目模态框的使用
    django后台管理系统
    java 之 jsp简介
    http 之 CORS简介
    web 之 session
    linux 之学习路线
    Ubuntu 之 win10更新ubuntu启动项消失
    Web 之 Cookie
  • 原文地址:https://www.cnblogs.com/chendian0/p/12851616.html
Copyright © 2020-2023  润新知