重庆思庄Oracle、Redhat认证学习论坛

标题: 利用sqltune优化sql [打印本页]

作者: 爱心果    时间: 2012-10-10 10:34
标题: 利用sqltune优化sql

    对低效的sql做优化,传统的方式是产生执行计划后,分析执行路径、统计信息等等有无异常,调优过程主要依赖dba的经验。利用dbms_sqltune包可以简化该过程,oracle产生执行计划的同时,针对低效sql会主动给出优化建议,以提高调优效率。方法如下。

1、创建针对低效sql的优化任务

ECLARE
task_name VARCHAR2 (20);
sqltext CLOB;
BEGIN
sqltext := 'select sender from DATA_BLKLISTS_HIS where sender=''86187xxxxxxxx''';
task_name := dbms_sqltune.create_tuning_task (sql_text=> sqltext,
 bind_list => null,
 user_name => 'SA',
 scope => 'COMPREHENSIVE',
 time_limit => 60,
 task_name => 'tunetask',
 description => 'Tuning Task'
 );
 END;
 /

 

2、执行任务

exec dbms_sqltune.execute_tuning_task('tunetask');

检查任务执行状态:

SELECT status FROM USER_ADVISOR_TASKS WHERE task_name = 'tunetask';

 

3、生产分析报告

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的环境中可使用。






欢迎光临 重庆思庄Oracle、Redhat认证学习论坛 (http://bbs.cqsztech.com/) Powered by Discuz! X3.2