These perl apps run against internal databases where all users have writeable access to data from multiple servers and , like it or not, refuse to use a tool where they'd have to enter names/passwords - just not an option.
The only oracle client that will handle the wallet on oracle 10 is the 10 client and it will NOT successfully connect to an 'external' defined user on a remote Oracle 8 server. Again, security be darned, like it or not, thats the just way it is. [ 'If you don't like go work somewhere else' ;-) ] Anyway the solution looks like a DBI::Proxyserver running client 8 and the apps themselves running client 10 - 2 different perl installations. Looks like it will work so far. On Fri, 2009-10-30 at 08:27 -0700, Jared Still wrote: > On Wed, Oct 28, 2009 at 12:38 PM, jeff <j...@roqc.no> wrote: > > I need to talk to both an oracle 8 and oracle 10 server in the > same > script using their respective "external connections" > capabilities (i.e., > no user name or password -- system authentication on 8 & > wallet on > 10 ). > > > I see lots of help offered on solving this problem. > > What I am curious about is why is it a problem? > > Why can you not use a username and password? > > Some may say the answers to that question are obvious, > but that may not be the case. > > > Jared Still > Certifiable Oracle DBA and Part Time Perl Evangelist > Oracle Blog: http://jkstill.blogspot.com > Home Page: http://jaredstill.com > > > Hacked up a version of DBD to get everything renamed from > 'Oracle' to > 'Oracle8' and built against Oracle 8 libs. The other is built > against > Oracle 10 libs. So I've 2 different builds in the same perl > build: > > ./lib/site_perl/5.8.9/i686-linux/DBD/Oracle.pm > ./lib/site_perl/5.8.9/i686-linux/DBD/Oracle8.pm > ./lib/site_perl/5.8.9/i686-linux/auto/DBD/Oracle/Oracle.h > ./lib/site_perl/5.8.9/i686-linux/auto/DBD/Oracle/Oracle.so > ./lib/site_perl/5.8.9/i686-linux/auto/DBD/Oracle/Oracle.bs > ./lib/site_perl/5.8.9/i686-linux/auto/DBD/Oracle8/Oracle8.so > ./lib/site_perl/5.8.9/i686-linux/auto/DBD/Oracle8/Oracle8.bs > ./lib/site_perl/5.8.9/i686-linux/auto/DBD/Oracle8/Oracle8.h > > ( Oracle.pm is oracle 10 & Oracle8.pm is oracle 8 ) > > I'm reading from a single tns_names.ora. > ( SERV2 is Oracle 10 & SERV1 is Oracle 8 ) > ORACLE_HOME is the same each time. > LD_LIBRARY_PATH includes 2 entries - 1 for Oracle 10 lib > directory > and 1 for Oracle 8. > So the environment is the same every time. > > > I can: > -------------------------------------------- > use DBD::Oracle8; > my $db3=DBI->connect("dbi:Oracle8:SERV1",'',''); > -------------------------------------------- > > Or I can: > -------------------------------------------- > use DBD::Oracle; > my $db3=DBI->connect("dbi:Oracle:SERV2",'',''); > -------------------------------------------- > > but: > -------------------------------------------- > use DBD::Oracle8; > use DBD::Oracle; > > my $db3=DBI->connect("dbi:Oracle8:SERV1",'',''); > my $db3=DBI->connect("dbi:Oracle:SERV2",'',''); > -------------------------------------------- > Will make both connections successfully, but exits > with a segmentation fault > > Or if I reverse the connections: > -------------------------------------------- > use DBD::Oracle8; > use DBD::Oracle; > > my $db3=DBI->connect("dbi:Oracle:SERV2",'',''); > my $db3=DBI->connect("dbi:Oracle8:SERV1",'',''); > -------------------------------------------- > first connection succeeds and second fails. > > > Also, these obviously fail because of wrong Oracle version: > -------------------------------------------- > use DBD::Oracle; > my $db3=DBI->connect("dbi:Oracle:SERV1",'',''); > -------------------------------------------- > -------------------------------------------- > use DBD::Oracle8; > my $db3=DBI->connect("dbi:Oracle8:SERV2",'',''); > -------------------------------------------- > > Any ideas as to why? Thanks. > > Jeff > > > > > > > >