Hello, I'm hoping someone can explain why one of these connect
statements work and the other doesn't.
The script sets environment values as such:
$ENV{ORACLE_HOME} = "/usr/oracle/product/8.1.7_64";
$ENV{ORACLE_SID} = $db_alias;    #$db_alias passed to script via
$ARGV[1]
my $dbh;
if ($method =~ /2/) { # $method passed to script via $ARGV[2]
    #this works
    $dbh = DBI->connect('', "scott/tiger", '', 'Oracle')      
           or die "Connect failed: $DBI::errstr\n";
}else{ #this doesn't
    $dbh = DBI->connect("dbi:Oracle:$db_alias",'scott','tiger')
               or die "Connect failed: $DBI::errstr\n";
}
The error I'm getting on the latter case is: DBI->connect(mp3i) failed:
ORA-12154: TNS:could not resolve service name (DBD ERROR:
OCIServerAttach) at ./OraConn3.pl line 49
Connect failed: ORA-12154: TNS:could not resolve service name (DBD
ERROR: OCIServerAttach)

Does this imply that the first case does not use TNS service names?  
The DBI docs state: "There is no standard for the text following the
driver name. Each driver is free to use whatever syntax it wants. The
only requirement the DBI makes is that all the information is supplied
in a single string. You must consult the documentation for the drivers
you are using for a description of the syntax they require."  The
DBD::Oracle doc doesn't go into detail on the variations and what they
imply.
Can anyone provide some insight?  

The issue I'm really trying to address is that both connection
variations work on an HP/UX 11.00 server, perl version: 5.006001, DBI
(version 1.20), DBD::Oracle (version 1.12); but on an HP/UX 11.11 server
with the same perl and oracle libraries/versions only the first
variation works.  I'm trying to determine why and suggest a resolution.
BTW, I'm a lowly programmer (aka: hacker); I'm not the DBA or the server
sysadmin and the DBA doesn't know perl.

Thanks in advance.
Paula   

Reply via email to