對低效的sql作優化,傳統的方式是產生執行計劃後,分析執行路徑、統計信息等等有無異常,調優過程主要依賴dba的經驗。利用dbms_sqltune包能夠簡化該過程,oracle產生執行計劃的同時,針對低效sql會主動給出優化建議,以提升調優效率。方法以下。一、建立針對低效sql的優化任務sql
ECLAREoracle
task_name VARCHAR2 (20);優化
sqltext CLOB;server
BEGINip
sqltext := 'select sender from DATA_BLKLISTS_HIS where sender=''86187xxxxxxxx''';it
task_name := dbms_sqltune.create_tuning_task (sql_text=> sqltext,io
bind_list => null,效率
user_name => 'SA',select
scope => 'COMPREHENSIVE',方法
time_limit => 60,
task_name => 'tunetask',
description => 'Tuning Task'
);
END;
/
二、執行任務
exec dbms_sqltune.execute_tuning_task('tunetask');
檢查任務執行狀態:
SELECT status FROM USER_ADVISOR_TASKS WHERE task_name = 'tunetask';
三、生產分析報告
SET LONG 999999
set serveroutput on size 999999
SET LINESIZE 100
SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK('tunetask') FROM DUAL;
關注報告輸出的recommendation,對有問題的sql,oracle會給出優化建議。
注:該方法至關於addm advisor的命令方式,在沒法使用EM的環境中可以使用。