ORACLE 10G ADDM诊断工具的使用

来源:未知 责任编辑:智问网络 发表时间:2013-11-10 20:18 点击:

一、ADDM提供了一个整体的优化方案。基于一段时间内的AWR snapshots可以执行ADDM 分析,可以诊断在这段期间内数据库可能存在的瓶颈。它不需要安装,自动给出分析结果;而statspack需要安装,生成的分析报告需要DBA进行分析。

1、ADDM工具要求系统参数 statistics_level设置为typical(推荐)或all,10G系统默认为typical了。
SQL> ALTER SESSION SET STATISTICS_LEVEL = TYPICAL;

2、先获取到两次AWR快照的ID
SQL> select snap_id from (SELECT * FROM dba_hist_snapshot ORDER BY snap_id desc) where rownum <= 2;
   SNAP_ID
----------
      261
      262

3、然后创建优化任务,并执行
SQL> @ D:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\addmrpt.sql
输入 begin_snap 的值: 261   --根据上面的查询结果输入
输入 end_snap 的值: 262
输入 report_name 的值: <enter使用默认文件名>
Report written to D:\Program Files\addmrpt_1_261_262.txt, 查看文件内容即可。
此外,如果是RAC环境下,可以执行addmrpti.sql,这脚本的执行,会多出要求输入DB ID和instance ID的要求。

二、STA(SQL Tuning Advisor)
ADDM得出了诊断结果,并给出了优化建议。DBA就可以使用STA的建议进行语句的优化。使用STA一定要保证优化器是CBO模式下。

(--查询优化器的模式:
select * from v$sys_optimizer_env;
--修改模式(10g的默认值就是all_rows ):
SQL>  ALTER SESSION SET OPTIMIZER_MODE=all_rows;
模式的值必须来自 first_rows_1000, first_rows_100, first_rows_10, first_rows_1, first_rows, all_rows, choose, rule 之间。)

1、创建优化任务并执行
sql>
DECLARE
    my_task_name VARCHAR2(30);
    my_sqltext CLOB;
BEGIN
    my_sqltext := 'select * from  scott.t_tmp_billlog';
    --创建任务
    my_task_name := DBMS_SQLTUNE.CREATE_TUNING_TASK(
        sql_text => my_sqltext,
        user_name => 'SCOTT',
        scope => 'COMPREHENSIVE',
        time_limit => 60,
        task_name => 'TEST_ADDM_task',
        description => 'Task to tune a query on a specified PRODUCT');
     --执行任务
    dbms_sqltune.Execute_tuning_task (task_name => 'TEST_ADDM_task');
END;
/
  --DBMS_SQLTUNE.CREATE_TUNING_TASK 就是用来创建优化任务的函数
  FUNCTION create_tuning_task(
    sql_text    IN CLOB,                             --需要优化的语句
    bind_list   IN sql_binds := NULL,
    user_name   IN VARCHAR2  := NULL,                --该语句通过哪个用户执行
    scope       IN VARCHAR2  := SCOPE_COMPREHENSIVE, --优化范围(limited或comprehensive)
    time_limit  IN NUMBER    := TIME_LIMIT_DEFAULT,  --优化过程的时间限制
    task_name   IN VARCHAR2  := NULL,                --优化任务名称   
    description IN VARCHAR2  := NULL)
  RETURN VARCHAR2;
 
 --  PROCEDURE execute_tuning_task(task_name IN VARCHAR2); --是执行优化的方法。

2、查看优化建议结果用 report_tuning_task函数:
SQL> set serveroutput on;
SQL> SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK('TEST_ADDM_task') FROM DUAL;

3. 如需要再次运行任务,先要把刚才的任务删除:
-- PROCEDURE drop_tuning_task(task_name IN VARCHAR2);
SQL> exec  dbms_sqltune.drop_tuning_task(task_name => 'TEST_ADDM_task');

关于更多的方法,可以查看 SYS.dbms_sqltune 包。

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • Request.ServerVariables 参数大全
    • 执行全文索引时出现权限不足的解决方法
    • 导入excel文件处理流程节点的解决方案
    • 查看sql修改痕迹(SQL Change Tracking on Table)
    • MongoDB安装为Windows服务方法与注意事项
    • App数据层设计及云存储使用指南
    • PostgreSQL启动过程中的那些事三:加载GUC参数
    • 写给MongoDB开发者的50条建议Tip1
    • Percolator与分布式事务思考(二)
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1