1.       select
sid,s.statistic#,value,name from v$sesstat s,v$statname n where sid in (select
sid from v$session where username='MANUMGR') and s.statistic#=n.statistic# and
value>0 order by value desc;
2.       SQL>
select SID,EVENT,TOTAL_WAITS,TOTAL_TIMEOUTS,TIME_WAITED,AVERAGE_WAIT,MAX_WAIT
from v$session_event where sid in (select sid from v$session where
username='MANUMGR');
=========================================================================
col EVENT format a60 
select * from (
select active_session_history.event,
sum(active_session_history.wait_time +
active_session_history.time_waited) ttl_wait_time
from v$active_session_history active_session_history
where active_session_history.event is not null
group by active_session_history.event
order by 2 desc)
where rownum < 6
/
Top Wait Events Since Instance Startup
col event format a60
select event, total_waits, time_waited
from v$system_event e, v$event_name n
where n.event_id = e.event_id
and n.wait_class !='Idle'
and n.wait_class = (select wait_class from v$session_wait_class
where wait_class !='Idle'
group by wait_class having
sum(time_waited) = (select max(sum(time_waited)) from v$session_wait_class
where wait_class !='Idle'
group by (wait_class)))
order by 3;
===========select * from (
select active_session_history.event,
sum(active_session_history.wait_time +
active_session_history.time_waited) ttl_wait_time
from v$active_session_history active_session_history
where active_session_history.event is not null
group by active_session_history.event
order by 2 desc)
where rownum < 6
/
Top Wait Events Since Instance Startup
col event format a60
select event, total_waits, time_waited
from v$system_event e, v$event_name n
where n.event_id = e.event_id
and n.wait_class !='Idle'
and n.wait_class = (select wait_class from v$session_wait_class
where wait_class !='Idle'
group by wait_class having
sum(time_waited) = (select max(sum(time_waited)) from v$session_wait_class
where wait_class !='Idle'
group by (wait_class)))
order by 3;
Oracle DBA scripts: Active Session History Queries
-- TOP events
select event,
sum(wait_time +time_waited) ttl_wait_time
from v$active_session_history
where sample_time between sysdate - 60/2880 and sysdate
group by event
order by 2
-- Top sessions
select sesion.sid,
sesion.username,
sum(ash.wait_time + ash.time_waited)/1000000/60 ttl_wait_time_in_minutes
from v$active_session_history ash, v$session sesion
where sample_time between sysdate - 60/2880 and sysdate
and ash.session_id = sesion.sid
group by sesion.sid, sesion.username
order by 3 desc
--Top queries
SELECT active_session_history.user_id,
dba_users.username,
sqlarea.sql_text,
SUM(active_session_history.wait_time +
active_session_history.time_waited)/1000000 ttl_wait_time_in_seconds
FROM v$active_session_history active_session_history,
v$sqlarea sqlarea,
dba_users
WHERE active_session_history.sample_time BETWEEN SYSDATE - 1 AND SYSDATE
AND active_session_history.sql_id = sqlarea.sql_id
AND active_session_history.user_id = dba_users.user_id
and dba_users.username <>'SYS'
GROUP BY active_session_history.user_id,sqlarea.sql_text, dba_users.username
ORDER BY 4 DESC
-- Top segments
SELECT dba_objects.object_name,
dba_objects.object_type,
active_session_history.event,
SUM(active_session_history.wait_time +
active_session_history.time_waited) ttl_wait_time
FROM v$active_session_history active_session_history,
dba_objects
WHERE active_session_history.sample_time BETWEEN SYSDATE - 1 AND SYSDATE
AND active_session_history.current_obj# = dba_objects.object_id
GROUP BY dba_objects.object_name, dba_objects.object_type, active_session_history.event
ORDER BY 4 DESC
-- Most IO
SELECT sql_id, COUNT(*)
FROM gv$active_session_history ash, gv$event_name evt
WHERE ash.sample_time > SYSDATE - 1/24
AND ash.session_state = 'WAITING'
AND ash.event_id = evt.event_id
AND evt.wait_class = 'User I/O'
GROUP BY sql_id
ORDER BY COUNT(*) DESC;
SELECT * FROM TABLE(dbms_xplan.display_cursor('&SQL_ID));
-- Top 10 CPU consumers in last 60 minutes
select * from
(
select session_id, session_serial#, count(*)
from v$active_session_history
where session_state= 'ON CPU' and
sample_time > sysdate - interval '60' minute
group by session_id, session_serial#
order by count(*) desc
)
where rownum <= 10;
-- Top 10 waiting sessions in last 60 minutes
select * from
(
select session_id, session_serial#,count(*)
from v$active_session_history
where session_state='WAITING' and
sample_time > sysdate - interval '60' minute
group by session_id, session_serial#
order by count(*) desc
)
where rownum <= 10;
-- Find session detail of top sid by passing sid
select serial#,
username,
osuser,
machine,
program,
resource_consumer_group,
client_info
from v$session where sid=&sid;
-- Find different sql_ids of queries executed in above top session by-passing sid
select distinct sql_id, session_serial# from v$active_session_history
where sample_time > sysdate - interval '60' minute
and session_id=&sid
--Find full sqltext (CLOB) of above sql
select sql_fulltext from v$sql where sql_id='&sql_id'
--find session wait history of above found top sessionselect * from v$session_wait_history where sid=&sid
--find all wait events for above top session
select event, total_waits, time_waited/100/60 time_waited_minutes,
average_wait*10 aw_ms, max_wait/100 max_wait_seconds
from v$session_event
where sid=&sid
order by 5 desc
--session statistics for above particular top session :
select s.sid,s.username,st.name,se.value
from v$session s, v$sesstat se, v$statname st
where s.sid=se.SID and se.STATISTIC#=st.STATISTIC#
--and st.name ='CPU used by this session'
--and s.username='&USERNAME'
and s.sid='&SID'
order by s.sid,se.value desc
select event,
sum(wait_time +time_waited) ttl_wait_time
from v$active_session_history
where sample_time between sysdate - 60/2880 and sysdate
group by event
order by 2
-- Top sessions
select sesion.sid,
sesion.username,
sum(ash.wait_time + ash.time_waited)/1000000/60 ttl_wait_time_in_minutes
from v$active_session_history ash, v$session sesion
where sample_time between sysdate - 60/2880 and sysdate
and ash.session_id = sesion.sid
group by sesion.sid, sesion.username
order by 3 desc
--Top queries
SELECT active_session_history.user_id,
dba_users.username,
sqlarea.sql_text,
SUM(active_session_history.wait_time +
active_session_history.time_waited)/1000000 ttl_wait_time_in_seconds
FROM v$active_session_history active_session_history,
v$sqlarea sqlarea,
dba_users
WHERE active_session_history.sample_time BETWEEN SYSDATE - 1 AND SYSDATE
AND active_session_history.sql_id = sqlarea.sql_id
AND active_session_history.user_id = dba_users.user_id
and dba_users.username <>'SYS'
GROUP BY active_session_history.user_id,sqlarea.sql_text, dba_users.username
ORDER BY 4 DESC
-- Top segments
SELECT dba_objects.object_name,
dba_objects.object_type,
active_session_history.event,
SUM(active_session_history.wait_time +
active_session_history.time_waited) ttl_wait_time
FROM v$active_session_history active_session_history,
dba_objects
WHERE active_session_history.sample_time BETWEEN SYSDATE - 1 AND SYSDATE
AND active_session_history.current_obj# = dba_objects.object_id
GROUP BY dba_objects.object_name, dba_objects.object_type, active_session_history.event
ORDER BY 4 DESC
-- Most IO
SELECT sql_id, COUNT(*)
FROM gv$active_session_history ash, gv$event_name evt
WHERE ash.sample_time > SYSDATE - 1/24
AND ash.session_state = 'WAITING'
AND ash.event_id = evt.event_id
AND evt.wait_class = 'User I/O'
GROUP BY sql_id
ORDER BY COUNT(*) DESC;
SELECT * FROM TABLE(dbms_xplan.display_cursor('&SQL_ID));
-- Top 10 CPU consumers in last 60 minutes
select * from
(
select session_id, session_serial#, count(*)
from v$active_session_history
where session_state= 'ON CPU' and
sample_time > sysdate - interval '60' minute
group by session_id, session_serial#
order by count(*) desc
)
where rownum <= 10;
-- Top 10 waiting sessions in last 60 minutes
select * from
(
select session_id, session_serial#,count(*)
from v$active_session_history
where session_state='WAITING' and
sample_time > sysdate - interval '60' minute
group by session_id, session_serial#
order by count(*) desc
)
where rownum <= 10;
-- Find session detail of top sid by passing sid
select serial#,
username,
osuser,
machine,
program,
resource_consumer_group,
client_info
from v$session where sid=&sid;
-- Find different sql_ids of queries executed in above top session by-passing sid
select distinct sql_id, session_serial# from v$active_session_history
where sample_time > sysdate - interval '60' minute
and session_id=&sid
--Find full sqltext (CLOB) of above sql
select sql_fulltext from v$sql where sql_id='&sql_id'
--find session wait history of above found top sessionselect * from v$session_wait_history where sid=&sid
--find all wait events for above top session
select event, total_waits, time_waited/100/60 time_waited_minutes,
average_wait*10 aw_ms, max_wait/100 max_wait_seconds
from v$session_event
where sid=&sid
order by 5 desc
--session statistics for above particular top session :
select s.sid,s.username,st.name,se.value
from v$session s, v$sesstat se, v$statname st
where s.sid=se.SID and se.STATISTIC#=st.STATISTIC#
--and st.name ='CPU used by this session'
--and s.username='&USERNAME'
and s.sid='&SID'
order by s.sid,se.value desc
| 
Session - Show sessions using
  resources | 
| 
-- Sessionresources.sql 
-- Sesssion - Show sessions using resources 
-- Session stats
  ------------------------------------------------------------------------------------------------------- 
-- v$sess_io: select session io stats 
select osuser,username,b.*,a.program 
from v$session a, v$sess_io b  
where a.sid = b.sid; 
-- show worse phys reads sessions 
select osuser,substr(username,1,15),b.*,a.program 
from v$session a, v$sess_io b  
where a.sid = b.sid  
and b.physical_reads > 1000 
order by physical_reads desc; 
-- show worse phys reads sessions 
select osuser,substr(username,1,15),b.*,a.program 
from v$session a, v$sess_io b  
where a.sid = b.sid  
and b.physical_reads > 1000 
order by physical_reads desc; 
-- SQL statements that consumed the most
  resources in terms of CPU and/or memory 
select substr(osuser,1,20) as osuser, 
       rpad(substr(username,1,12),12,'
  ') as username,  
       substr(terminal,1,25)
  as terminal, 
      
  substr(s.machine,1,30) as machine, 
      
  substr(name,1,22), 
       value 
from v$statname n, 
v$session s, 
v$sesstat t 
where s.sid=t.sid 
and n.statistic# = t.statistic# 
and s.type = 'USER' 
-- and s.osuser = 'user123' 
-- and n.name = 'session pga memory' 
and t.value > &try_more_than_50000 
order by value DESC 
/ 
-- 
Select a.username,  b.Executions,   
  ((b.Disk_Reads + b.Buffer_Gets)
  /  Decode(b.Executions, 0, 1, b.Executions)) Avg_Buffers,  
  b.Disk_Reads, b.Buffer_Gets,
  b.first_load_time  Load_Time,  b.SQL_Text  
From dba_users a, V$SQLArea b  
Where a.user_id = b.parsing_user_id   
And((Disk_Reads + Buffer_Gets) /
  Decode(Executions, 0, 1, Executions)) > 10000   
Or (Executions > 2000 
    And ((Disk_Reads +
  Buffer_Gets) / Decode(Executions, 0, 1, Executions)) > 500)  
Order By ((Disk_Reads + Buffer_Gets) /
  Decode(Executions, 0, 1, Executions)) Desc 
; 
-- Display session stats for a specific sid 
select substr(osuser,1,20) as osuser, 
      
  rpad(substr(username,1,12),12,' ') as username,  
       substr(terminal,1,25)
  as terminal, 
      
  substr(s.machine,1,30) as machine, 
      
  substr(name,1,40), 
       value 
from v$statname n, 
v$session s, 
v$sesstat t 
where s.sid=t.sid 
and n.statistic# = t.statistic# 
and s.sid = 9 
and s.type = 'USER' 
-- and s.osuser = 'user123' 
-- and n.name = 'session pga memory' 
-- and t.value > &try_more_than_50000 
and n.name like '%cursor%' 
order by value DESC 
/ 
You can also pick out the user that has the most
  disk I/Os and trace what statements they are running using the command: 
SELECT ses.sid, ses.serial#, ses.osuser,
  ses.process 
   FROM v$session ses, v$sess_io sio 
  WHERE ses.sid  = sio.sid 
    AND nvl(ses.username,'SYS')
  not in ('SYS', 'SYSTEM') 
    AND sio.physical_reads =
  (SELECT MAX(physical_reads) 
                               
  FROM v$session ses2, v$sess_io sio2 
                              
  WHERE ses2.sid = sio2.sid 
                                
  AND ses2.username  
                                  NOT
  IN ('SYSTEM', 'SYS')); 
SID                    
  SERIAL#            
  OSUSER     PROCESS  
---------------------------------------------------------------- 
41                       
  46              
  corriganp      12818 
List all users and disk i/o: 
set lines 200 
SELECT ses.sid, ses.serial#,
  ses.osuser,substr(ses.username,1,15) as username,  
       
  sio.physical_reads, sio.block_gets, ses.process 
   FROM v$session ses, v$sess_io sio 
        WHERE
  ses.sid  = sio.sid 
    AND nvl(ses.username,'SYS')
  not in ('SYS', 'SYSTEM','DBSNMP') 
        ORDER
  BY sio.physical_reads desc 
; 
      SID  
  SERIAL# OSUSER         
  USERNAME        PHYSICAL_READS BLOCK_GETS
  PROCESS 
--------- --------- ---------------
  --------------- -------------- ---------- --------- 
      
  10        21
  bergeroner     
  ADMIN                 
  10185      13799 429453625 
      
  14       121
  willhaukdo     
  ADMIN                    
  86       1394 429411523 
       9       
  47 alamama        
  ADMIN                    
  10         44 429486258 
      
  16        46
  bergeroner     
  ADMIN                     
  6         35 429460271 
      
  18        44
  taillefede     
  ADMIN                     
  6         69 429080223 
      
  19        63 novickmi       
  ADMIN                     
  0         42 429453523 | 
 
 
No comments:
Post a Comment