1. 程式人生 > 其它 >Oracle篩選沒有使用繫結變數的語句

Oracle篩選沒有使用繫結變數的語句

Oracle篩選沒有使用繫結變數的語句

花時間寫了這一條SQL,可以查詢出次數大於等於50,一個月內沒有使用繫結變數的語句的資訊。

select parsing_schema_name 使用者,
       module              程式,
       fms_co              次數,
       fms                 特徵碼,
       sql_id              SQLID號,
       sql_text            "SQL文字(樣板)"
  from (select to_char(FORCE_MATCHING_SIGNATURE) fms,
               sql_text,
               parsing_schema_name,
               module,
               SQL_ID,
               
count(1) over(partition by FORCE_MATCHING_SIGNATURE order by null) fms_co, --fms的次數>1的表示可能沒有使用繫結變數,可能是因為連同使用繫結變數的也會>1 row_number() over(partition by FORCE_MATCHING_SIGNATURE order by null) rn, count(1) over(partition by sql_id order by null) sqlid_co --標誌已經使用繫結變數的SQL,sqlid_co>1
from gv$sql where last_active_time >= sysdate - 30 --一個月內 and to_char(force_matching_signature) != '0' and parsing_schema_name not in ('SYS', 'DBSNMP') order by fms_co desc) where rn = 1 and fms_co >= 50 --只篩選>=50執行次數的 and sqlid_co = 1;