使用sql_tuning_advisor對問題sql進行診斷


--獲得sql_id
SELECT * FROM V$SQL WHERE UPPER(SQL_TEXT) LIKE '%WITH%'
AND UPPER(SQL_TEXT) LIKE '%TCNT%'

--創建執行優化任務
DECLARE
my_task_name VARCHAR2(30);
BEGIN
   my_task_name := DBMS_SQLTUNE.CREATE_TUNING_TASK(
                     sql_id => 'crfjrqx3tnr9z',
                     scope => 'COMPREHENSIVE',
                     time_limit => 60,
                     task_name => 'test_tuning_task');
   DBMS_SQLTUNE.EXECUTE_TUNING_TASK(task_name => 'test_tuning_task');
END;
/


--查看任務狀態
SELECT task_name,status FROM USER_ADVISOR_TASKS WHERE task_name ='test_tuning_task';

--查詢結果
set long 888888
set serveroutput on size 888888
set lines 100
 
SELECT dbms_sqltune.report_tuning_task('test_tuning_task') FROM dual;

--刪除優化任務
 exec dbms_sqltune.drop_tuning_task('test_tuning_task');

 

PS:根據反饋結果進行操作,這裏一般都是一些收集統計信息,加索引,綁定sql_profier等的建議操作。

具體優化方式還要根據sql的實際情況來,這裏的建議只能作爲參考,是否生效還是需要自己判斷。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章