• 使用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
    /

  • 相关阅读:
    视频分帧
    windows开启ssh服务
    使用geopy计算经纬度表示的坐标之间的距离
    哔站视频下载
    后缀树(Suffix Tree)
    [回滚莫队] AtCoder 歴史の研究
    [长链剖分优化dp] Codeforces 1499F
    [长链剖分优化dp] BZOJ 3522/4543 Hotel
    长链剖分O(nlogn)-O(1)求K级祖先
    [数论] Codeforces 1499D The Number of Pairs
  • 原文地址:https://www.cnblogs.com/xuzhiwei/p/4060752.html
Copyright © 2020-2023  润新知