PROBLEM:
The application is unable to connect to the database after it was idle for a long time.
Error ORA-02396: exceeded maximum idle time, please connect again was logged in the application log.
SOLUTION:
First, you need to identify, with which user, the application is connecting to the database. Let’s say the user is SIEBEL.
Now find the value of the IDLE_TIME resource limit set in the profile of that user(SIEBEL)
select a.username,b.profile,b.RESOURCE_NAME,b.LIMIT from dba_users a, dba_profiles b where b.resource_name='IDLE_TIME' and a.profile=b.profile and a.username='&USERNAME'; USERNAME PROFILE RESOURCE_NAME LIMIT ------------- -------------- -------------------------------- -------------- SIEBEL DEFAULT IDLE_TIME 128000
Here the idle_time is set to 12800 minutes. So if the session is idle for this much time, then it will be disconnected with the error,
Error ORA-02396: exceeded maximum idle time, please connect again was logged in the application log.
To fix this, alter the profile with the IDLE_TIME set to a higher value or UNLIMITED.
ALTER PROFILE DEFAULT LIMIT IDLE_TIME UNLIMITED;
select a.username,b.profile,b.RESOURCE_NAME,b.LIMIT from dba_users a, dba_profiles b where b.resource_name='IDLE_TIME' and a.profile=b.profile and a.username='&USERNAME'; USERNAME PROFILE RESOURCE_NAME LIMIT ------------- -------------- -------------------------------- -------------- SIEBEL DEFAULT IDLE_TIME UNLIMITED
Hello,
small correction:
In the example the idle_time is set to 12800 minutes, not seconds
From the Oracle doc:
IDLE_TIME Specify the permitted periods of continuous inactive time during a session, expressed in minutes. Long-running queries and other operations are not subject to this limit.
Thanks Oleg, I have corrected that one.