http://qs321.pair.com?node_id=316665

fx has asked for the wisdom of the Perl Monks concerning the following question:

The DBD::Oracle documentation states that if your database resides on the same machine as your Perl code, then you can use a local IPC connector rather than TCP. My initial thought to this is that local IPC should be quicker.

The DBD::Oracle docs, however, do not cover Oracle 9i which is what I am using. The connection methods stated in the DBD::Oracle docs produce the error
DBI connect('','user',...) failed: ORA-06401: NETCMN: invalid driver designator (DBD ERROR: OCIServerAttach)
when I try running:

#!/usr/local/bin/perl BEGIN { $ENV{ORACLE_HOME} = '/app/oracle/product/9.0.1'; $ENV{TWO_TASK} = 'P:mydb'; } use DBI; $dbh = DBI->connect('dbi:Oracle:', 'user', 'pass') || die $!; $dbh->do("select 1 from dual"); $dbh->disconnect;

The DBD::Oracle docs suggest running $ORACLE_HOME/bin/adapters to make sure that the IPC adaptor is installed - mine is:

Installed Oracle Net Tranport Protocols are: IPC TCP/IP BEQueath SSL RAW

I did find a reference to a problem of this sort on Usenet but the article doesn't provide much help.

Can someone please suggest how I could connect to Oracle 9i with DBD::Oracle using something other than TCP/IP? If anyone has done this before, does a non-TCP/IP connection improve performance?

As you will be able to tell from my recent posts, I am having quite a lot of difficulty getting Oracle 9i to play nicely with Perl under my circumstances :)

Many thanks,

==fx, Infinity Is Colourless