Hi,

i wrote a script which uses the connection method you describe like this:

To connect to a local database with a user which has been set-up to
authenticate via the OS ("ALTER USER username IDENTIFIED EXTERNALLY"):
$dbh = DBI->connect('dbi:Oracle:','/','');
Note the lack of a connection name (use the ORACLE_SID environment
variable). 

My tnsnames.ora looks like:
BBA =
  (DESCRIPTION =
   (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = dhcp-144.int.consol.de)(PORT = 1521))
  .....

"tnsping bba" worked fine, but my perl-script (where is set $ENV{ORACLE_SID}
= "bba") always said:

CRITICAL - cannot connect to . ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux Error: 2: No such file or directory (DBD ERROR: OCISessionBegin)

What i didn't know, tnsping seems to try also the upper case, that's why i
blindly set ORACLE_SID also to "bba".

Now, 13 hours later (reading half of the internet, reading process and
network traces), i accidentially typed the ORACLE_SID in upper case and it
worked. 

In order to save other people from spending hours in desperation, i propose
to add a warning message on the cpan webpage:

The ORACLE_SID is case sensitive, use the exact copy of the value from
tnsnames.ora!

Greetings from Munich,
Gerhard

Reply via email to