On 29/10/09 09:15, jeff wrote:
Asked a question yesterday but I don't think I worded it very well so
heres another try.

I want to do an 'external connection' (i.e., No user or password
supplied in DBI->connect ) from a single script to multiple versions of
Oracle ( Oracle 8 & 10 ).

What I have found so far is that Oracle.pm built againt the 10 client
works great with the wallet (No user or password supplied in
DBI->connect ) but will not connect to 8 without a username/password.

Oracle.pm built against 8 works great with Oracle 8 when doing an
'external connection' (i.e., No user or password supplied in
DBI->connect ) but will not connect to 10 without a username/password.

Each version of Oracle uses a different mechanism to do an 'external
connect' and they seem to have opted for NO backward compatibility in
this regard.

Executive summary: It can't be done in this way at all.
You have to user two different processes. Try DBD::Gofer.

Longer explanation:

The connection between an Oracle client and an Oracle server is
via an 'adapter'. Most adapters are network based. One, in
particular, is not. It is called the 'bequeather', or BEQ.

The bequeather can be used only when the client is on the same
computer as the server. To use the bequeather, set ORACLE_SID
and ORACLE_HOME, unset TWO_TASK, and do not pass a connect
string with the login credentials.

The bequeather is only designed to work when the client and server
are using the *same* ORACLE_HOME. It is not a matter of versions.
Even if you have two ORACLE_HOMEs of the same version, you have
to use the one which the server runs from.

External authentication can be used only in conjunction with
bequeather connections. An 'identified externally' user can
log in without providing either a username or a password, provided
the Oracle username is equal to the concatenation of the
os_authent_prefix parameter and the OS username. In your
case, where the os_authent_prefix is null this means
the two usernames must be equal.

Users 'identified externally' do not have passwords, and
can this only log in from the same computer as the server.

This is all very convenient until you want to use databases
of different versions at once

Is simply isn't possible to user two ORACLE_HOMEs at once
in a single process. Clashing linker names in the libraries
will cause segfaults etc..

You have to find a way of establishing your two connections
in different processes.

--
Charles Jardine - Computing Service, University of Cambridge
c...@cam.ac.uk    Tel: +44 1223 334506, Fax: +44 1223 334679

Reply via email to