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.
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