connect / as sysdba 
  create view dual2 
    as select dummy from x$dual 
    where instance = USERENV('INSTANCE'); 
  grant select on dual2 to public; 
  create public synonym dual2 for dual2;    
  connect scott/tiger;     
  create table temp 
  ( sqlno number(3), 
    b_a varchar2(2), 
    stat number, 
    value number 
  );    
  SQL> l 
    1 declare 
    2   v_dummy date; 
    3   v_start number; 
    4 begin 
    5   insert into temp select 1,'b',statistic#,value from v$mystat; 
    6   v_start := dbms_utility.get_time; 
    7   for i in 1..2000 loop 
    8     select sysdate into v_dummy from dual; 
    9   end loop; 
   10   dbms_output.put_line('1st stat used: '||(dbms_utility.get_time - v_start)||' seconds'); 
   11 
   12   insert into temp select 1,'ab',statistic#,value from v$mystat; 
   13   v_start := dbms_utility.get_time; 
   14   for i in 1..2000 loop 
   15     select sysdate into v_dummy from dual2; 
   16   end loop; 
   17   dbms_output.put_line('2st stat used: '||(dbms_utility.get_time - v_start)||' seconds'); 
   18   insert into temp select 2,'a',statistic#,value from v$mystat; 
   19 end; 
   20* 
  SQL> / 
  1st stat used: 57 seconds 
  2st stat used: 45 seconds    
  PL/SQL procedure successfully completed.    
  SQL> l 
    1 select (select name from v$statname where statistic# = t2.stat) name, t1.value value1, t2.value value2 
    2 from 
    3 ( 
    4 select 1,b.stat,b.value - a.value value 
    5 from 
    6 (select * from temp 
    7  where sqlno=1 
    8  and b_a = 'b') a, 
    9 (select * from temp 
   10  where sqlno=1 
   11  and b_a = 'ab') b 
   12 where b.stat = a.stat 
   13 ) t1, 
   14 (select 2,t3.stat,t4.value - t3.value value 
   15 from 
   16 (select * from temp 
   17  where sqlno=1 
   18  and b_a = 'ab') t3, 
   19 (select * from temp 
   20  where sqlno=2 
   21  and b_a = 'a') t4 
   22 where t4.stat = t3.stat 
   23 ) t2 
   24 where t1.stat = t2.stat 
   25* and t1.value <>t2.value 
  SQL> /    
  NAME                     VALUE1   VALUE2 
  ---------------------------------------- ---------- ---------- 
  session logical reads             10016     20 
  enqueue releases                 1     2 
  db block gets                 8011     15 
  consistent gets                2005     5 
  db block changes                 8     18 
  free buffer requested               1     2 
  calls to kcmgcs                  0     2 
  calls to get snapshot scn: kcmgss       2004    2002 
  redo entries                   5     11 
  redo size                   5124    5928 
  no work - consistent read gets         2002     2 
  table scans (short tables)           2000     0 
  table scan rows gotten             2000     0 
  table scan blocks gotten            2000     0 
  buffer is not pinned count           2004     4    
  15 rows selected. 
查看本文来源