Thursday 15 December 2011

What does 'SNIPED' status in v$session mean? . How it is getting created?.


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.  
Try this:

In SQLNET.ORA set the line:

SQLNET.EXPIRE_TIME = 20

Every 20 minutes this will try to clean the connections.

My Real-time Practice : To know how the snipped sessions got created
=======================================================

SQL> create user dba1 identified by abc123  profile TEMP;

User created.


SQL> alter system set resource_limit=true scope=memory;

System altered.

SQL>  alter profile temp limit idle_time 2;

Profile altered.


SQL> select USERNAME,ACCOUNT_STATUS,PROFILE  from dba_users  where PROFILE='TEMP';

USERNAME           ACCOUNT_STATUS   PROFILE
------------------------------ --------------------------------
DBA1                           OPEN                             TEMP


SQL> ! date
Fri Sep 17 17:04:07 BST 2010

SQL> select status from v$session where username ='DBA1';

STATUS
--------
INACTIVE

SQL> ! date
Fri Sep 17 17:06:33 BST 2010

SQL>  select status from v$session where username ='DBA1';

STATUS
--------
INACTIVE

SQL> ! date
Fri Sep 17 17:06:33 BST 2010

SQL> select status from v$session where username ='DBA1';

STATUS
--------
SNIPED

No comments:

Post a Comment