Getting cpan's Oracle DBD to work properly on i386 is proving a bit tricky

Simon Matthews spm at flirble.org
Tue Aug 23 10:20:54 BST 2011


* Chris Benson (chrisb at ccandc.org) [110822 21:29]:
> On Mon, Aug 22, 2011 at 05:17:07PM +0100, Paul Branon wrote:
> > Hi Guys,
> > 
> > Does anyone know where I can get help getting oracle DBD to work? I'm on
> > Intel Solaris 10
> > and Oracle comes with an AMD64 binary. It runs fine on my system. I can
> > connect to oracle
> > with no problems at all. Then I install oracle DBD which installs just fine
> > But when I try to
> > connect to the database I get wrong ELF class. Because libclntsh.so.10.1 is
> > a 32 bit binary.
> 
> Uhm for my sins, I've got:
> root at selfservice:/usr/local # uname -a
> SunOS selfservice 5.10 Generic_142901-07 i86pc i386 i86pc
> oot at selfservice:/usr/local # file /usr/local/oracle/product/instantclient_10_2/libclntsh.so.10.1 
> /usr/local/oracle/product/instantclient_10_2/libclntsh.so.10.1: ELF 32-bit LSB dynamic lib 80386 Version 1, dynamically linked, not stripped
> root at selfservice:/usr/local #
>  
> ... and I think what makes it possible:
> root at selfservice:/usr/local # file /usr/local/bin/perl
> /usr/local/bin/perl:    ELF 32-bit LSB executable 80386 Version 1 [FPU], dynamically linked, not stripped, no debugging information available
> root at selfservice:/usr/local # 
> 
> Which was either from sunfreeware.com or locally built.
> 
> On some SPARC systems where there's a full 64bit Oracle installed, I've
> resorted to ensuring that I've set
> 	ORACLE_HOME=/export/home/oracle1020/product/1020/client_1/
> 	LD_LIBRARY_PATH=$ORACLE_HOME/lib32
> 	export ORACLE_HOME LD_LIBRARY_PATH
> before starting or where I can't/don't trust the environment to:
> BEGIN {
>   # needs to before loading the DB modules
>   $ENV{ORACLE_HOME} ||= '/export/home/oracle1020/product/1020/client_1';
>   # LD_LIBRARY_PATH needed because we're on a 64bit Oracle now
>   $ENV{LD_LIBRARY_PATH} ||= "$ENV{ORACLE_HOME}/lib32:$ENV{ORACLE_HOME}/network/lib32";
> }
> But again this is with a 32-bit Perl.
> # file /usr/local/bin/perl
> /usr/local/bin/perl:    ELF 32-bit MSB executable SPARC Version 1, dynamically linked, not stripped
> 
> > I guess what I need is literally the answer.
> 
> Install a 32-bit Perl has been my solution.  I'll need to look at
> this again soon for the next technology refresh though :-/  
> 
> I'm hoping it won't be as irritating on RHEL/OUL, but my first attempts
> to setup an application server for Oracle 11g ended up rebuilding the
> whole system as 32-bit because the application vendor had linked their
> app against a 32-bit libclntsh and 32-bit Oracle 11g won't install on a 
> 64-bit o/s ...
> 

Looking at http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html,
Oracle provides Solaris x86 and Solaris x86-64 builds of the
instant client.

> HTH
> -- 
> Chris Benson

Simon Matthews


More information about the london.pm mailing list