Just a wrap up for those that are going to fall prey to this gremlin.

I took over the issue from the SA and removed DBI and DBD from the @inc
paths and then reinstalled them initially it didn't work
As it turned out these DBD files had been installed on a dual core
server and there was some files that had something in then that worked
on a dual core but wont work on a quad core

Resolution run make clean on DBD, and install.
End result we have removed the installed DBI rpm and installed the
latest DBI from CPAN, and then we installed the latest DBD::Oracle from
CPAN.

Seems there is a gremlin that means peoples out there, you may need dual
core rpm's and quad core rpm's. Now that sounds like fun.
Hopefully this will help someone


Cheers


Peter



-----Original Message-----
From: Tim Bunce [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, 10 October 2007 07:34 PM
To: Peter McLarty
Cc: Tim Bunce; Martin Evans; dbi-users@perl.org
Subject: Re: DBI and DBD::Oracle throw error Had to create
DBD::Oracle::dr::imp_data_size unexpectedly

On Wed, Oct 10, 2007 at 05:22:08PM +1000, Peter McLarty wrote:
> Hello,
> 
> Well I have had to wait for the sysadmins to do this, but we have done

> as you recommended and removed all the dbd and then tried doing a make

> on the system of the dbd to build a new one.
> It has errors relating to the same problem, but we pressed on and 
> installed anyway Here is a trace, from an attempt to connect
> 
>  perl -MDBI -e 'DBI->trace(4); DBI->connect("dbi:Oracle:CS89PROD",
"/","",{ora_session_mode => 2, RaiseError  => 1});'
>     DBI 1.40-ithread dispatch trace level set to 4 (in pid 18625)
>     Note: perl is running without the recommended perl -w option
>     -> DBI->connect(dbi:Oracle:CS89PROD, /, ****, HASH(0x505290))
>     -> DBI->install_driver(Oracle) for linux perl=5.008005 pid=18625
ruid=500 euid=500
>        install_driver: DBD::Oracle version 1.19 loaded from
/usr/lib64/perl5/site_perl/5.8.5/x86_64-linux-thread-multi/DBD/Oracle.pm
>     New DBI::dr (for DBD::Oracle::dr, parent=, id=)
>     dbih_setup_handle(DBI::dr=HASH(0x698190)=>DBI::dr=HASH(0x7809e0), 
> DBD::Oracle::dr, 0, Null!) Had to create
DBD::Oracle::dr::imp_data_size unexpectedly at
/usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi/DBI.pm line
1063.
>     dbih_make_com(Null!, 0, DBD::Oracle::dr, 196, 0) thr#504010

> Had to create DBD::Oracle::db::imp_data_size unexpectedly at
/usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi/DBI.pm line
1063.

> Undefined subroutine &DBD::Oracle::db::_login called at
/usr/lib64/perl5/site_perl/5.8.5/x86_64-linux-thread-multi/DBD/Oracle.pm
line 222.

These warnings and errors are symptoms of the DBD/Oracle.so file either
not being loaded or the wrong one being loaded.

> Interestingly the ORACLE_HOME that the database we are trying to 
> connect to appears to have 32 bit Perl installed and the same one 
> liner runs fine in it
> 
> If you can point me as to how we get down to finding the files, 
> permissions that cause the error it would be appreciated

Start by setting the PERL_DL_DEBUG env var to 1 and rerun the command.
It'll show you which DBD/Oracle.so file is being loaded.

Also try running

    perl -Mblib -MDBI -e ...

in the DBD::Oracle build directory, also with the PERL_DL_DEBUG env var
to 1.

Tim.

> -----Original Message-----
> From: Tim Bunce [mailto:[EMAIL PROTECTED]
> Sent: Friday, 5 October 2007 06:46 PM
> To: Martin Evans
> Cc: dbi-users@perl.org
> Subject: Re: DBI and DBD::Oracle throw error Had to create 
> DBD::Oracle::dr::imp_data_size unexpectedly
> 
> On Fri, Oct 05, 2007 at 09:07:48AM +0100, Martin Evans wrote:
> > Peter McLarty wrote:
> > >Hi
> > >Running some redhat servers and created some scripts that use DBI 
> > >and
> 
> > >DBD::Oracle to access our 10.2.0.3 databases.
> > >The script was built and tested and has been used successfully on 
> > >dual core 64bit Xeon CPU servers and with as best as we can tell an

> > >identical installation on some new quad core servers the script 
> > >fails
> 
> > >with the above error.
> > >
> > >We have tried a later version of DBI we were using the 1.40 version

> > >installed as a RPM and have installed 1.59 using perl and make.
> > >
> > >DBD::Oracle is 1.19
> > >
> > >I have some strace output from where it fails running a simple 
> > >piece of code that simply connects the the system as / and runs 
> > >select * from dual as well as then would do a couple of log 
> > >switches
> > 
> > It may be easier to diagnose with a DBI trace instead of an strace 
> > (see DBI_TRACE in DBI pod). In particular what are the full errors
> here:
> > 
> > write(2, "Had to create DBD::Oracle::dr::i"..., 140) = 140 write(2, 
> > "Use of uninitialized value in su"..., 129) = 129
> > brk(0x925000)                           = 0x925000
> > write(2, "Had to create DBD::Oracle::db::i"..., 140) = 140 write(2, 
> > "Use of uninitialized value in su"..., 129) = 129 write(2, 
> > "Undefined subroutine &DBD::Oracl"..., 139) = 139
> 
> The problem will be some kind of mismatch between the Oracle.pm and 
> Oracle.so (.sl / .whatever extension your shared libraries have).
> 
> I suggest you carefully find and remove all traces of DBD::Oracle and 
> reinstall it. (Mainly delete all files under all perl @INC dirs that 
> match DBD/Oracle.*)
> 
> If you still have problems after that then post a one liner that 
> demonstrates the problem:
> 
>     perl -MDBI -e 'DBI->connect("...", ...)'
> 
> and we'll talk you through getting more info to diagnose the problem.
> 
> Tim.

Reply via email to