p { margin-bottom: 0.25cm; direction: ltr; color: rgb(0, 0, 0); line-height: 120%; orphans: 2; widows: 2 }
p.western { font-family: “宋体”, “SimSun”; font-size: 12pt }
p.cjk { font-family: “宋体”, “SimSun”; font-size: 12pt }
p.ctl { font-family: “宋体”, “SimSun”; font-size: 12pt }
a:visited { color: rgb(128, 0, 128) }
a.western:visited { }
a.cjk:visited { }
a.ctl:visited { }
a:link { color: rgb(0, 0, 255) }
Oracle
10G强大的SQL优化工具:SQL
Tuning Advisor
日
15:05
Oracle
10G推出了强大的SQL优化工具:SQL
Tuning
Advisor,使用该功能必须保证优化器是CBO模式,对SQL进行优化需要执行DBMS_SQLTUNE包,因而需要advisor权限。
举个例子介绍如何优化一条发现问题的语句
–1.创建测试环境
SQL> USER —授予普通用户advisor的权限 SQL> Grant SQL> Connected. SQL> SQL> SQL> SQL> SQL> Elapsed: Execution ———————————————————- Plan —————————————————————————— | —————————————————————————— | | —————————————————————————— Note —– – Statistics ———————————————————- 29 1 11646 1080 176 16498937 106046 9595 0 0 143898 |
–2.创建优化任务
步骤一: 步骤二: SQL>set SQL>set SQL> owner_sql sqltext_me begin sqltext_me —删除优化任务 dbms_sqltune.drop_tuning_task(task_name —创建优化任务 owner_sql sql_text user_name scope time_limit task_name description —执行优化任务 dbms_sqltune.execute_tuning_task( end; / PL/SQL |
–3.执行优化任务
调用dbms_sqltune.execute_tuning_task过程来执行前面创建好的优化任务。 SQL> PL/SQL |
–4.检查优化任务的状态
-通过查看dba_advisor_task或者suser_advisor_tasks可以检查优化任务的状态 SQL> TASK_NAME —————————— tuning_owner_test |
–5.查看优化结果
查询dbms_sqltune.report_tning_task函数可以获得优化任务的结果 SQL> SQL> SQL> SQL> DBMS_SQLTUNE.REPORT_TUNING_TASK(‘TUNING_OWNER_TEST1500’) ——————————————————————————– GENERAL ——————————————————————————- Tuning Tuning Workload Execution Current Execution Scope Time Completion Started Completed ——————————————————————————- Schema SQL SQL ——————————————————————————- FINDINGS ——————————————————————————- 1- ——————— Table Recommendation ————– – execute ‘TEST1114’, method_opt Rationale ——— The select ——————————————————————————- EXPLAIN ——————————————————————————- 1- ———– Plan —————————————————————————— | —————————————————————————— | | —————————————————————————— ——————————————————————————- 分析语句为 execute |
–6.删除优化任务
调用dbms_sqltuen.drop_tuning_task删除已经存在的优化任务 SQL> PL/SQL |