Oracle中使用ADVISOR
ADVISOR真是oracle中超神奇的東西
不僅可以幫你分析語法,連建議都會跟你講
這邊做一下筆記
沒有權限的話要先建立建立權限
grant ADVISOR to prfuser
建立一個TUNING TASK
my_task_name VARCHAR (30);
my_sqltext CLOB;
ouid VARCHAR (5);
BEGIN
ouid := 'QC06';
my_sqltext :=
'SELECT *
FROM user.XXX ps
INNER JOIN
user.YYY pc
ON ps.id = pc.id
WHERE ps.id = :id';
my_task_name :=
dbms_sqltune.create_tuning_task (
sql_text => my_sqltext,
bind_list => sql_binds (anydata.convertnumber(9)),
user_name => 'USER',
scope => 'COMPREHENSIVE',
time_limit => 60,
task_name => 'sql_tuning_test',
description => 'tuning Task'
);
END;
SELECT看看
然後把剛剛的TASK_NAME執行
exec dbms_sqltune.execute_tuning_task('sql_tuning_test');
確認TASK已經被執行
SELECT * FROM USER_ADVISOR_TASKS
確認STATUS是COMPLETED
確認執行計畫
SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK('sql_tuning_test') FROM DUAL;
按照分析建議優化
最後就可以把建立的TASK刪除了
exec dbms_sqltune.drop_tuning_task('sql_tuning_test');
其實以上的步驟在toad也可以輕鬆的執行
步驟如下
database>Optimize>Oracle Tuning Advisor
按下新增
在SQL Text寫要分析的Sql Command,按下OK後就收成囉
畫面如下
然後就照著他的建議去做吧。