What does 'SNIPED' status in v$session mean?
When IDLE_TIME is set in the users' profiles or the default profile. This will kill the sessions in the database (status in v$session now becomes SNIPED) and they will eventually disconnect. It does not always clean up the Unix session (LOCAL=NO sessions). At this time all oracle resources are released but the shadow processes remains and OS resources are not released. This shadow process is still counted towards the parameters of init.ora.
This process is killed and entry from v$session is released only when user again tries to do something. Another way of forcing disconnect (if your users come in via SQL*Net) is to put the file sqlnet.ora on every client machine and include the parameter "SQLNET.EXPIRE_TIME" in it to force the close of the SQL*Net session.
Oracle has several ways to disconnect inactive or idle sessions, both from within SQL*Plus via resources profiles (connect_time, idle_time), and with the SQL*net expire time parameter. Here are two ways to disconnect an idle session:
Set the idle_time parameter in the user profile
Set the sqlnet.ora parameter expire_time.
Here is an alter/create profile command to set the idle_time to 1,800 seconds, at which time the session will be marked as sniped:
alter profile senior_claim_analyst limit
idle_time 1800;
A sniped session is marked for eventual killing by the PMON background process, but in the meantime, the sniped session still exists as a Oracle session and for dedicated sessions (non shared servers), a sniped session has an OS PID that can be seen with a "ps –ef|grep" command.
You can use scripts to killed sniped sessions by nuking the Oracle session with akill session and nuking the OS PID.
There are also enhanced ways to kill a sniped session starting in Oracle 11g.
This v$session query will show details for all sniped sessions:
select
a.sid,
a.serial#,
b.sql_text
from
v$session a,
v$sqlarea b
where
a.sql_address=b.address
and
a.status= 'SNIPED';