在Oracle数据库出现性能问题时,使用Oracle本身的工具包,给出合理的调优建议是比较省力的做法。
下面两种包的介绍及具体做法。
SQL Tuning Advisor 粒度最小的调整工具.
将一条或多条SQL语句做为输入内容,分析所有访问路径,然后生成改进SQL语句的建议,并提出索引,物化视图和分区方案来提高应用程序的总体性能。
另外,在维护窗口中,Oracle也会针对Automatic Workload Repository(AWR) 来确定和记录的高负载语句自动化运行SQL Tuning Advisor
SQL Access Advisor
它涉及工作量中所有SQL语句,并提出索引,特化视图和分区方案来提高应用程序的总体性能。
小区别:
SQL Tuning Advisor 分别调整每条SQL语句
SQL Access Advisor 同时调整所有SQL语句
SQL Tuning Advisor :
1. 在匿名PL/SQL块中,为SQL 语句定义调整任务。
declare
tune_task_name varchar2(30) ;
bad_sql_stmt clob;
begin
bad_sql_stmt := 'select distinct id from demo.txcl';
tune_task_name := dbms_sqltune.create_tuning_task
( sql_text => bad_sql_stmt,
user_name => 'DEMO',
scope => 'COMPREHENSIVE',
time_limit => 60,
task_name => 'xcl_sql_tuing_task',
description => 'See what is wrong with the SELECT'
) ;
end;
/
2. 设置任务时指定的时限值是60分钟.
begin
dbms_sqltune.set_tuning_task_parameter
(task_name => 'xcl_sql_tuing_task',
parameter => 'TIME_LIMIT',
value => 30
);
end;
/
3. 使用EXECUTE_TUNING_TASK过程启动调整任务
begin
dbms_sqltune.execute_tuning_task
(task_name => 'xcl_sql_tuing_task');
end;
/
4. 通过连接DBA_ADVISOR_TASKS和V$ADVISOR_PROGRESS来查任务状态
select task_name,status,sofar,totalwork
from dba_advisor_tasks
join v$advisor_progress using(task_id)
where task_name = 'xcl_sql_tuing_task';
5. 查看调整任务给出的建议
select dbms_sqltune.report_tuning_task('xcl_sql_tuing_task') from dual;
更多详情见请继续阅读下一页的精彩内容:
推荐阅读:
Linux上Oracle 11g安装步骤图文详解
Linux操作系统中Oracle 11g数据库安装过程图文详解
CentOS 5.6 上安装 Oracle 11g R2 单实例数据库详解
Oracle VM虚拟机中安装Oracle Clusterware 11g步骤
VM虚拟机下在Linux上安装Oracle 11G单实例数据库