REM REM DBAToolZ NOTE: REM This script was obtained from DBAToolZ.com REM It's configured to work with SQL Directory (SQLDIR). REM SQLDIR is a utility that allows easy organization and REM execution of SQL*Plus scripts using user-friendly menu. REM Visit DBAToolZ.com for more details and free SQL scripts. REM REM REM File: REM s_user_ses_IO.sql REM REM USER TRACE REM REM Author: REM Jonathan Lewis REM JLEWIS REM http://www.jlcomp.demon.co.uk REM REM Purpose: REM REM Reports session IO with 10 sec interval REM REM REM Usage: REM s_user_ses_IO.sql REM REM Example: REM s_user_ses_IO.sql REM REM REM History: REM ??-??-???? JLEWIS Created REM 08-01-2001 VMOGILEV Added to DBATOOLZ Library REM REM create or replace procedure session_io ( i_period in number default 10) is cursor c1 is select sid, block_gets, consistent_gets, physical_reads, block_changes, consistent_changes from v$sess_io order by sid; r c1%rowtype; type s_type is table of c1%rowtype index by binary_integer; s_list s_type; begin for r in c1 loop s_list(r.sid).block_gets := r.block_gets; s_list(r.sid).consistent_gets := r.consistent_gets; s_list(r.sid).physical_reads := r.physical_reads; s_list(r.sid).block_changes := r.block_changes; s_list(r.sid).consistent_changes := r.consistent_changes; end loop; dbms_lock.sleep (i_period); dbms_output.put_line('---------------------------------'); dbms_output.put_line('Session I/O - ' || to_char(sysdate,'dd-Mon hh24:mi:ss') ); dbms_output.put_line('Interval: ' || i_period || ' seconds'); dbms_output.put_line('---------------------------------'); dbms_output.put_line( 'SID' || lpad('Block Gets',12) || lpad('Cons gets',12) || lpad('Physical',12) || lpad('Block chg',12) || lpad('Cons Chgs',12) ); dbms_output.put_line( '---' || lpad('----------',12) || lpad('----------',12) || lpad('--------',12) || lpad('---------',12) || lpad('----------',12) ); for r in c1 loop if (not s_list.exists(r.sid)) then s_list(r.sid).block_gets := 0; s_list(r.sid).consistent_gets := 0; s_list(r.sid).physical_reads := 0; s_list(r.sid).block_changes := 0; s_list(r.sid).consistent_changes := 0; end if; if ( (s_list(r.sid).block_gets != r.block_gets) or (s_list(r.sid).consistent_gets != r.consistent_gets) or (s_list(r.sid).physical_reads != r.physical_reads) or (s_list(r.sid).block_changes != r.block_changes) or (s_list(r.sid).consistent_changes != r.consistent_changes) ) then dbms_output.put(to_char(r.sid,'000')); dbms_output.put(to_char( r.block_gets - s_list(r.sid).block_gets, '999,999,990') ); dbms_output.put(to_char( r.consistent_gets - s_list(r.sid).consistent_gets, '999,999,990') ); dbms_output.put(to_char( r.physical_reads - s_list(r.sid).physical_reads, '999,999,990') ); dbms_output.put(to_char( r.block_changes - s_list(r.sid).block_changes, '999,999,990') ); dbms_output.put_line(to_char( r.consistent_changes - s_list(r.sid).consistent_changes, '999,999,990') ); end if; end loop; end session_io; / set serveroutput on execute session_io;