中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

捕獲非綁定變量的SQL語句

之前一直用如下sql來查看非綁定變量的sql,但是不準

成都創(chuàng)新互聯(lián)公司成立與2013年,是專業(yè)互聯(lián)網(wǎng)技術服務公司,擁有項目成都網(wǎng)站建設、成都網(wǎng)站制作網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元汝陽做網(wǎng)站,已為上家服務,為汝陽各地企業(yè)和個人服務,聯(lián)系電話:13518219792

select hash_value, substr(sql_text, 1, 80)
  from v$sqlarea
 where substr(sql_text, 1, 40) in
       (select substr(sql_text, 1, 40)
          from v$sqlarea
        having count(*) > 1
         group by substr(sql_text, 1, 40));

SELECT substr(sql_text, 1, 80), count(1)
  FROM v$sql
 GROUP BY substr(sql_text, 1, 80)
HAVING count(1) > 1
 ORDER BY 2;

10g之后,oracle對v$sql視圖進行了變更,添加了一個新的字段FORCE_MATCHING_SIGNATURE該字段oracle對于其解釋為The signature used when the CURSOR_SHARING parameter is set to FORCE

初步的理解應該是假定數(shù)據(jù)庫的cursor_sharing為force時計算得到的值,

而EXACT_MATCHING_SIGNATURE的解釋為Signature calculated on the normalized SQL text. The normalization includes the removal of white space and the uppercasing of all non-literal strings.

個人的理解為當sql語句進入數(shù)據(jù)庫中時對于一些可以潛在可以共享或者因為綁定變量問題造成游標沒有共享的sql他的FORCE_MATCHING_SIGNATURE值完全相同,而EXACT_MATCHING_SIGNATURE值是不同的

下面在11gr2中做個測試:

MOE@xbtst SQL>select * from test;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK
        20 RESEARCH       DALLAS
        30 SALES          CHICAGO
        40 OPERATIONS     BOSTON

MOE@xbtst SQL>alter system flush shared_pool;

System altered.

MOE@xbtst SQL>select * from test where deptno=10;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK

MOE@xbtst SQL>select * from test where deptno=20;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        20 RESEARCH       DALLAS

MOE@xbtst SQL>select * from test where deptno=30;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        30 SALES          CHICAGO

MOE@xbtst SQL>select * from test where deptno='10';

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK

MOE@xbtst SQL>select * from test where deptno='20';

    DEPTNO DNAME          LOC
---------- -------------- -------------
        20 RESEARCH       DALLAS

MOE@xbtst SQL>select * from test where deptno='30';

    DEPTNO DNAME          LOC
---------- -------------- -------------
        30 SALES          CHICAGO

MOE@xbtst SQL>var v_id number
MOE@xbtst SQL>exec :v_id := 10

PL/SQL procedure successfully completed.

MOE@xbtst SQL>select * from test where deptno=:v_id;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        10 ACCOUNTING     NEW YORK

MOE@xbtst SQL>exec :v_id := 20

PL/SQL procedure successfully completed.

MOE@xbtst SQL>select * from test where deptno=:v_id;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        20 RESEARCH       DALLAS

MOE@xbtst SQL>exec :v_id := 30

PL/SQL procedure successfully completed.

MOE@xbtst SQL>select * from test where deptno=:v_id;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        30 SALES          CHICAGO

MOE@xbtst SQL>set line 123
MOE@xbtst SQL>col sql_text format a40
MOE@xbtst SQL>set numwidth 30
MOE@xbtst SQL>select sql_text,FORCE_MATCHING_SIGNATURE,EXACT_MATCHING_SIGNATURE FROM V$SQL WHERE sql_text like '%select * from test%';

SQL_TEXT                                       FORCE_MATCHING_SIGNATURE       EXACT_MATCHING_SIGNATURE
---------------------------------------- ------------------------------ ------------------------------
select * from test where deptno=20                  1674223644458057282            5701787720123824641
select * from test where deptno='20'                1674223644458057282            6624213459289620561
select * from test where deptno='30'                1674223644458057282           15799720645668840753
select * from test where deptno='10'                1674223644458057282            7423854019058606662
select * from test where deptno=30                  1674223644458057282            6295409922938069091
select * from test where deptno=10                  1674223644458057282            5918141949209886904
select * from test where deptno=:v_id               5038495461207490287            5038495461207490287

MOE@xbtst SQL>show parameter cursor_shar

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
cursor_sharing                       string      EXACT

可以看到以上的sql在沒有使用綁定變量的sql中FORCE_MATCHING_SIGNATURE值均是相同的而EXACT_MATCHING_SIGNATURE是不同的那么通過以上的sql我們就可以完善出查找沒有使用綁定變量的sql語句:

MOE@xbtst SQL>select *
  2    from (select sql_text,
  3                 row_number() over(partition by FORCE_MATCHING_SIGNATURE order by FORCE_MATCHING_SIGNATURE) rn
  4            from v$sql
  5           where FORCE_MATCHING_SIGNATURE > 0
  6             and FORCE_MATCHING_SIGNATURE != EXACT_MATCHING_SIGNATURE)
  7   where rn > 1;

SQL_TEXT                                                             RN
---------------------------------------- ------------------------------
select * from test where deptno='30'                                  2
select * from test where deptno='20'                                  3
select * from test where deptno=10                                    4
select * from test where deptno=30                                    5
select * from test where deptno=20                                    6

參考:關于高效捕獲數(shù)據(jù)庫非綁定變量的SQL語句

網(wǎng)頁名稱:捕獲非綁定變量的SQL語句
分享網(wǎng)址:http://www.rwnh.cn/article12/jeppdc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、小程序開發(fā)、動態(tài)網(wǎng)站移動網(wǎng)站建設、網(wǎng)站營銷

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

手機網(wǎng)站建設
凤城市| 岑溪市| 射阳县| 万盛区| 大化| 庆阳市| 乌拉特中旗| 五台县| 和林格尔县| 仪陇县| 兰州市| 阳朔县| 闸北区| 泰宁县| 新巴尔虎左旗| 柯坪县| 湖南省| 荣成市| 达孜县| 车致| 宜宾市| 比如县| 天气| 花莲市| 芜湖县| 洪泽县| 城步| 睢宁县| 瓮安县| 临桂县| 泰兴市| 五峰| 信宜市| 济宁市| 黄石市| 五原县| 双流县| 革吉县| 重庆市| 万载县| 曲周县|