OID Dynamic Discovery

From: Jared Still <jkstill_at_gmail.com>
Date: Wed, 18 Mar 2009 16:40:06 -0700
Message-ID: <bf46380903181640t13bbd113o9ea14d359ffebad2_at_mail.gmail.com>



Is anyone successfully using OID Dynamic Discovery?

Here's why I ask.

I have setup the SRV DNS record that allows this to work: http://download.oracle.com/docs/cd/B28196_01/idmanage.1014/b15991/server.htm#i1053850

The purpose of this is to allow installing Oracle without configuring sqlnet.ora or ldap.ora
to find the OID server for resolving database names.

It works almost as advertised.

Linux:
/etc/resolv.conf must include a 'domain line'

Windows:
I haven't been able to get it to work without setting the ORA_LDAP_DNS environment variable
to the IP of our DNS server.

But, even when it works, it is unusable.

When doing a tnsping using and ldap.ora file, the lookup is consistently very fast

When using dynamic discovery, the lookup is consistently slow, but by varying amounts.

The few tests I ran anywhere from 1.5 - 5.5 seconds. Normally this is .1 or less seconds.

Running strace -tt -o oid_tnsping_with_auto_discovery_4.trc tnsping ORCL revealed the problem (this occurs on both linux and windows, though I have no way to trace windows)

Notice that socket # 6 is opened, then waited on for 5 seconds with a nanosleep call.
Then the socket is closed, and everything proceeds normally.

13:30:39.207371 socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 6 13:30:39.207470 sendto(6,
"\0\1\1\0\0\1\0\0\0\0\0\0\6_ldaps\4_tcp\7radisys"..., 41, 0,
{sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("10.1.100.50")}, 16) = 41
13:30:39.207594 select(7, [6], NULL, NULL, {4, 0}) = 1 (in [6], left {4, 0}) 13:30:39.207798 recvfrom(6,
"\0\1\205\200\0\1\0\0\0\1\0\0\6_ldaps\4_tcp\7radisys"..., 512, 0, NULL,
NULL) = 106
13:30:39.207923 sendto(6,
"\0\2\1\0\0\1\0\0\0\0\0\0\6_ldaps\4_tcp\7radisys"..., 41, 0,
{sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("10.1.100.51")}, 16) = 41
13:30:39.208053 select(7, [6], NULL, NULL, {4, 0}) = 1 (in [6], left {4, 0}) 13:30:39.208237 recvfrom(6,
"\0\2\205\200\0\1\0\0\0\1\0\0\6_ldaps\4_tcp\7radisys"..., 512, 0, NULL,
NULL) = 106

13:30:39.208347 rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
13:30:39.208428 rt_sigaction(SIGCHLD, NULL, {SIG_DFL}, 8) = 0
13:30:39.208499 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
*13:30:39.208560 nanosleep({5, 0}, {5, 0}) = 0* 13:30:44.211217 close(6)

This happens only when dynamic discovery is used.

Imagine trying to use this with an app server that makes several connections a second.

Has anyone else seen this?

Or know if it is a bug, has a patch, etc?

I do have an SR open on this issue, but thought I might find someone else here that has seen it.

Jared Still
Certifiable Oracle DBA and Part Time Perl Evangelist

--
http://www.freelists.org/webpage/oracle-l
Received on Wed Mar 18 2009 - 18:40:06 CDT

Original text of this message