Here are some scripts related to Session Statistics .
Session I/O By User
SESSION I/O BY USER NOTES:
Username - Name of the Oracle process user
OS User - Name of the operating system user
PID - Process ID of the session
SID - Session ID of the session
Serial# - Serial# of the session
Physical Reads - Physical reads for the session
Block Gets - Block gets for the session
Consistent Gets - Consistent gets for the session
Block Changes - Block changes for the session
Consistent Changes - Consistent changes for the session
select nvl(ses.USERNAME,'ORACLE PROC') username,OSUSER os_user,
PROCESS pid,ses.SID sid,
SERIAL#, PHYSICAL_READS, BLOCK_GETS, CONSISTENT_GETS, BLOCK_CHANGES, CONSISTENT_CHANGESfrom v$session ses, v$sess_io siowhere ses.SID = sio.SIDorder by PHYSICAL_READS, ses.USERNAME CPU Usage By Session
CPU USAGE BY SESSION NOTES:
Username - Name of the user
SID - Session id
CPU Usage - CPU centiseconds used by this session (divide by 100 to get real CPU seconds)
select nvl(ss.USERNAME,'ORACLE PROC') username, se.SID, VALUE cpu_usagefrom v$session ss, v$sesstat se, v$statname snwhere se.STATISTIC# = sn.STATISTIC#and NAME like '%CPU used by this session%'and se.SID = ss.SIDorder by VALUE desc Resource Usage By User
RESOURCE USAGE BY USER NOTES:
SID - Session ID
Username - Name of the user
Statistic - Name of the statistic
Value - Current value
select ses.SID, nvl(ses.USERNAME,'ORACLE PROC') username, sn.NAME statistic, sest.VALUEfrom v$session ses, v$statname sn, v$sesstat sestwhere ses.SID = sest.SIDand sn.STATISTIC# = sest.STATISTIC#and sest.VALUE is not nulland sest.VALUE != 0 order by ses.USERNAME, ses.SID, sn.NAME Session Stats By Session
SESSION STAT NOTES:
Username - Name of the user
SID - Session ID
Statistic - Name of the statistic
Usage - Usage according to Oracle
select nvl(ss.USERNAME,'ORACLE PROC') username, se.SID, sn.NAME stastic, VALUE usagefrom v$session ss, v$sesstat se, v$statname snwhere se.STATISTIC# = sn.STATISTIC#and se.SID = ss.SIDand se.VALUE > 0order by sn.NAME, se.SID, se.VALUE desc Cursor Usage By Session
CURSOR USAGE BY SESSION NOTES:
Username - Name of the user
Recursive Calls - Total number of recursive calls
Opened Cursors - Total number of opened cursors
Current Cursors - Number of cursor currently in use
select user_process username, "Recursive Calls", "Opened Cursors", "Current Cursors"from ( select nvl(ss.USERNAME,'ORACLE PROC')||'('||se.sid||') ' user_process, sum(decode(NAME,'recursive calls',value)) "Recursive Calls", sum(decode(NAME,'opened cursors cumulative',value)) "Opened Cursors", sum(decode(NAME,'opened cursors current',value)) "Current Cursors" from v$session ss, v$sesstat se, v$statname sn where se.STATISTIC# = sn.STATISTIC# and (NAME like '%opened cursors current%' or NAME like '%recursive calls%' or NAME like '%opened cursors cumulative%') and se.SID = ss.SID and ss.USERNAME is not null group by nvl(ss.USERNAME,'ORACLE PROC')||'('||se.SID||') ')orasnap_user_cursorsorder by USER_PROCESS,"Recursive Calls" User Hit Ratios
USER HIT RATIO NOTES:
Username - Name of the user
Consistent Gets - The number of accesses made to the block buffer to retrieve data in a consistent mode.
DB Blk Gets - The number of blocks accessed via single block gets (i.e. not through the consistent get mechanism).
Physical Reads - The cumulative number of blocks read from disk.
Logical reads are the sum of consistent gets and db block gets.
The db block gets statistic value is incremented when a block is read for update and when segment header blocks are accessed.
Hit ratio should be > 90%
select USERNAME, CONSISTENT_GETS, BLOCK_GETS, PHYSICAL_READS, ((CONSISTENT_GETS+BLOCK_GETS-PHYSICAL_READS) / (CONSISTENT_GETS+BLOCK_GETS)) Ratiofrom v$session, v$sess_iowhere v$session.SID = v$sess_io.SIDand (CONSISTENT_GETS+BLOCK_GETS) > 0and USERNAME is not nullorder by ((CONSISTENT_GETS+BLOCK_GETS-PHYSICAL_READS) / (CONSISTENT_GETS+BLOCK_GETS))
No comments:
Post a Comment