美创科技技术社区

注册

 

发新话题 回复该主题

修改statspack SQL信息收集的阀值 [复制链接]

1#

快照阀值

快照阀值只应用于stats$sql_summary表中获取的SQL语句。

因为每一个快照都会收集很多数据,每一行都代表获取快照时数据库中的一个SQL语句,所以stats$sql_summary很快就会成为Statspack中最大的表。

快照阀值存储在stats$statspack_parameter表中。让我们了解一下各种阙值:

a. executions_th这是SQL语句执行的数量(默认值是100)

b. disk_reads_tn这是SQL语句执行的磁盘读入数量(默认值是1000)

c. parse_calls_th这是SQL语句执行的解析调用的数量(默认值是1000)

d. buffer_gets_th这是SQL语句执行的缓冲区获取的数量(默认值是10000)

e.sharable_mem_th这是SQL语句执行的shared pool大小使用数量(默认值是1048576)

f. version_count_th这是SQL语句执行的version_count数量(默认值是10000)

statspack snap函数中更新stats$sql_summary的语句如下:  

insert into stats$sql_summary    
            ( snap_id      
            , dbid      
            , instance_number      
            , text_subset      
            , sharable_mem      
            , sorts      
            , module      
            , loaded_versions      
            , fetches      
            , executions      
            , loads      
            , invalidations      
            , parse_calls      
            , disk_reads      
            , buffer_gets      
            , rows_processed      
            , command_type      
            , address      
            , hash_value      
            , version_count      
            , cpu_time      
            , elapsed_time      
            , outline_sid      
            , outline_category      
            , child_latch      
            )      
       select l_snap_id      
            , p_dbid      
            , p_instance_number      
            , substrb(sql_text,1,31)      
            , sharable_mem      
            , sorts      
            , module      
            , loaded_versions      
            , fetches      
            , executions      
            , loads      
            , invalidations      
            , parse_calls      
            , disk_reads      
            , buffer_gets      
            , rows_processed      
            , command_type      
            , address      
            , hash_value      
            , version_count      
            , cpu_time      
            , elapsed_time      
            , outline_sid      
            , outline_category      
            , child_latch      
         from stats$v$sqlxs      
        where is_obsolete = ‘N’      
          and (   buffer_gets   > l_buffer_gets_th      
               or disk_reads    > l_disk_reads_th      
               or parse_calls   > l_parse_calls_th      
               or executions    > l_executions_th      
               or sharable_mem  > l_sharable_mem_th      
               or version_count > l_version_count_th      
              );

所以说,其中的任何一个阙值值超过以上参数就会产生一条记录。

通过调用statspack.modify_statspack_parameter函数我们可以改变阙值的默认值。类似如下语句则会收集shared pool中的所有语句了:

SQL> exec statspack.MODIFY_STATSPACK_PARAMETER(i_executions_th => 0);    
  
PL/SQL procedure successfully completed

分享 转发
TOP
发新话题 回复该主题