proposal for DBD::Oracle documentation

"Gerhard Lausser" <[email protected]>
Newsgroups gmane.comp.lang.perl.modules.dbi.sybase.devel
Message-ID <[email protected]>
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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.