Re: DCD dead connection detection in 12c

From: Tim Gorman <tim_at_evdbt.com>
Date: Thu, 14 Aug 2014 09:05:41 -0600
Message-ID: <53ECD045.10302_at_evdbt.com>



April,

The two INBOUND_CONNECT parameters have nothing to do with idle time; they terminate connection attempts taking longer than 120 seconds, which is raised from the default value of 60 seconds. The default is generally more than sufficient; monitor for ORA-3136 errors in the alert.logs to see if they aren't.

The TCP_KEEPALIVE_* settings are saying that any sessions not sending any TCP data packets after 2 hours (7200 secs) will be marked for "keepalive". Subsequently, those sessions will be probed 9 times, 75 seconds apart, after which the process will be killed if there is no activity. So, a session that is idle on the network for 2 hours, 11 minutes, and 15 seconds can be terminated using this mechanism.

This may not be what you intend?

7200 seconds is a long time to wait before beginning "eviction" on a process, especially if it is a disconnected Oracle two-task session. Since it usually takes "root" privilege to run SYSCTL to change kernel parameters, I fear that the kernel TCP_KEEPALIVE parameters might override the SQLNET.EXPIRE_TIME setting?

The MOS note shows how to determine if DCD is working as advertised or not; if not, consider asking the Linux sysadmins to change the TCP_KEEPALIVE kernel settings?

Since you've set SQLNET.EXPIRE_TIME to 10 (minutes), possibly consider setting TCP_KEEPALIVE_TIME to 600, TCP_KEEPALIVE_INTVL to something like 30 and TCP_KEEPALIVE_PROBES to something like 20? That'll start the keepalive mechanism after 10 minutes of network inactivity, killing the process after 20 minutes total.

Hope this helps...

-Tim

On 8/14/14, 8:30, April Sims wrote:
> Need some help in resolving our new idle timeouts seen since going to 12c.
> I have a document
>
> Oracle Net 12c: New Implementation of Dead Connection Detection (DCD)
> (Doc ID 1591874.1)
>
> We are on Linux RH 64-bit so this is applicable.
>
> Our current OS settings look like the following:
>
> # cat /proc/sys/net/ipv4/tcp_keepalive_time
> 7200
>
> # cat /proc/sys/net/ipv4/tcp_keepalive_intvl
> 75
>
> # cat /proc/sys/net/ipv4/tcp_keepalive_probes
> 9
>
>
> sqlnet.ora
> SQLNET.EXPIRE_TIME = 10
>
> SQLNET.INBOUND_CONNECT_TIMEOUT = 120
>
> listener.ora
>
> INBOUND_CONNECT_TIMEOUT_LISTENER_listenername = 120
>
> Any suggestions on the changes I need to make to prevent a 2 hour idle
> timeout?
>
> thanks,
>
>
> --
> April C. Sims
> http://aprilcsims.wordpress.com
> Twitter, LinkedIn
> Oracle Database 11g – Underground Advice for Database Administrators
> https://www.packtpub.com/oracle-11g-database-implementations-guide/book
> OCP 8i, 9i, 10g, 11g DBA
> Southern Utah University
> aprilcsims_at_gmail.com <mailto:aprilcsims_at_gmail.com>

--
http://www.freelists.org/webpage/oracle-l
Received on Thu Aug 14 2014 - 17:05:41 CEST

Original text of this message