【转载】tom的RUNSTATS测试工具

-- 创建 runstats 包。其中包括 3 个简单 API 调用:
create or replace package runstats_pkg
as
   procedure rs_start;
   procedure rs_middle;
   procedure rs_stop(p_difference_threshold in number default 0);
end;
/
create or replace package body runstats_pkg
as
-- 这些全局变量用于纪录每次运行的耗用时间:
  g_start number;
  g_run1 number;
  g_run2 number;

  procedure rs_start
  is
  begin
        delete from run_stats;
        insert into run_stats
        select 'before', stats.* from stats;
        g_start := dbms_utility.get_time;
  end;
 
procedure rs_middle
  is
  begin
        g_run1 := (dbms_utility.get_time - g_start);
        insert into run_stats
        select 'after 1',stats.* from stats;
        g_start := dbms_utility.get_time;
  end;
 
procedure rs_stop(p_difference_threshold in number default 0)
  is
  begin
      g_run2 := (dbms_utility.get_time - g_start);
      dbms_output.put_line('Run1 ran in'||g_run1||'hsecs');
      dbms_output.put_line('Run2 ran in'||g_run2||'hsecs');
      dbms_output.put_line('run 1 ran in '||round(g_run1/g_run2*100,2)||'%of the time');
      dbms_output.put_line(chr(9));
      
      insert into run_stats
      select 'after 2', stats.* from stats;
      dbms_output.put_line( rpad('Name',30)|| lpad('Run1',10)||
                            lpad('Run2',10)|| lpad('Diff',10));
      for x in
      (
          select rpad(a.name,30)||
                 to_char(b.value - a.value,'9,999,999')||
                 to_char(c.value - b.value,'9,999,999')||
                 to_char(((c.value - b.value)-(b.value - a.value)),'9,999,999') data
          from run_stats a, run_stats b, run_stats c
          where a.name = b.name
          and b.name = c.name
          and a.runid = 'before'
          and b.runid = 'after 1'
          and c.runid = 'after 2'
          and (c.value - a.value) > 0
          and abs((c.value - b.value) - (b.value - a.value)) > p_difference_threshold
          order by abs((c.value - b.value)-(b.value - a.value))
      ) loop
        dbms_output.put_line(x.data);
      end loop;
      
      dbms_output.put_line(chr(9));
      dbms_output.put_line('Run1 latches total versus runs -- difference and pct ');
      dbms_output.put_line( lpad('Run1',10) || lpad('Run2',10) ||
                            lpad('Diff',10) || lpad('Pct',8));
      for x in
      (
          select to_char(run1, '9,999,999')||
                 to_char(run2, '9,999,999')||
                 to_char(diff, '9,999,999')||
                 to_char(round(run1/run2*100,2), '999.99')||'%' data
          from (
               select sum(b.value - a.value) run1,
                      sum(c.value - b.value) run2,
                      sum((c.value - b.value) - (b.value - c.value)) diff
               from run_stats a, run_stats b, run_stats c
               where a.name = b.name
               and b.name = c.name
               and a.runid = 'before'
               and b.runid = 'after 1'
and c.runid = ‘after 2and a.name like 'latch%'
          )
      )loop
           dbms_output.put_line(x.data);
      end loop;           
  end;
end;
/

 

create or replace view stats
as
select 'STAT...'||a.NAME AS name, b.VALUE as value
from v$statname a, v$mystat b
where a.STATISTIC# = b.STATISTIC#
union all
select 'latch'||name as name, gets as value
from v$latch;

创建一张存储这些统计信息的小表:
create global temporary table run_stats
(
       runid varchar2(15),
       name varchar2(80),
       value int
) on commit preserve rows;

使用测试:

set serveroutput on size 1000000;
exec runstats_pkg.rs_start;
exec pkg_mv_test.PR_MV_ENTRANCE;
 exec runstats_pkg.rs_middle;
exec pkg_mv_test.PR_MV_ENTRANCE;
exec  runstats_pkg.rs_stop(100000);

==========================================
Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 
Connected as zhangxsh
 
SQL> set serveroutput on size 1000000;
SQL> exec runstats_pkg.rs_start;
 
PL/SQL procedure successfully completed
 
SQL> exec pkg_mv_test.PR_MV_ENTRANCE;
 
PL/SQL procedure successfully completed
 
SQL>  exec runstats_pkg.rs_middle;
 
PL/SQL procedure successfully completed
 
SQL> exec pkg_mv_test.PR_MV_ENTRANCE;
SQL> exec pkg_mv_test.PR_MV_ENTRANCE;
 
PL/SQL procedure successfully completed
 
SQL> exec  runstats_pkg.rs_stop;
 
Run1 ran in5848hsecs
Run2 ran in3687hsecs
run 1 ran in 158.61%of the time
    
Name                                Run1      Run2      Diff
STAT...cleanouts only - consis       175       176         1
STAT...transaction rollbacks           3         2        -1
STAT...immediate (CR) block cl       175       176         1
STAT...commit txn count during       368       369         1
STAT...commit batch/immediate          3         2        -1
STAT...commit immediate reques         3         2        -1
STAT...commit batch/immediate          3         2        -1
STAT...commit immediate perfor         3         2        -1
STAT...parse time cpu                  6         5        -1
latchksuosstats global area            4         3        -1
latchobject stats modification         4         5         1
latchsort extent pool                  7         8         1
latchktm global data                  11        12         1
latchparameter list                    0         1         1
latchJS mem alloc latch                1         0        -1
latchJS queue access latch             1         0        -1
STAT...redo synch writes          55,975    55,973        -2
STAT...session cursor cache co         2         0        -2
STAT...bytes sent via SQL*Net      2,120     2,118        -2
STAT...bytes received via SQL*     2,452     2,450        -2
latchobject queue header heap          7         9         2
latchcommit callback allocatio         0         2         2
latchjob_queue_processes param         3         1        -2
latchthreshold alerts latch            2         0        -2
STAT...immediate (CURRENT) blo    56,183    56,180        -3
STAT...parse time elapsed              8         5        -3
latchparameter table allocatio         5         2        -3
latchbuffer pool                       3         0        -3
latchtransaction allocation           13        10        -3
latchhash table modification l         3         0        -3
STAT...user commits              111,948   111,944        -4
STAT...redo buffer allocation         15        11        -4
latchFOB s.o list latch                9         5        -4
latchFIB s.o chain latch               4         0        -4
latchparallel query alloc buff         8         4        -4
STAT...redo log space requests        16        11        -5
STAT...workarea executions - o         9        14         5
STAT...parse count (hard)             38        33        -5
latchmessage pool operations p        10        15         5
latchJS slv state obj latch            5         0        -5
STAT...user I/O wait time              9         3        -6
STAT...sorts (memory)                  3         9         6
latchOS process                        0         6         6
latchsession timer                    22        16        -6
STAT...data blocks consistent      1,045     1,038        -7
STAT...rollbacks only - consis     1,045     1,038        -7
STAT...rows fetched via callba        40        32        -8
STAT...cursor authentications         33        25        -8
latchKMG MMAN ready and startu        20        12        -8
STAT...physical read total IO         27        18        -9
STAT...physical reads                 27        18        -9
STAT...physical reads cache           27        18        -9
STAT...physical read IO reques        27        18        -9
STAT...write clones created in        82        72       -10
STAT...consistent changes          1,081     1,070       -11
STAT...application wait time           1        13        12
STAT...table fetch continued r        23        11       -12
latchresmgr group change latch         8        22        14
STAT...sorts (rows)                3,538     3,553        15
latchOS process allocation            20        35        15
latchpost/wait queue                  57        40       -17
STAT...cluster key scans             182       163       -19
latchdummy allocation                  4        23        19
latchresmgr:actses change grou         2        21        19
latchresmgr:actses active list         4        23        19
latchresmgr:free threads list          4        23        19
latchMemory Management Latch          20         0       -20
latchevent group latch                 0        21        21
latchglobal KZLD latch for mem         0        21        21
STAT...opened cursors current         20        -2       -22
STAT...CR blocks created           1,126     1,104       -22
latchprocess allocation                0        23        23
latchprocess group creation            0        23        23
latchOS process: request alloc         0        23        23
latchloader state object freel        48        24       -24
STAT...table scans (short tabl       104        79       -25
latchchannel handle pool latch         3        28        25
latchactive checkpoint queue l       500       527        27
STAT...shared hash latch upgra       261       233       -28
STAT...index scans kdiixs1            85        57       -28
STAT...workarea memory allocat        -3        26        29
latchactive service list             148       177        29
STAT...redo synch time                 2        33        31
STAT...index fetch by key        172,087   172,056       -31
latchsession state list latch          8        41        33
latchfile cache latch                134       169        35
latchlibrary cache pin allocat        50        89        39
STAT...cluster key scan block        383       343       -40
latchcompile environment latch        41        83        42
latchuser lock                         8        54        46
latchlibrary cache lock alloca        61       107        46
latchPL/SQL warning settings          25        77        52
latchkks stats                        50       107        57
latchlibrary cache load lock          64       122        58
latchsequence cache                    3        68        65
latchclient/application info          34       110        76
STAT...opened cursors cumulati       371       280       -91
STAT...session cursor cache hi       353       244      -109
STAT...parse count (total)           415       296      -119
latchchannel operations parent       534       656       122
STAT...redo log space wait tim       475       346      -129
STAT...change write time             277       146      -131
STAT...table fetch by rowid        4,168     4,018      -150
latchlist of block allocation        245        80      -165
latchJS queue state obj latch        486       252      -234
latchundo global data            546,976   547,262       286
STAT...calls to get snapshot s   281,447   281,127      -320
latchenqueues                      2,432     2,063      -369
STAT...buffer is not pinned co    12,813    12,427      -386
STAT...IMU- failed to get a pr     8,907     8,493      -414
STAT...IMU pool not allocated      8,907     8,493      -414
STAT...cleanout - number of kt     1,566     1,133      -433
STAT...active txn count during     1,389       956      -433
latchSQL memory manager workar     1,303       868      -435
STAT...consistent gets - exami   342,647   342,116      -531
STAT...recursive cpu usage         1,704     1,003      -701
STAT...CPU used when call star     1,928     1,203      -725
STAT...CPU used by this sessio     1,928     1,203      -725
STAT...DB time                     2,585     1,703      -882
STAT...hot buffers moved to he     1,208         0    -1,208
STAT...switch current to new b     1,264         0    -1,264
latchsession idle bit                263     1,700     1,437
STAT...calls to kcmgcs             2,339       803    -1,536
latchcache buffer handles          3,034     1,255    -1,779
latchsession allocation            7,506     9,570     2,064
latchlibrary cache lock            2,477     4,939     2,462
STAT...redo ordering marks         4,352     1,783    -2,569
STAT...rollback changes - undo     2,700         4    -2,696
latchcheckpoint queue latch       13,708    10,933    -2,775
STAT...calls to kcmgas           119,054   115,175    -3,879
STAT...free buffer requested      13,965     7,869    -6,096
STAT...table scan blocks gotte   118,393   112,276    -6,117
STAT...no work - consistent re   237,863   231,521    -6,342
STAT...consistent gets           582,789   575,657    -7,132
STAT...consistent gets from ca   582,789   575,657    -7,132
latchConsistent RBA               74,764    66,472    -8,292
latchmostly latch-free SCN        74,813    66,486    -8,327
latchlgwr LWN SCN                 74,769    66,436    -8,333
STAT...messages sent              74,770    66,436    -8,334
latchcache buffers lru chain      41,576    30,955   -10,621
STAT...free buffer inspected      13,321         0   -13,321
latchobject queue header opera    56,580    36,948   -19,632
latchmessages                    221,645   198,144   -23,501
latchredo writing                225,013   199,935   -25,078
latchredo allocation             441,395   415,945   -25,450
latchsimulator lru latch         108,398    78,460   -29,938
latchsimulator hash latch        110,063    79,545   -30,518
STAT...deferred (CURRENT) bloc   113,306    56,136   -57,170
STAT...physical read bytes       221,184   147,456   -73,728
STAT...physical read total byt   221,184   147,456   -73,728
STAT...IMU Flushes               103,035     3,033  -100,002
STAT...IMU commits                     0   100,415   100,415
STAT...enqueue releases          336,854   224,702  -112,152
STAT...enqueue requests          336,854   224,702  -112,152
STAT...commit cleanouts succes   282,507   169,224  -113,283
STAT...commit cleanouts          282,514   169,231  -113,283
STAT...execute count             392,218   224,189  -168,029
STAT...recursive calls           956,477   787,573  -168,904
latchIn memory undo latch        669,714   466,685  -203,029
latchdml lock allocation         448,392   224,432  -223,960
latchenqueue hash chains         675,343   451,005  -224,338
STAT...buffer is pinned count    277,659     1,769  -275,890
STAT...redo entries              607,160   307,006  -300,154
STAT...db block gets from cach 1,041,178   735,660  -305,518
STAT...db block gets           1,041,178   735,660  -305,518
STAT...session logical reads   1,623,967 1,311,317  -312,650
STAT...session uga memory        392,880    65,464  -327,416
latchlibrary cache               792,505   462,068  -330,437
latchlibrary cache pin           788,056   455,048  -333,008
STAT...session uga memory max    516,332   138,512  -377,820
latchshared pool                 705,607   233,465  -472,142
STAT...db block changes        1,448,639   852,288  -596,351
STAT...session pga memory        589,824  -131,072  -720,896
STAT...table scan rows gotten  9,698,389 8,915,734  -782,655
latchrow cache objects         1,707,517    30,186-1,677,331
latchcache buffers chains      6,709,233 4,968,781-1,740,452
STAT...session pga memory max  2,752,512         0-2,752,512
STAT...undo change vector size##############################
STAT...IMU undo allocation siz##############################
STAT...redo size              ##############################
STAT...IMU Redo allocation siz########## 1,031,880##########
==========================================

 

posted on 2014-01-02 12:48  迷途@书童  阅读(551)  评论(0编辑  收藏  举报

导航