OID Dynamic Discovery

  • From: Jared Still <jkstill@xxxxxxxxx>
  • To: Oracle-L Freelists <oracle-l@xxxxxxxxxxxxx>
  • Date: Wed, 18 Mar 2009 16:40:06 -0700

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

Other related posts: