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