Re: DCD dead connection detection in 12c

From: Riyaj Shamsudeen <riyaj.shamsudeen_at_gmail.com>
Date: Thu, 14 Aug 2014 09:43:37 -0700
Message-ID: <CAA2DszwdUK7K75mSLDZXsUBOCYFLFKsaQLuTy-bucW5qesi-9w_at_mail.gmail.com>



Hello April,

   Since you have set the sqlnet.expire_time to 10 minutes, every 10 minutes a TCP/IP packet is sent to that client port. If a TCP ACK is received in a short interval, then both tcp_keepalive and SQLNET timers are reset. If the TCP ACK is not received , then TCP retransmission code kicks in, TCP packet is retransmitted tcp_retries2 (15 default) times with an exponential back off controlled by tcp retransmission interval.

   So, in your case, tcp shouldn't kill the connection in 2 hours at all, from the host side. However, I have seen port level timeouts in the switch/firewall configurations that is kept at 2 hours normally. Check with network group to see if that is happening.

   Also conduct this test:

  1. create a sqlplus connection from that client machine connecting to the database.
  2. Identify the dedicated server process for that connection. Strace the dedicated server process: strace -tttT -o /tmp/dcd.lst -p <pid>
  3. Just keep the sqlplus connection idle during this period. not even an enter. Reading the /tmp/dcd.lst file, you should see packets every 10 minutes. If it dies after 2 hours, then check with firewall/network group.

  Hope this helps,

Cheers

Riyaj Shamsudeen
Principal DBA,
Ora!nternals - http://www.orainternals.com - Specialists in Performance, RAC and EBS
Blog: http://orainternals.wordpress.com/ Oracle ACE Director and OakTable member <http://www.oaktable.com/>

Co-author of the books: Expert Oracle Practices <http://tinyurl.com/book-expert-oracle-practices/>, Pro Oracle SQL, <http://tinyurl.com/ahpvms8> <http://tinyurl.com/ahpvms8>Expert RAC Practices 12c. <http://tinyurl.com/expert-rac-12c> Expert PL/SQL practices <http://tinyurl.com/book-expert-plsql-practices>

<http://tinyurl.com/book-expert-plsql-practices>

On Thu, Aug 14, 2014 at 7:30 AM, April Sims <aprilcsims_at_gmail.com> 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
>

--
http://www.freelists.org/webpage/oracle-l
Received on Thu Aug 14 2014 - 18:43:37 CEST

Original text of this message