Perl 5.22.1 install seems to not install DBD::Oracle (Oracle.pm missing)

Posted by rockymtn on 2016-01-25 14:52

Recently installed ActivePerl-5.22.1.2201-MSWin32-x86-64int-299574.msi

PPM shows DBD::Oracle installed to perl area as version 1.74, which is latest available, but I get errors when running my former programs that:
>>Can't locate DBD/Oracle.pm in @INC (you may need to install the DBD::Oracle module) (@INC
>>contains: ... C:/Perl/site/lib C:/Perl/lib .) at \\vie ...

There are many other DBD packages under C:\Perl\lib\DBD, but no Oracle.pm

The workaround is to use PPM to reinstall DBD::Oracle, which will put a copy in
C:\Perl\site\lib\DBD.
PPM will show a 'perl' and a 'site' area DBD::Oracle, but the perl area still has none - but that's ok; it works.

I didn't have this issue with prior version, notably 5.20.2 was the last I installed. Maybe I missed something or something changed on my system? I had been trying to install the 64-bit versions and had run-time errors about unable to win32 Oracle.dll, but did a clean uninstall of both 64 and 32 to see if that helped and still have this problem. (32-bit version).

Any ideas?

David

grahams
ActiveState Staff
Wed, 2016-01-27 12:42

This looks like a possible build bug. I've filed a report to get dev to take a look.

rockymtn | Wed, 2016-01-27 13:32

Thank you

grahams
ActiveState Staff
Thu, 2016-03-03 09:18

It was a compatibility issue with using the 12c client on 32-bit Windows.

The PPM version of the module will install correctly.

rockymtn | Thu, 2016-03-03 12:17

I'm running the 11g client. Do you mean the Perl install is trying to install something only compatible with 12c?

David

No
grahams
ActiveState Staff
Mon, 2016-03-14 10:22

A DBD-Oracle built with the 12c InstaClient would be compatible with 11g (Oracle supports one version back, and one version forward).

What I mean is that the Oracle 12c InstaClient itself is not compatible with 32-bit Windows. We had to back out the 12c InstaClient upgrade on the 32 bit Windows Perl build platforms. PPM was unaffected because we had not yet deployed the 12c InstaClient upgrade to those servers.

nagarajugs | Mon, 2016-03-14 06:27

Hi All,

I have the same problem. Can any one suggest me a possible solution. I am using ActivePerl along with ora2pg tool to connect to the Oracle database to migrate it to PostgreSQL database.

I am really struck here. A quick reply would really help me.

Thanks in advance.

Regards
Nagaraju

rockymtn | Mon, 2016-03-14 09:22

The workaround is to use PPM to reinstall DBD::Oracle, which will put a copy in
C:\Perl\site\lib\DBD.

If you have the same problem, this should fix it. Otherwise you'll need to dig deeper to find out your root cause.

-David

rockymtn | Mon, 2016-03-14 12:13

Thank you for clarifying that. So what version of Oracle client do you expect the next 32-bit Perl version to be compiled against? Will it remain 11g compatible for awhile?
Sincerely,
David

grahams
ActiveState Staff
Mon, 2016-03-21 09:05

It will be platform by platform and dependent on Perl Version, unfortunately.

Where possible, 12c InstaClients will be used because they are the way forward.

The key is "where possible":

-Win32 can't go higher than 11g, unless Oracle releases a different InstaClient for Win32.

-Linux32 and Linux64 have been pinned at 10g for years, and will stay there until we drop support for old (2.4 - 2.6) kernels in PPM. We've made some steps in that direction with newer ActivePerls, but there's a lot of push-back since RHEL 5 will be supported for quite a while yet.