Following SQL using information from LAST_CALL_ET:
If the session STATUS is currently INACTIVE, then the value represents the elapsed time in seconds since the session has become inactive.
as following:
select s.* --select 'ALTER SYSTEM KILL SESSION ''' || s.sid || ',' || s.serial# || ''' IMMEDIATE;' kill_serial_sid from ( SELECT s.sid,s.serial#,s.username ,s.status ,substr(s.machine,1,10) ,s.osuser,s.module ,to_char(logon_time, 'mm/dd/yy hh24:mi:ss') logon_time -- idle time ,to_dsinterval( -- days separately substr('0'||trunc(last_call_et/86400),-2,2) || ' ' || -- hours substr('0'||trunc(mod(last_call_et,86400)/3600),-2,2) || ':' || -- minutes substr('0'||trunc(mod(mod(last_call_et,86400),3600)/60),-2,2) || ':' || --seconds substr('0'||mod(mod(mod(last_call_et,86400),3600),60),-2,2) ) idle_time FROM v$session s, v$process p WHERE s.username IS NOT NULL -- use outer join to show sniped sessions in -- v$session that don''t have an OS process AND p.addr(+) = s.paddr ) s where 1 = 1 and s.status = 'INACTIVE' and s.idle_time >= to_dsinterval('1 00:00:00') ORDER BY idle_time desc;Note: LAST_CALL_ET - If the session STATUS is currently ACTIVE, then the value represents the elapsed time in seconds since the session has become active.
If the session STATUS is currently INACTIVE, then the value represents the elapsed time in seconds since the session has become inactive.
Search Idle Sessions using filter in Enterprise Manager
You can specify search criteria using WHERE clauseas following:
1 = 1 and username IS NOT NULL and status = 'INACTIVE' and to_dsinterval( -- days separately substr('0'||trunc(last_call_et/86400),-2,2) || ' ' || -- hours substr('0'||trunc(mod(last_call_et,86400)/3600),-2,2) || ':' || -- minutes substr('0'||trunc(mod(mod(last_call_et,86400),3600)/60),-2,2) || ':' || --seconds substr('0'||mod(mod(mod(last_call_et,86400),3600),60),-2,2) ) >= to_dsinterval('1 00:00:00')