ITPub博客

首页 > 数据库 > Oracle > Oracle 9i配置Statspack工具(下)

Oracle 9i配置Statspack工具(下)

原创 Oracle 作者:realkid4 时间:2014-02-10 20:53:26 0 删除 编辑

 

 

上篇中我们已经介绍了Statspack工具最基本的使用:安装卸载、Snapshot收集和基本报告生成。Oracle Statspack的灵活性是很强的,针对不同的分析需要和系统环境,我们可以在默认配置基础上进行定制,更好的完成分析需求。

 

3、各种Statspack配置参数

 

我们在AWR中,是不需要关注Snapshot收集过程的。默认情况下,Oracle后台进程MMON每个一个小时收集动态视图数据进行保存。在AWR中的调整主要集中在Snapshot收集频率设置上。

Statspack的设置内容要丰富的多。StatspackSnapshot设置分为两个大类:收集水平(Level)和性能阈值(threshold)。Snapshot的设置是作为每次收集的参数进行配置,并且可以在stats$snapshot基础表中查看到。

 

SQL> desc statspack.SNAP

Parameter          Type     Mode Default?

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

I_SNAP_LEVEL       NUMBER   IN   Y       

I_SESSION_ID       NUMBER   IN   Y       

I_UCOMMENT         VARCHAR2 IN   Y       

I_NUM_SQL          NUMBER   IN   Y       

I_EXECUTIONS_TH    NUMBER   IN   Y       

I_PARSE_CALLS_TH   NUMBER   IN   Y       

I_DISK_READS_TH    NUMBER   IN   Y       

I_BUFFER_GETS_TH   NUMBER   IN   Y        

I_SHARABLE_MEM_TH  NUMBER   IN   Y       

I_VERSION_COUNT_TH NUMBER   IN   Y       

I_SEG_PHY_READS_TH NUMBER   IN   Y       

I_SEG_LOG_READS_TH NUMBER   IN   Y       

I_SEG_BUFF_BUSY_TH NUMBER   IN   Y       

I_SEG_ROWLOCK_W_TH NUMBER   IN   Y        

I_SEG_ITL_WAITS_TH NUMBER   IN   Y       

I_SEG_CR_BKS_SD_TH NUMBER   IN   Y       

I_SEG_CU_BKS_SD_TH NUMBER   IN   Y       

I_ALL_INIT         VARCHAR2 IN   Y       

I_PIN_STATSPACK    VARCHAR2 IN   Y       

I_MODIFY_PARAMETER VARCHAR2 IN   Y        

(RESULT)           NUMBER                

 

 

 

SQL> desc stats$snapshot;

Name             Type          Nullable Default Comments

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

SNAP_ID          NUMBER(6)                              

DBID             NUMBER                                 

INSTANCE_NUMBER  NUMBER                                 

SNAP_TIME        DATE                                   

STARTUP_TIME     DATE                                   

SESSION_ID       NUMBER                                  

SERIAL#          NUMBER        Y                        

SNAP_LEVEL       NUMBER        Y                        

UCOMMENT         VARCHAR2(160) Y                        

EXECUTIONS_TH    NUMBER        Y                         

PARSE_CALLS_TH   NUMBER        Y                        

DISK_READS_TH    NUMBER        Y                        

BUFFER_GETS_TH   NUMBER        Y                        

SHARABLE_MEM_TH  NUMBER        Y                        

VERSION_COUNT_TH NUMBER        Y                        

SEG_PHY_READS_TH NUMBER                                 

SEG_LOG_READS_TH NUMBER                                 

SEG_BUFF_BUSY_TH NUMBER                                 

SEG_ROWLOCK_W_TH NUMBER                                  

SEG_ITL_WAITS_TH NUMBER                                 

SEG_CR_BKS_SD_TH NUMBER                                 

SEG_CU_BKS_SD_TH NUMBER                                 

ALL_INIT         VARCHAR2(5)   Y

 

默认snapshot收集动作是可以不设置任何参数的,那个是因为OracleStatspack每个版本都有一个经验值设置。注意:一般情况下,采用默认值可以应对大多数情况,不需要进行修改。

 

ü  Snap_level收集水平

 

应该说,snapshot收集过程的两个类型参数,分别反映了我们对性能数据收集的深度和广度两个维度范围。Snap_level表示的收集的广度,不同的level取值表示不同等级的收集广度。

在之前的stats$snapshot基表中,我们是可以看到每个snapshot对应的level值的。针对Oracle 9i版本,默认取值为5

 

SQL> select snap_id, dbid, to_char(snap_time, 'yyyy-mm-dd hh24:mi:ss') snap_time, snap_level from stats$snapshot;

 

SNAP_ID       DBID SNAP_TIME           SNAP_LEVEL

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

      1 2629872507 2014-02-07 10:51:30          5

 

不同level的取值,对应不同的性能数据收集范围。

如果取值0,表示常规性能数据收集,如wait statisticssystem eventssystem statisticsrollback segment datarow cacheSGAbackground eventssession events, lock statisticsbuffer pool statisticsparent latch statistics

如果取值5,表示除了level=0对应的数据收集外,还要针对shared pool中的SQL游标信息进行收集。注意:针对不同的SQL我们可以设置阈值参数,来设置收集的深度。比如SQL执行次数、解析次数等。

如果取值6,表示除了level=5收集数据外,还要包括shared poolSQL执行计划和资源消耗。

如果取值7,表示添加了Segment Level的统计信息,如数据块变更、物理逻辑读的次数。

如果取值10,表示在level=7的基础上,添加了child latch信息。

综合来看,level越高,收集信息广度越大。那么是不是越多越好,答案是否定的。信息收集的范围越多,意味着在进行snapshot收集的过程中需要消耗的资源就越多,时间也就越长。同时,保存在基表中的数据也就越多,对空间也有一定压力。

 

ü  SQL thresholds

 

SQL threshold参数配置在snapshot方法中有很多。无论是SQL还是segment结构,在性能视图中我们关注的都是资源消耗的“大户”。如何定义大户,是针对不同系统的实际情况而确定的。

各种thresholds指标,要取决于各自的需要。

 

ü  其他参数

 

除了两大类参数外,statspack还包括一些控制参数,来控制收集行为。i_modify_parameter是一个true/false类型参数,它的作用在于:当我们使用一个与默认值有区别的参数值时,如果需要将其保存在系统中作为新的默认值,就将这个参数设置为true

i_session_id是更有针对性的参数,可以针对一个特定的session编号收集性能数据。如果一个执行作业时间很长,我们又可以确定出该作业session的编号,就可以使用i_session_id参数针对特定这个会话连接进行数据收集。这样的报告形成更加有针对性,也可以将性能数据分割开来。

 

SQL> exec statspack.SNAP(i_snap_level => 10);

 

PL/SQL procedure successfully completed

 

SQL> select snap_id, dbid, to_char(snap_time, 'yyyy-mm-dd hh24:mi:ss') snap_time, snap_level from stats$snapshot;

 

SNAP_ID       DBID SNAP_TIME           SNAP_LEVEL

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

      1 2629872507 2014-02-07 10:51:30          5

      2 2629872507 2014-02-07 11:05:00          5

      3 2629872507 2014-02-07 12:32:51         10

 

9i中已经可以使用存储过程的=》指示符。

 

4StatspackSQL report生成

 

AWR报告中,我们可以依据报告中sql_id/hash_code,调用专门脚本来生成特定SQL的执行计划报告。在statspack中,我们也可以实现这样的功能。

注意:生成执行计划报告,要求level取值较高的snapshot收集范围。

 

SQL> select snap_id, to_char(snap_time,'yyyy-mm-dd hh24:mi:ss') start_time, snap_level from stats$snapshot;

 

SNAP_ID START_TIME          SNAP_LEVEL

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

      1 2014-02-07 10:51:30          5

      2 2014-02-07 11:05:00          5

      3 2014-02-07 12:32:51         10

     11 2014-02-07 14:52:44         10

     12 2014-02-07 14:54:58         10

 

先生成1112两个snapshot的报告,找到sql语句ID信息。

 

  Buffer Gets    Executions  Gets per Exec  %Total Time (s)  Time (s) Hash Value

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

             11           11            1.0    0.1     0.00      0.00  114078687

select con#,obj#,rcon#,enabled,nvl(defer,0) from cdef$ where rob

j#=:1

 

statspack报告中,我们没有sql_id使用,而是hash code。将特定语句hash code记录下来,将来输入到语句报告中。

 

调用程序脚本:

 

 

SQL> @?/rdbms/admin/sprepsql.sql

 

   DB Id    DB Name      Inst Num Instance

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

 2629872507 ORA9I               1 ora9i

 

Completed Snapshots

                           Snap                    Snap

Instance     DB Name         Id   Snap Started    Level Comment

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

ora9i        ORA9I            1 07 2  2014 10:5     5

                                1

                              2 07 2  2014 11:0     5

                                5

                              3 07 2  2014 12:3    10

                                2

 

                             11 07 2  2014 14:5    10

                                2

                             12 07 2  2014 14:5    10

                                4

 

根据交互提示输入snapshot rangehash code

 

Specify the Begin and End Snapshot Ids

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

输入 begin_snap 的值:

 

Specify the Hash Value

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

输入 hash_value 的值:  114078687

Hash Value specified is: 114078687

 

 

生成文本报告中,就可以方便查看到SQL语句相关消耗和执行计划。

 

Start Id     Start Time         End Id      End Time       Duration(mins)

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

       11 07-2 -14 14:52:44        12 07-2 -14 14:54:58           2.23

 

SQL Statistics

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

-> CPU and Elapsed Time are in seconds (s) for Statement Total and in

   milliseconds (ms) for Per Execute

                                                       % Snap

                     Statement Total      Per Execute   Total

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

        Buffer Gets:                                   11              1.0

    .14

         Disk Reads:                                    0              0.0

    .00

     Rows processed:                                    0              0.0

     CPU Time(s/ms):                                    0               .0

 Elapsed Time(s/ms):                                    0               .0

              Sorts:                                    0               .0

        Parse Calls:                                    7               .6

      Invalidations:                                    0

      Version count:                                    1

    Sharable Mem(K):                                    9

         Executions:                                   11

 

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

| Operation                      | PHV/Object Name     |  Rows | Bytes|   Cost |

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

|SELECT STATEMENT                |----- 3275652605 ----|       |      |        |

|TABLE ACCESS BY INDEX ROWID     |CDEF$                |       |      |        |

| INDEX RANGE SCAN               |I_CDEF3              |       |      |        |

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

 

5、结论

 

综合性的性能诊断工具,是我们日常工作进行分析诊断的重要助力。从Statspack到今天的AWR,自动化、智能化性能诊断已经成为的工具发展方向。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17203031/viewspace-1079142/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
求道~

注册时间:2010-11-30

  • 博文量
    545
  • 访问量
    7645263