Ich bin mir nicht sicher, ob es hilft, aber Folgendes hat bei mir funktioniert:
UM sich lokal mit tnsnames.ora (im Verzeichnis $ORACLE_HOME/network/admin) zu verbinden:
my $db = DBI->connect( "dbi:Oracle:mydatabase", "scott", "tiger" );
und um sich nicht mit tnsnames.ora zu verbinden:
my $db = DBI->connect("dbi:Oracle:host=$host;sid=$sid;port=1521",$user,$passwd)
|| die( $DBI::errstr . "\n" );
wobei $host, $sid vorher definiert werden müssen.