Oracle篩選沒有使用繫結變數的語句
阿新 • • 發佈:2022-05-25
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>1from 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;