|
Posted on Thu Oct 6 14:47:41 2005
by byterock
|
| DBD and Oracle Instantclient 10 |
|
I am looking for volunteers testers for a new version of the Makefile.PL for Oracle Instantclient 10.
You can find it at http://svn.perl.org/modules/dbd-oracle/branches/pythian'
This version has been tested on a Linux box but I would like to see how it performs on other environments.
Any feedback you may have would be very much appreciated.
TXs
|
|
|
Posted on Wed Oct 26 01:16:09 2005
by gantry
in response to 1130
|
| Re: DBD and Oracle Instantclient 10 |
|
I've been having some problem getting DBD::Oracle working with Oracle's instantclient 10g for some time now.
I did try replacing the Makefile.pl that comes in the DBD-Oracle-1.16 with the one located at http://svn.perl.org/modules/dbd-oracle/branches/pythian.
I also have Oracles Instant Client package Basic (instantclient-basic-linux32-10.2.0.1-20050713.zip) and SDK (instantclient-sdk-linux32-10.2.0.1-20050713.zip) installed.
My environment variables are set to
ORACLE_HOME=/usr/lib/oracle/10.2.0.1/client
LD_LIBRARY_PATH=/usr/lib/oracle/10.2.0.1/client/lib
I'm using Red Hat Enterprise Linux AS release 4 (Nahant)
However, there seem to be Oracle Instant Client files missing (see error below)
[toor@bsdbdev DBD-Oracle-1.16]# perl Makefile.PL
Using DBI 1.40 (for perl 5.008005 on i386-linux-thread-multi) installed in /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi/auto/DBI
Configuring DBD::Oracle ...
Remember to actually *READ* the README file!
Especially if you have any problems.
Using Oracle in /usr/lib/oracle/10.2.0.1/client
I'm having trouble finding your Oracle version number... trying harder
Oracle version 10.2.0 (10.2)
You don't seem to have many Oracle libraries installed. If the
build fails you probably need to install more Oracle software.
Unable to locate an oracle.mk, proc.mk or other suitable *.mk
file in your Oracle installation. (I looked in
/usr/lib/oracle/10.2.0.1/client/rdbms/lib/oracle.mk /usr/lib/oracle/10.2.0.1/client/rdbms/demo/oracle.mk /usr/lib/oracle/10.2.0.1/client/rdbms/demo/demo_rdbms.mk /usr/lib/oracle/10.2.0.1/client/otrace/demo/atmoci.mk /usr/lib/oracle/10.2.0.1/client/precomp/demo/proc/proc.mk /usr/lib/oracle/10.2.0.1/client/precomp/demo/proc/demo_proc.mk /usr/lib/oracle/10.2.0.1/client/proc/lib/proc.mk /usr/lib/oracle/10.2.0.1/client/proc16/lib/proc16.mk)
The oracle.mk (or demo_rdbms.mk) file is part of the Oracle
RDBMS product. The proc.mk (or demo_proc.mk) file is part of
the Oracle Pro*C product. You need to build DBD::Oracle on a
system which has one of these Oracle components installed.
(Other *.mk files such as the env_*.mk files will not work.)
In the unlikely event that a suitable *.mk file is installed
somewhere non-standard you can specify where it is using the -m option:
perl Makefile.PL -m /path/to/your.mk
See README.clients for more information and some alternatives.
As you can see it's complaining about Oracle .mk files. Yet I do not see any package from Oracle that contains these files.
We had no problem installing DBD::Oracle on our win32 machines (we did so from ActiveState's PPM repository).
|
|
|
Posted on Wed Oct 26 15:45:35 2005
by byterock
in response to 1233
|
| Re: DBD and Oracle Instantclient 10 |
|
Sorry for the late reply
Try the latest version of 10g Instantclient.
The Makefile.PL in the pythian branch was tested with the instantclient-basic-linux32-10.1.0.4-20050525.zip and it works.
You can find the latest version at:
http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/linuxsoft.html
I would try that first. If you are still having problems I might be able to rework the MakeFile.PL to take earlier version of 10g Instantclient.
|
|
|
Posted on Tue Nov 1 14:43:54 2005
by pingus
in response to 1130
|
| Re: DBD and Oracle Instantclient 10 |
|
Thanks for your working Makefile.PL! It's great to use the 'small' InstantClient instead of the fat Oracle Client installation :-)
(Version info: InstantClient 10.2.0.1 using DBI 1.48 @ SUSE 10.0)
Pingus
|
|
|
Posted on Thu Nov 10 13:57:23 2005
by cbingel
in response to 1130
|
| Re: DBD and Oracle Instantclient 10 |
I really appreciate your work here and hope it will be somehow integrated into the main DBD::Oracle in the future, since using the instant-client is much more lightweight and easy to install if you just want simple access to an oracle DB somewhere!
I first had problems getting the instant client to work on my Fedora Core 3 machine. Every time i started sqlplus from the shell, it hung using 100% CPU. This was resolved when i upgraded my system (using yum), which replaced for instance the glibc package and MANY other rpms. I don't know which one of the 450 udated RPMs did the trick, but afterwards it worked fine and DBD::Oracle compiled without any complaints and i can do selects etc from my Perl script. I know my problems isn't really tied to DBD::Oracle, but more of a instant-client problem, but when i tried googling, i found nothing, so i thought i'd share my experience. It also works fine on a FC4 installation that i have.
The only problem i have now is how to specify the LD_LIBRARY_PATH environmentvariable in my CGI-script... i would rather not add this in my apache environment since it will be glob for ALL my cgi-scripts. I made an ugly workaround with a bash shell-script as a wrapper that exports the LD_LIBRARY_PATH and ORACLE_HOME and then calls my perl program. There's got to be a better way of doing this!?
Cheers,
Carl
|
|
|
Posted on Thu Nov 10 17:58:16 2005
by byterock
in response to 1298
|
| Re: DBD and Oracle Instantclient 10 |
|
Thanks for the feedback Carl.
Unfortunetly I do not have an answer for your problem, but if you do not mind I might use you post in the next readme file for the Makefile.pl
As well you might try posting your problem on the perl.dbi.users forum. Here is the goggle url to it
http://groups.google.ca/group/perl.dbi.users?hl=en
you will most likely get an answer as perl.dbi is a very active forum.
|
|
|
Posted on Fri Dec 2 11:55:06 2005
by rata
in response to 1273
|
| Re: DBD and Oracle Instantclient 10 |
|
I have the same configuration (instantClient 10.2.0.1 and DBI), but...
when compile DBD i have the error:
The ORACLE_HOME environment variable value (/opt/app/oracle/instantclient_10_2) is not valid.
In the .profile i have ORACLE_HOME=/opt/app/oracle/instantclient_10_2.
I don't understand this error.
What's your oracle_home???
|
|
|
Posted on Fri Dec 2 14:26:07 2005
by byterock
in response to 1435
|
| Re: DBD and Oracle Instantclient 10 |
|
It all depends which version of the Makefile.PL you are using.
I beleive the one in the current trunk still does not work for the instantclient.
It you use the Makefile.PL from the pythian branch of the tree it should compile.
Cheers
|
|
|
Posted on Mon Dec 12 14:40:13 2005
by wschrabi
in response to 1436
|
| Re: DBD and Oracle Instantclient 10 |
|
I tried to svn checkout the site but when I compile the Makefile.PL
with perl I got the error :
chem65:/home/wschrabi/Perl/pythian # /usr/local/bin/perl Makefile.PL
Using DBI 1.43 (for perl 5.008005 on i586-linux-thread-multi) installed in /usr/lib/perl5/vendor_pe
+rl/5.8.5/i586-linux-thread-multi/auto/DBI
Configuring DBD::Oracle ...
>>> Remember to actually *READ* the README file!
Especially if you have any problems.
os=linux
Using Oracle in /usr/lib/oracle/10.2.0.1/client
path=/usr/sbin:/bin:/usr/bin:/sbin:/usr/X11R6/bin:/usr/lib/oracle/10.2.0.1/client/bin:/usr/lib/orac
+le/10.2.0.1/client
SP2-1503: Unable to initialize Oracle call interface
SP2-0152: ORACLE may not be functioning properly
I'm having trouble finding your Oracle version number... trying harder
Oracle version 10.2.0 (10.2)
Unable to locate an oracle.mk, proc.mk or other suitable *.mk
file in your Oracle installation. (I looked in
/usr/lib/oracle/10.2.0.1/client/rdbms/demo/demo_xe.mk /usr/lib/oracle/10.2.0.1/client/rdbms
+/lib/oracle.mk /usr/lib/oracle/10.2.0.1/client/rdbms/demo/oracle.mk /usr/lib/oracle/10.2.0.1/clien
+t/rdbms/demo/demo_rdbms.mk /usr/lib/oracle/10.2.0.1/client/otrace/demo/atmoci.mk /usr/lib/oracle/1
+0.2.0.1/client/precomp/demo/proc/proc.mk /usr/lib/oracle/10.2.0.1/client/precomp/demo/proc/demo_pr
+oc.mk /usr/lib/oracle/10.2.0.1/client/proc/lib/proc.mk /usr/lib/oracle/10.2.0.1/client/proc16/lib/
+proc16.mk)
The oracle.mk (or demo_rdbms.mk) file is part of the Oracle
RDBMS product. The proc.mk (or demo_proc.mk) file is part of
the Oracle Pro*C product. You need to build DBD::Oracle on a
system which has one of these Oracle components installed.
(Other *.mk files such as the env_*.mk files will not work.)
In the unlikely event that a suitable *.mk file is installed
somewhere non-standard you can specify where it is using the -m option:
perl Makefile.PL -m /path/to/your.mk
See README.clients for more information and some alternatives.
at Makefile.PL line 1070.
chem65:/home/wschrabi/Perl/pythian #
I used the latest verions of the instant client and the DBD from the pythian dir.
Could any help?
Please email a copy to wschrabi.at.gmx.at
Tks a lot.
Walter
|
|
|
Posted on Mon Dec 12 15:04:41 2005
by byterock
in response to 1456
|
| Re: DBD and Oracle Instantclient 10 |
|
Did you download the entire Instant client suite?
You will need both the basic package as well as the SDK package
Here is the link to it.
http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/linuxsoft.html
I will have another go at this myself and see it I can recreate you problem
As well the DBD::Oracle module is mainly supported via the dbi-users@perl.org mailing list. You can email to dbi-users@perl.org without subscribing to the list. (You first email may take a day or two to pass the moderator, after that you'll be whitelisted.)
|
|
|
Posted on Mon Dec 12 18:37:45 2005
by wschrabi
in response to 1457
|
| Re: DBD and Oracle Instantclient 10 |
|
I have now installed the SDK with the rpm -i *.rpm command.
But he search still for the *.mk files.
Could you tell me where my bug is?
Tks
Walter
|
|
|
Posted on Wed Dec 14 23:06:28 2005
by n8
in response to 1460
|
| Re: DBD and Oracle Instantclient 10 |
I had that same problem at one point, Walter. I just posted my answers to the dbi-users list, but I'll paste them here too:
After a day of forehead-bashing I got DBD::Oracle to compile with the Instant Client on Red Hat Enterprise Linux 4 - though I suspect it will work with most other flavors. Here are my notes for the good of the next person (and me next time I go looking):
To simplify/standardize the layout of the files I used the RPMs Oracle provides. They scatter the files into /usr/lib/oracle, /usr/include/oracle, and /usr/share/oracle, so I had to make an adjustment in the Makefile.PL to find the .h files.
I used the pythian branch from the subversion repository (announced at http://www.cpanforum.com/threads/1130). Here's the output of svn diff - I don't have credentials to commit the change (nor do I want them!)
$ svn diff Makefile.PL
Index: Makefile.PL
===================================================================
--- Makefile.PL (revision 2309)
+++ Makefile.PL (working copy)
@@ -18,6 +18,12 @@
## Changes made
## Adding in a few changes suggested by Andy Hassall <andy@andyh.co.uk>
## that will enable the compile to work for Windows version of the IC
+##
+## Nathan.Vonnahme at banner health dot com
+## Dec 14 2005
+## tweak to find Oracle Instant Client 10.2.0.1 on Linux when installed via Oracle's RPMs,
+## which scatter the instant client files into /usr/lib/oracle, /usr/include/oracle, and
+## /usr/share/oracle
# vim: ts=8:sw=4
@@ -382,6 +388,7 @@
$linkwith_msg = "-l$lib.";
$opts{LIBS} = [ "-L$OH/$libdir -l$lib $syslibs"];
my $inc = "-I$OH\/sdk/include";
+ $inc .= " -I/usr/include/oracle/$client_version_full/client"; # where Oracle's rpms put the .h
+ files
$opts{INC} = "$inc -I$dbi_arch_dir";
}
I also had trouble with the environment variables; this is what finally worked:
ORACLE_HOME=/usr/lib/oracle/10.2.0.1/client/lib
LD_LIBRARY_PATH=/usr/lib/oracle/10.2.0.1/client/lib
after those two changes, I could run `perl Makefile.PL` with no args and get a working makefile.
|
|
|
Posted on Wed Feb 15 19:51:11 2006
by droopy
in response to 1484
|
| Re: DBD and Oracle Instantclient 10 |
|
using all of the above I've got:
me@machine DBD-Oracle-1.17 $ perl Makefile.PL
Using DBI 1.48 (for perl 5.008 on i386-linux-thread-multi) installed in /usr/lib/perl5/vendor_perl/
+5.8.0/i386-linux-thread-multi/auto/DBI/
Configuring DBD::Oracle for perl 5.008 on linux (i386-linux-thread-multi)
Remember to actually *READ* the README file! Especially if you have any problems.
Using Oracle in /usr/lib/oracle/10.2.0.1/client/lib
Can't find sqlplus. Pity, it would have helped.
I'm having trouble finding your Oracle version number... trying harder
Oracle version 10.2.0 (10.2)
Looks like an Instant Client installation, okay
Your LD_LIBRARY_PATH env var is set to ''
WARNING: Your LD_LIBRARY_PATH env var doesn't include '/usr/lib/oracle/10.2.0.1/client/lib' but pro
+bably needs to.
Oracle sysliblist:
invalid top directory at /usr/lib/perl5/5.8.0/File/Find.pm line 562.
So I had to install sqlplus package....
|
|
|
Posted on Wed Feb 15 20:13:09 2006
by byterock
in response to 1807
|
| Re: DBD and Oracle Instantclient 10 |
You should post this on dbi-users@perl.org
As this form is not read by many.
In you case you have not set your
LD_LIBRARY_PATH
you should run something like this
export LD_LIBRARY_PATH=$ORACLE_HOME:$ORACLE_HOME/lib
|
|
|
Posted on Thu Feb 16 01:33:02 2006
by droopy
in response to 1808
|
| Re: DBD and Oracle Instantclient 10 |
|
I was primarily looking for your attention so now that I've got it ;) - I've got another issue to hammer on. I'm trying to build RPM out of DBD-Oracle for deployment on our machines and what I get is it's persistantly trying to deploy stuff into /usr/lib/.... instead of specified PREFIX=/var/tmp/.../usr
here is how I call Makefile.PL:
/usr/bin/perl Makefile.PL PREFIX=/var/tmp/perl-DBD-Oracle-1.17-dimon/usr
<code>
here's my "make install" invocation:
<code>
make prefix=/var/tmp/perl-DBD-Oracle-1.17-dimon/usr exec_prefix=/var/tmp/perl-DBD-Oracle-1.17-dimon
+/usr bindir=/var/tmp/perl-DBD-Oracle-1.17-dimon/usr/bin sbindir=/var/tmp/perl-DBD-Oracle-1.17-dimo
+n/usr/sbin sysconfdir=/var/tmp/perl-DBD-Oracle-1.17-dimon/etc datadir=/var/tmp/perl-DBD-Oracle-1.1
+7-dimon/usr/share includedir=/var/tmp/perl-DBD-Oracle-1.17-dimon/usr/include libdir=/var/tmp/perl-
+DBD-Oracle-1.17-dimon/usr/lib libexecdir=/var/tmp/perl-DBD-Oracle-1.17-dimon/usr/libexec localstat
+edir=/var/tmp/perl-DBD-Oracle-1.17-dimon/var sharedstatedir=/var/tmp/perl-DBD-Oracle-1.17-dimon/us
+r/com mandir=/var/tmp/perl-DBD-Oracle-1.17-dimon/usr/share/man infodir=/var/tmp/perl-DBD-Oracle-1.
+17-dimon/usr/share/info install PREFIX=/var/tmp/perl-DBD-Oracle-1.17-dimon/usr
and here's what I get...
...........
Using DBD::Oracle 1.17.
Using DBD::Oracle 1.17.
Using DBI 1.48 (for perl 5.008 on i386-linux-thread-multi) installed in /usr/lib/perl5/vendor_perl/
+5.8.0/i386-linux-thread-multi/auto/DBI/
Writing Makefile for DBD::Oracle
*** If you have problems...
read all the log printed above, and the README and README.help files.
(Of course, you have read README by now anyway, haven't you?)
Warning: You do not have permissions to install into /usr/lib/perl5/site_perl/5.8.0/i386-linux-thre
+ad-multi at /usr/lib/perl5/5.8.0/ExtUtils/Install.pm line 84.
mkdir /usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi/auto/DBD: Permission denied at /usr/li
+b/perl5/5.8.0/ExtUtils/Install.pm line 137
make: *** [pure_site_install] Error 255
if you're interested we can move it into private email converstation (dmitry athabascau ca).
|
|
|
Posted on Mon Mar 20 19:05:33 2006
by jonzey
in response to 1484
|
| Re: DBD and Oracle Instantclient 10 |
|
Just a note to say thanks for posting your notes. I finally got there with the 10.2.0.1 drivers, the ORACLE_HOME and LD_LIBRARY_PATH variables, the Makefile.PL from pythian, patched using your diff.
I was trying (and eventually succeded) using Centos-4.2 and perl-5.8.5.
Regards,
Richard
|
|
|
Posted on Fri Apr 28 20:42:29 2006
by flexx
in response to 1484
|
| Re: DBD and Oracle Instantclient 10 |
|
> I also had trouble with the environment variables; this is what finally worked:
> ORACLE_HOME=/usr/lib/oracle/10.2.0.1/client/lib
> LD_LIBRARY_PATH=/usr/lib/oracle/10.2.0.1/client/lib
> after those two changes, I could run `perl Makefile.PL` with no args and get a working makefile.
I got a makefile, using the same trick with Instant Client 10.2.0.2 and DBD::Oracle 1.17 (unaltered from CPAN), on my gentoo linux box, too.
However things didn't work after installation. When I tried to connect to a database (with a script that works fine on other host with a DBI::Oracle compiled against the full client) i get:
ERROR OCIEnvNlsCreate. Check ORACLE_HOME env var, NLS settings, permissions, etc.
It seems that the makefile looks for a directory $ORACLE_HOME/sdk/include which is included in the dirstibution file /usr/portage/distfiles/instantclient-sdk-linux32-10.2.0.2-20060331.zip:
# unzip -l /usr/portage/distfiles/instantclient-sdk-linux32-10.2.0.2-20060331.zip
Archive: /usr/portage/distfiles/instantclient-sdk-linux32-10.2.0.2-20060331.zip
Length Date Time Name
-------- ---- ---- ----
0 02-05-06 06:50 instantclient_10_2/sdk/
0 02-05-06 06:50 instantclient_10_2/sdk/include/
2115 02-05-06 06:50 instantclient_10_2/sdk/include/occi.h
38724 02-05-06 06:50 instantclient_10_2/sdk/include/occiCommon.h
73063 02-05-06 06:50 instantclient_10_2/sdk/include/occiControl.h
35218 02-05-06 06:50 instantclient_10_2/sdk/include/occiData.h
29156 02-05-06 06:50 instantclient_10_2/sdk/include/occiObjects.h
11600 02-05-06 06:50 instantclient_10_2/sdk/include/occiAQ.h
150915 02-05-06 06:50 instantclient_10_2/sdk/include/oci.h
7155 02-05-06 06:50 instantclient_10_2/sdk/include/oci1.h
10361 02-05-06 06:50 instantclient_10_2/sdk/include/oci8dp.h
410791 02-05-06 06:50 instantclient_10_2/sdk/include/ociap.h
6055 02-05-06 06:50 instantclient_10_2/sdk/include/ociapr.h
43225 02-05-06 06:50 instantclient_10_2/sdk/include/ocidef.h
4014 02-05-06 06:50 instantclient_10_2/sdk/include/ocidem.h
11331 02-05-06 06:50 instantclient_10_2/sdk/include/ocidfn.h
8954 02-05-06 06:50 instantclient_10_2/sdk/include/ociextp.h
6638 02-05-06 06:50 instantclient_10_2/sdk/include/ocikpr.h
4351 02-05-06 06:50 instantclient_10_2/sdk/include/ocixmldb.h
19099 02-05-06 06:50 instantclient_10_2/sdk/include/odci.h
6605 02-05-06 06:50 instantclient_10_2/sdk/include/oratypes.h
102726 02-05-06 06:50 instantclient_10_2/sdk/include/ori.h
15031 02-05-06 06:50 instantclient_10_2/sdk/include/orid.h
157674 02-05-06 06:50 instantclient_10_2/sdk/include/orl.h
42626 02-05-06 06:50 instantclient_10_2/sdk/include/oro.h
116591 02-05-06 06:50 instantclient_10_2/sdk/include/ort.h
9520 02-05-06 06:50 instantclient_10_2/sdk/include/xa.h
85310 02-05-06 06:50 instantclient_10_2/sdk/include/nzt.h
33230 02-05-06 06:50 instantclient_10_2/sdk/include/nzerror.h
0 02-05-06 06:50 instantclient_10_2/sdk/demo/
4053 02-05-06 06:50 instantclient_10_2/sdk/demo/demo.mk
14146 02-05-06 06:50 instantclient_10_2/sdk/demo/cdemo81.c
7202 02-05-06 06:50 instantclient_10_2/sdk/demo/occidemo.sql
1868 02-05-06 06:50 instantclient_10_2/sdk/demo/occidemod.sql
7351 02-05-06 06:50 instantclient_10_2/sdk/demo/occidml.cpp
4727 02-05-06 06:50 instantclient_10_2/sdk/demo/occiobj.cpp
60 02-05-06 06:50 instantclient_10_2/sdk/demo/occiobj.typ
298274 02-05-06 06:50 instantclient_10_2/sdk/ottclasses.zip
346 02-05-06 06:50 instantclient_10_2/sdk/ott
-------- -------
1780105 39 files
Then we have the basic package of course:
#unzip -l /usr/portage/distfiles/instantclient-basic-linux32-10.2.0.2-20060331.zip
Archive: /usr/portage/distfiles/instantclient-basic-linux32-10.2.0.2-20060331.zip
Length Date Time Name
-------- ---- ---- ----
1594191 02-05-06 06:50 instantclient_10_2/classes12.jar
18774535 02-05-06 06:50 instantclient_10_2/libclntsh.so.10.1
5623929 02-05-06 06:50 instantclient_10_2/libnnz10.so
1398088 02-05-06 06:50 instantclient_10_2/libocci.so.10.1
70690282 02-05-06 06:50 instantclient_10_2/libociei.so
119919 02-05-06 06:50 instantclient_10_2/libocijdbc10.so
1540457 02-05-06 06:50 instantclient_10_2/ojdbc14.jar
-------- -------
99741401 7 files
On my gentoo linux box the installation resides under /usr/lib/oracle/10.2.0.2/client as follows:
#tree /usr/lib/oracle/10.2.0.2/client/
/usr/lib/oracle/10.2.0.2/client/
|-- bin
| `-- sqlplus
|-- include
| |-- nzerror.h
| |-- nzt.h
| |-- occi.h
| |-- occiAQ.h
| |-- occiCommon.h
| |-- occiControl.h
| |-- occiData.h
| |-- occiObjects.h
| |-- oci.h
| |-- oci1.h
| |-- oci8dp.h
| |-- ociap.h
| |-- ociapr.h
| |-- ocidef.h
| |-- ocidem.h
| |-- ocidfn.h
| |-- ociextp.h
| |-- ocikpr.h
| |-- ocixmldb.h
| |-- odci.h
| |-- oratypes.h
| |-- ori.h
| |-- orid.h
| |-- orl.h
| |-- oro.h
| |-- ort.h
| `-- xa.h
`-- lib
|-- classes12.jar
|-- glogin.sql
|-- libclntsh.so -> /usr/lib/oracle/10.2.0.2/client/lib/libclntsh.so.10.1
|-- libclntsh.so.10.1
|-- libheteroxa10.so
|-- libnnz10.so
|-- libocci.so -> /usr/lib/oracle/10.2.0.2/client/lib/libocci.so.10.1
|-- libocci.so.10.1
|-- libociei.so
|-- libocijdbc10.so
|-- libsqlplus.so
|-- libsqlplusic.so
|-- ojdbc14.jar
`-- orai18n.jar
Well, quite a lot has moved:
1. the demo directory from the SDK was omitted (should not be a problem)
2. the ott directory from the SDK was ommitted (should not be a problem)
3. the files of the basic package moved from / to /lib
4. the rest of the SDK moved from /sdk/include to /include
Item 3 probably explains why setting $ORACLE_HOME to ../lib appears to work on gentoo, but also explains why the include files cannot be found during installation:
*********************************************************
I can't find the header files I need in your Oracle installation.
You probably need to install some more Oracle components.
For Instant Client that means the SDK package.
I'll keep going, but the compile will probably fail.
See README.clients.txt for more information.
*********************************************************
I am bit stuck now.
The "correct" ORACLE_HOME for my system is /usr/lib/oracle/10.2.0.2/client, but with that the installation is not recogized correctly in the build process. If I set ORACLE_HOME and LD_LIBRARY_PATH to /usr/lib/oracle/10.2.0.2/client/lib the build finishes, but the build module does not work (probably because at runtime ORACLE_HOME has to point to /usr/lib/oracle/10.2.0.2/client again, unless I want to break lots of other things in my system).
Perhaps the makefile could not look for specific things in specific directories unter $ORACLE_HOME, but rather simply look for the files it needs *anywhere* below $ORACLE_HOME.
I haven't the time to dig in more myself now unfortunately, I was just hoping these observations might be of help to byterock or someone else who *has* the time to dig in... ;)
Cheers,
Flexx
flexx "at" chello.at
|
|
|
Posted on Fri Apr 28 21:11:15 2006
by flexx
in response to 2210
|
| Re: DBD and Oracle Instantclient 10 |
Well, althought I don't actually have the time I dug in anyway and found the following snipplet in the original makefile:
die qq{ The $ORACLE_ENV environment variable value ($OH) is not valid.
It must be set to hold the path to an Oracle installation directory
on this machine (or a machine with a compatible architecture).
For an Instant Client install, the directory should include an sdk subdirectory.
See the README.clients.txt file for more information.
ABORTED!
} unless (-d $OH and $os eq 'VMS')
or -d "$OH/sdk/." # Instant Client with SDK
or -d "$OH/lib/." # normal Oracle installation
or glob("$OH/libclntsh.$so*") # pre-sdk instant client or rpm
or -e "$OH/oci.dll"; # Windows Instant Client
print "Using Oracle in $OH\n";
So that explains why setting $ORACLE_HOME to $REAL_ORACLE_HOME/lib works on gentoo, since gentoo copies the actual content from the basic packages' root to .../lib, where Makemaker.PL then indeed finds a libclntsh.so.10.1, thus assuming it has found a pre-sdk instant client, wich is incorrect.
Furthermore, as a $ORACLE_HOME/lib exists in gentoo, if you set $ORACLE_HOME to the "actually correct" directory, the installation is mistakenly assumed to be a normal Oracle installation.
The above snipplet merely checks the existence of a usable installation, and not more, but I guess the comments given by the coder show the assumtions made later in the process:
# --- special case for Oracle 10g instant client (note lack of ../lib/...)
elsif (my @libclntsh = glob("$OH/libclntsh.$so*")) {
print "Looks like an Instant Client installation, okay\n";
So the problem here is, that a lot of assumtions are made on how your $ORACLE_HOME is structured, and if a distro doesn't follow the default structure (like many) then DBD::Oracle won't build out of the box.
Cheers,
Flexx
flexx "at" chello.at
|
|