洪卓辉  kingsql

纵横仁合培训及就业中心联合创始人,国际注册培训师,Oracle天津用户组主席

  • 博客访问: 747880
  • 博文数量: 231
  • 用 户 组: 普通用户
  • 注册时间: 2013-02-28 20:59
  • 认证徽章:
个人简介

Oracle DBA; Oracle OCP、OCM; Oracle Young Expert; OCMU MEMBER; ITPUB专家组成员; 培养百余名学员通过OCP认证; 推送数十名学员高薪就业; hongzhuohui@kingsql.com

ITPUB论坛APP

ITPUB论坛APP



APP发帖 享双倍积分

文章分类
微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

订阅
热词专题

分类: Oracle

Oracle 10G推出ADDM,和同时推出的STA结合使用,可以节省很多优化的时间,ADDM收集相关统计数据到AWR中,而STA根据这些数据,给出合理的优化建议。

  

ADDM具有一整套优化方案,基于某一段时间内的AWR快照可以通过ADDM来分析,可以诊断在该段时间内数据库有可能存在的瓶颈。

 

ADDM分析的目标是减少DB TIME的值,DB TIME决定吞吐量,是数据库处理用户请求花费时间的一个总和,包括等到时间和CPU处理时间,可以通过v$sess_time_modelv$sys_time_model来查询它们的值。

 

通过减少DB TIME的值,在同样的系统资源背景下,数据库可以处理相对更多的请求,也就相当于提高了数据库的吞吐能力。同时,ADDM报告中的问题,也是通过DB TIME来进行排序的。

 

在默认情况下,ADDM是自动开启的,由STATISTICS_LEVEL参数来控制,这个参数应该被设置为TYPICAL或ALL,如果设置为BASIC,则将会关闭很多特性。

SYS@hzh%11gR2>show parameter STATISTICS_LEVEL;

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

statistics_level                     string      TYPICAL

 

ADDM对读写性能的分析一部分是依赖于参数DBIO_EXPECTED(读取一个数据库块,所需要花费的平均时间)单位是微秒,默认为10毫秒,该参数是通过DBMS_ADVISOR.SET_DEFAULT_PARAMETER来设定的,例如

SYS@hzh%11gR2>EXECUTE DBMS_ADVISOR.SET_DEFAULT_PARAMETER ('ADDM','DBIO_EXPECTED',10000);

 

为能诊断数据库性能方面的问题,ADDM可以跨越任意2个快照来分析,只要这两个快照在创建过程中没有错误并且没有被删除,并且期间数据库不能发生关闭和启动的事件。

 

下面来做个实验,进行ADDM采集和诊断

1.创建测试表

SYS@hzh%11gR2>create table hzh1 (x number);

 

Table created.

 

2.进行一些负荷操作

SYS@hzh%11gR2>declare

  2  n number;

  3  begin

  4  for n in 1..888888

  5  loop

  6  insert into hzh1 values (n);

  7  commit;

  8  end loop;

  9  end;

 10  /

 

PL/SQL procedure successfully completed.

 

3.采集一次工作量快照

SYS@hzh%11gR2>begin

  2  dbms_workload_repository.create_snapshot('TYPICAL');

  3  end;

  4  /

 

PL/SQL procedure successfully completed.

 

4.进行高负荷操作

SYS@hzh%11gR2>declare

  2  n number;

  3  begin

  4  for n in 1..88888888

  5  loop

  6  insert into hzh1 values (n);

  7  commit;

  8  end loop;

  9  end;

 10  /

 

PL/SQL procedure successfully completed.


5.再次采集一次工作量快照

SYS@hzh%11gR2>begin

  2  dbms_workload_repository.create_snapshot('TYPICAL');

  3  end;

  4  /

 

PL/SQL procedure successfully completed.

 

6.创建一个优化诊断任务并执行

SYS@hzh%11gR2>select snap_id from (SELECT * FROM dba_hist_snapshot ORDER BY snap_id desc) where rownum <=2;

 

   SNAP_ID

----------

        14

        13

 

DECLARE

    task_name VARCHAR2(30) := 'DEMO_ADDM01';

    task_desc VARCHAR2(30) := 'ADDM Feature Test';

    task_id NUMBER;

BEGIN

    dbms_advisor.create_task('ADDM', task_id, task_name, task_desc, null);

    dbms_advisor.set_task_parameter(task_name, 'START_SNAPSHOT', 13);

    dbms_advisor.set_task_parameter(task_name, 'END_SNAPSHOT', 14);

    dbms_advisor.set_task_parameter(task_name, 'INSTANCE', 1);

    dbms_advisor.set_task_parameter(task_name, 'DB_ID', 609310700);

    dbms_advisor.execute_task(task_name);

END;

/

 

7.查看优化建议结果
通过函数dbms_advisor.get_task_report可以得到优化建议结果

SYS@hzh%11gR2>SET LONG 1000000 PAGESIZE 0 LONGCHUNKSIZE 1000

SYS@hzh%11gR2>COLUMN get_clob FORMAT a80

SYS@hzh%11gR2>SELECT dbms_advisor.get_task_report('DEMO_ADDM01', 'TEXT', 'ALL') FROM DUAL;

          ADDM Report for Task 'DEMO_ADDM01'

          ----------------------------------

 

Analysis Period

---------------

AWR snapshot range from 13 to 14.

Time period starts at 16-OCT-14 02.49.16 PM

Time period ends at 16-OCT-14 03.19.55 PM

 

Analysis Target

---------------

Database 'HZH' with DB ID 609310700.

Database version 11.2.0.1.0.

ADDM performed an analysis of instance hzh, numbered 1 and hosted at

SLES-10-01.

 

Activity During the Analysis Period

-----------------------------------

Total database time was 1374 seconds.

The average number of active sessions was .75.

 

//这一部分包括一些基础信息,分析时间段、DB和instance ID&名字、主机名字、Oracle版本、快照范围、数据库消耗时间、多少个活动会话

 

Summary of Findings

-------------------

   Description                    Active Sessions      Recommendations

                                  Percent of Activity

   -----------------------------  -------------------  ---------------

1  Top SQL Statements             .71 | 95.59          2

2  Unusual "User I/O" Wait Event  .02 | 3.02           1

//ADDM发现的问题,并给出的相应建议

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

          Findings and Recommendations

          ----------------------------

 

Finding 1: Top SQL Statements

Impact is .71 active sessions, 95.59% of total activity.

--------------------------------------------------------

SQL statements consuming significant database time were found. These

statements offer a good opportunity for performance improvement.

 

   Recommendation 1: SQL Tuning

   //建议1

   Estimated benefit is .54 active sessions, 72.79% of total activity.

   -------------------------------------------------------------------

   Action

      Run SQL Tuning Advisor on the INSERT statement with SQL_ID

      "bcmbpq6aums4r".

      Related Object

         SQL statement with SQL_ID bcmbpq6aums4r.

         INSERT INTO HZH1 VALUES (:B1 )

   Rationale

      The SQL spent 100% of its database time on CPU, I/O and Cluster waits.

      This part of database time may be improved by the SQL Tuning Advisor.

   Rationale

      Database time for this SQL was divided as follows: 100% for SQL

      execution, 0% for parsing, 0% for PL/SQL execution and 0% for Java

      execution.

   Rationale

      SQL statement with SQL_ID "bcmbpq6aums4r" was executed 9539999 times and

      had an average elapsed time of 0.000098 seconds.

   Rationale

      Top level calls to execute the PL/SQL statement with SQL_ID

      "5c4dk552wu1df" are responsible for 100% of the database time spent on

      the INSERT statement with SQL_ID "bcmbpq6aums4r".

      Related Object

         SQL statement with SQL_ID 5c4dk552wu1df.

         declare

         n number;

         begin

         for n in 1..88888888

         loop

         insert into hzh1 values (n);

         commit;

         end loop;

         end;

 

   Recommendation 2: SQL Tuning

   //建议2

   Estimated benefit is .17 active sessions, 22.79% of total activity.

   -------------------------------------------------------------------

   Action

      Investigate the PL/SQL statement with SQL_ID "5c4dk552wu1df" for

      possible performance improvements. You can supplement the information

      given here with an ASH report for this SQL_ID.

      Related Object

         SQL statement with SQL_ID 5c4dk552wu1df.

         declare

         n number;

         begin

         for n in 1..88888888

         loop

         insert into hzh1 values (n);

         commit;

         end loop;

         end;

   Rationale

      The SQL Tuning Advisor cannot operate on PL/SQL statements.

   Rationale

      Database time for this SQL was divided as follows: 88% for SQL

      execution, 0% for parsing, 12% for PL/SQL execution and 0% for Java

      execution.

   Rationale

      SQL statement with SQL_ID "5c4dk552wu1df" was executed 1 times and had

      an average elapsed time of 1348 seconds.

 

 

Finding 2: Unusual "User I/O" Wait Event

Impact is .02 active sessions, 3.02% of total activity.

-------------------------------------------------------

Wait event "Data file init write" in wait class "User I/O" was consuming

significant database time.

 

   Recommendation 1: Application Analysis

   //建议1

   Estimated benefit is .02 active sessions, 3.02% of total activity.

   ------------------------------------------------------------------

   Action

      Investigate the cause for high "Data file init write" waits. Refer to

      Oracle's "Database Reference" for the description of this wait event.

 

   Symptoms That Led to the Finding:

   ---------------------------------

      Wait class "User I/O" was consuming significant database time.

      Impact is .03 active sessions, 3.51% of total activity.

 

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

          Additional Information

          ----------------------

 

Miscellaneous Information

-------------------------

Wait class "Application" was not consuming significant database time.

Wait class "Commit" was not consuming significant database time.

Wait class "Concurrency" was not consuming significant database time.

Wait class "Configuration" was not consuming significant database time.

CPU was not a bottleneck for the instance.

Wait class "Network" was not consuming significant database time.

Session connect and disconnect calls were not consuming significant database

time.

Hard parsing of SQL statements was not consuming significant database time.

//内容是关于此次优化建议的一些附加信息

 

 

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
我的QQ 1749160152
我的邮箱 hongzhuohui@kingsql.com
我的百科 http://baike.sogou.com/v82076725.htm?sp=SST洪卓辉
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

 

 


 

阅读(9132) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册