Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight

Oracle::DBD to 12c server

by jerryhone (Sexton)
on Mar 26, 2020 at 15:46 UTC ( #11114682=perlquestion: print w/replies, xml ) Need Help??

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

We have an old application running on Solaris using Oracle:DBD that happily connects to an Oracle 11g server! $DBD::Oracle::VERSION = '1.14'; When trying to connect to a new 12c server we're encountering ORA-28040: No matching authentication protocol (DBD ERROR: OCISessionBegin) Google implies that we need to change sqlnet.allowed_logon_version on the server, but our DBA tells us that's not possible on our new dataserver setup! So, question is...will a newer version of Oracle::DBD solve our issues, and if so, what version do we need? If not, any other ideas?

Replies are listed 'Best First'.
Re: Oracle::DBD to 12c server
by marto (Cardinal) on Mar 26, 2020 at 16:16 UTC

    Solaris/Oracle victim user here, 12c does allow altering the sqlnet.allowed_login_version, perhaps your DBA doesn't want to do that for security reasons. DBD::Oracle v1.14 is ancient, compile a current release against the Oracle 12c installation.

Re: Oracle::DBD to 12c server
by Tux (Canon) on Mar 29, 2020 at 08:23 UTC

    Additionally (shooting in the dark). With Oracle there are major differences between local and remote databases and the way you connect to them. The most reproducible way of getting a good connection is to use the Oracle Instant Client.

    The most recent version of OIC is 19.6. You require OIC-18 or up to connect to Oracle 12.2 or higher, so if your DBD::Oracle is compiled against old client libraries and you connect to Oracle Server 12.2 or higher, you might be able to connect, but the connection (if you connected) might return weird results.

    You can check your client and server version most likely in a working Oracle environment by just starting sqlplus.

    $ sqlplus scott/tiger SQL*Plus: Release - Production on Sun Mar 29 10:20:11 2020 Version Copyright (c) 1982, 2019, Oracle. All rights reserved. Last Successful login time: Sun Mar 29 2020 10:18:30 +02:00 Connected to: Oracle Database 12c Standard Edition Release - 64bit Produc +tion

    This shows a client version connected to a server version

    Also note that Oracle shows both 12.1 and 12.2 as 12c, and the two are really different!

    So, even with an old(er) perl, check what OIC you are using and if your DBD::Oracle is compiled against that. If you ar not sure, be sure and just recompile from scratch.

    $ wget +80.tar.gz $ tar xzf DBD-Oracle-1.80.tar.gz $ cd DBD-Oracle-1.80 $ perl Makefile.PL $ make $ make test $ make install

    Why like this and not simply use cpan DBD::Oracle? Well, the described process will show you a lot of feedback and might ask you questions. Doing it interactively makes you (more) aware of the pitfalls.

    Enjoy, Have FUN! H.Merijn
Re: Oracle::DBD to 12c server
by Ea (Chaplain) on Mar 28, 2020 at 18:47 UTC
    I'd take the time and effort to recompile. You'll need the oracle client libraries which are the time-consuming part if you have to build them on the box. I did this on a RHEL machine a couple of years back to test out a dev version of 1.75 and it worked fine, once I'd got all the dependencies to build Oracle. No reason not to go with the latest version (currently v1.80)

    Bite the bullet!


    Sometimes I can think of 6 impossible LDAP attributes before breakfast.

    Mojoconf was great!

Re: Oracle::DBD to 12c server
by jerryhone (Sexton) on Apr 01, 2020 at 09:41 UTC
    Thanks all. Living in a corporate locked down environment means everything can be difficult to do...I'm told config can't be changed on server as it's an OraaS database - not sure I believe it...more likely too much red tape! Plan for the moment is to get the database downgraded to 11, and push the problem downstream!

      I also work in a really locked down environment. If they aren't prepared to change a setting are they really going to downgrade a database when all you have to do is rebuild your perl module? A downgrade sounds like much more effort/red tape than just building the perl module against the 12c Oracle client.

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://11114682]
Approved by marto
Front-paged by Corion
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (1)
As of 2023-09-28 23:27 GMT
Find Nodes?
    Voting Booth?

    No recent polls found