zoukankan      html  css  js  c++  java
  • 使用remove_constants工具查看Oracle是否使用绑定变量

    https://asktom.oracle.com/pls/asktom/f?p=100:11:::::P11_QUESTION_ID:1163635055580

    http://blog.csdn.net/zq9017197/article/details/7690061

    1、首先创建一个表,用于存放整理过的数据:
    create table t1 as select sql_text from v$sqlarea;
    2、给表增加一个字段:
    alter table t1 add sql_text_wo_constants varchar2(1000);
    3、创建函数remove_constants:
    create or replace function 
    remove_constants( p_query in varchar2 ) return varchar2
    as
        l_query long;
        l_char  varchar2(1);
        l_in_quotes boolean default FALSE;
    begin
        for i in 1 .. length( p_query )
        loop
            l_char := substr(p_query,i,1);
            if ( l_char = '''' and l_in_quotes )
            then
                l_in_quotes := FALSE;
            elsif ( l_char = '''' and NOT l_in_quotes )
            then
                l_in_quotes := TRUE;
                l_query := l_query || '''#';
            end if;
            if ( NOT l_in_quotes ) then
                l_query := l_query || l_char;
            end if;
        end loop;
        l_query := translate( l_query, '0123456789', '@@@@@@@@@@' );
        for i in 0 .. 8 loop
            l_query := replace( l_query, lpad('@',10-i,'@'), '@' );
            l_query := replace( l_query, lpad(' ',10-i,' '), ' ' );
        end loop;
        return upper(l_query);
    end;
    /
    4、将v$sql视图中的字段:sql_text的数据用remove_constants处理后,来更新t1表
    update t1 set sql_text_wo_constants = remove_constants(sql_text);
    5、查出除了谓词条件不同的SQL语句和它们的执行次数,这里是查询SQL没有重用超过100次的SQL语句:
    select sql_text_wo_constants, count(*)
      from t1
     group by sql_text_wo_constants
    having count(*) > 100
     order by 2
    /

  • 相关阅读:
    C#-Linq-SelectMany
    C#-Linq-SelectMany
    DI是实现面向切面和面向抽象的前提
    java流程控制之Scanner(2)
    java流程控制之Scanner(1)
    java运算符之三目运算符
    java运算符之位运算
    java运算符之与或非
    java运算符之加减乘除
    java基础语法
  • 原文地址:https://www.cnblogs.com/xuzhiwei/p/4060752.html
Copyright © 2011-2022 走看看