Here's what worked for me ...
Platforms
Windows XP Pro
Cygwin 1.3.15-2 (including Perl 5.8.0)
I have installed the following Oracle products :
Oracle 9i Database 9.2.0.1
Oracle Net Listener 9.2.0.1
Oracle Database Utilities 9.2.0.1
Oracle Verify Utility 9.2.0.1
Oracle Call Interface (OCI) 9.2.0.1
Oracle Trace 9.2.0.1
PL/SQL 9.2.0.1
Recovery Manager 9.2.0.1
SQL*Plus 9.2.0.1
Oracle JVM 9.2.0.1
Required Support Files 9.2.0.1
Oracle Intermedia 9.2.0.1
Database Configuration Assistant 9.2.0.1
Migration Utility 9.2.0.1
Oracle Intelligent Agent 9.2.0.1
Generic Connectivity Using ODBC 9.2.0.1
Generic Connectivity Using OLEDB - FS 9.2.0.1
Generic Connectivity Using OLEDB - SQL 9.2.0.1
XML 9.2.0.1
Oracle Ultra Search Server 9.2.0.1
Oracle Starter Database 9.2.0.1
Oracle Text 9.2.0.1
Enterprise Edition Options 9.2.0.1
Oracle Net Services 9.2.0.1
Oracle Enterprise Manager Products 9.2.0.1
Oracle 9i Development Kit 9.2.0.1
Oracle HTTP Server 9.2.0.1
Oracle Windows Interfaces 9.2.0.1
iSQL*Plus 9.2.0.1
Oracle JDBC/OCI Interfaces 9.2.0.1
Installation Common Files
Oracle 9i Client 9.2.0.1
Oracle Internet Directory Tools 9.2.0.1
Pro*COBOL 1.8.77.0.0
Oracle Workflow Client 2.6.2.0
Pro*COBOL 9.2.0.1
Oracle Migration Workbench 9.2.0.1
Pro*C/C++ 9.2.0.1
I know not all of these are required to get DBD::Oracle working, but
that's what I've got, and it works. I suspect for client only stuff,
the key components would be :
Oracle Call Interface (OCI) 9.2.0.1
Required Support Files 9.2.0.1
Oracle Net Services 9.2.0.1
Oracle 9i Development Kit 9.2.0.1
Oracle Windows Interfaces 9.2.0.1
Installation Common Files
Oracle 9i Client 9.2.0.1
Pro*C/C++ 9.2.0.1
In my cygwin environment, I installed DBI-1.30 as normal. That is ...
perl Makefile.PL
make
make test
make install
I then downloaded DBD-Oracle-1.12.tar.gz. From there, here's what I did
....
$ tar xfz DBD-Oracle-1.12.tar.gz
$ cd DBD-Oracle-1.12
$ dlltool --input-def oci.def --output-lib liboci.a
$ cp liboci.a /usr/lib
$ export LD_LIBRARY_PATH=/usr/lib
$ export ORACLE_HOME='f:\oracle\ora92'
$ export ORACLE_USERID='sbdev/sbdev@sb9i'
$ perl Makefile.PL
(****** Here's the output ... *******)
Using DBI 1.30 installed in
/usr/lib/perl5/site_perl/5.8.0/cygwin-multi-64int/auto/DBI
Duplicate specification "S=s" for option "s"
Configuring DBD::Oracle ...
>>> Remember to actually *READ* the README file!
Especially if you have any problems.
Using Oracle in f:/oracle/ora92
Found header files in rdbms/demo.
Found oci directory
Using OCI directory 'oci'
Using liboci.a (did you build it?)
System: perl5.008 cygwin_nt-5.0 kmbestst 1.3.12(0.5432) 2002-07-06 02:16
i686 unknown
Compiler: gcc -O2 -DPERL_USE_SAFE_PUTENV -fno-strict-aliasing
Linker: /usr/bin/ld
Sysliblist:
Warning: If you have problems you may need to rebuild perl with
-Uusemymalloc.
Checking if your kit is complete...
Looks good
Use of uninitialized value in concatenation (.) or string at Makefile.PL
line 1129.
LD_RUN_PATH=/usr/lib
Using DBD::Oracle 1.12.
Using DBD::Oracle 1.12.
Using DBI 1.30 installed in
/usr/lib/perl5/site_perl/5.8.0/cygwin-multi-64int/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?)
(****** Output End *******)
$ make
(****** This gave a heap of warnings like ...)
"dbdimp.c:206: warning: passing arg 1 of `fprintf' from incompatible
pointer type"
(****** but ended with ...)
Running Mkbootstrap for DBD::Oracle ()
chmod 644 Oracle.bs
rm -f blib/arch/auto/DBD/Oracle/Oracle.dll
LD_RUN_PATH="/usr/lib" ld2 -s -L/usr/local/lib Oracle.o dbdimp.o oci7.o
oci8.o -o blib/arch/auto/DBD/Oracle/Oracle.dll
/usr/lib/perl5/5.8.0/cygwin-multi-64int/CORE/libperl.dll.a -loci
gcc -shared -o Oracle.dll -Wl,--out-implib=libOracle.dll.a
-Wl,--export-all-symbols -Wl,--enable-auto-import -Wl,--stack,8388608 \
-s -L/usr/local/lib Oracle.o dbdimp.o oci7.o oci8.o
/usr/lib/perl5/5.8.0/cygwin-multi-64int/CORE/libperl.dll.a -loci
Creating library file: libOracle.dll.a
mv Oracle.dll libOracle.dll.a blib/arch/auto/DBD/Oracle/
chmod 755 blib/arch/auto/DBD/Oracle/Oracle.dll
cp Oracle.bs blib/arch/auto/DBD/Oracle/Oracle.bs
chmod 644 blib/arch/auto/DBD/Oracle/Oracle.bs
/usr/bin/perl.exe "-Iblib/arch" "-Iblib/lib" ora_explain.PL ora_explain
Extracted ora_explain from ora_explain.PL with variable substitutions.
cp ora_explain blib/script/ora_explain
/usr/bin/perl.exe "-MExtUtils::MY" -e "MY->fixin(shift)"
blib/script/ora_explain
Manifying blib/man3/DBD.Oracle.3pm
Manifying blib/man1/ora_explain.1
Manifying blib/man3/DBD.Oraperl.3pm
(****** Output End *******)
$ make test
(****** Here's the output ... *******)
/usr/bin/perl.exe "-MExtUtils::Command::MM" "-e" "test_harness(0,
'blib/lib', 'blib/arch')" t/*.t
t/base.......ok
t/general....ok
t/long.......ok
t/ph_type....ok
t/plsql......ok
t/reauth.....skipped
all skipped: no reason given
All tests successful, 1 test skipped.
Files=6, Tests=281, 19 wallclock secs ( 1.24 cusr + 0.71 csys = 1.95
CPU)
/usr/bin/perl.exe "-Iblib/lib" "-Iblib/arch" test.pl
Oraperl test application $Revision: 1.4 $
dump() better written as CORE::dump() at
/cygdrive/d/Downloads/DBD-Oracle-1.12/blib/lib/Oraperl.pm line 80.
Oraperl emulation interface version 1.41
DBD::Oracle 1.12 using OCI8 by Tim Bunce
DBI 1.30 by Tim Bunce
Data sources:
dbi:Oracle:A01DEV
dbi:Oracle:A02DEV
dbi:Oracle:BTARP
dbi:Oracle:EXTPROC_CONNECTION_DATA
dbi:Oracle:INST1_HTTP
dbi:Oracle:M01SRV
dbi:Oracle:MSJDEV
dbi:Oracle:MSQDEV
dbi:Oracle:SB9I
Connecting
to '' (from command line, else uses ORACLE_SID or TWO_TASK -
recommended)
as 'sbdev/sbdev@sb9i' (via ORACLE_USERID env var or default - recommend
name/passwd@dbname)
(ORACLE_SID='', TWO_TASK='')
Testing internal row fetch overhead.
50000 fetches: 1 wallclock secs ( 0.65 usr + 0.00 sys = 0.65 CPU)
50000 per clock second, 76804 per cpu second
Fields: 6
Names: 'NUM_T' 'DATE_T' 'CHAR_T' 'ROWID_T'
'RAW_T' 'NULL_T'
Lengths: 134 76 31 21 3 1
OraTypes: 2 12 1 104 23 1
SQLTypes: 8 9 12 -9104 -2 12
Scale: 0 0 0 0 0 0
Precision: 126 75 30 20 2 0
Nullable: 1 1 1 1 1 1
Est row width: 46
Data rows:
fetch: '7.2', '19-NOV-02', 'SBDEV', 'AAAADeAABAAAAZSAAA', '7D',
undef
csr reassigned (forces destruction)...
Fetch list of tables:
Fetched: DUAL
Fetched: SYSTEM_PRIVILEGE_MAP
Fetched: TABLE_PRIVILEGE_MAP
Fetched: STMT_AUDIT_OPTION_MAP
Test ora_do with harmless non-select statement (set transaction read
only)
Expect an 'ORA-01453' error message:
ora_do: 1453: ORA-01453: SET TRANSACTION must be first statement of
transaction (DBD ERROR: OCIStmtExecute)
csr out of scope...
ora_logoff...
lda out of scope...
Testing repetitive connect/open/close/disconnect:
If this test hangs then read the README.help file.
Expect sequence of digits, no other messages:
1 2 3 4 5
Test interaction of explicit close/logoff and implicit DESTROYs
Expect just 'done.', no other messages:
done.
Testing row cache (5).
Test completed in 0 seconds.
Test complete (1 seconds).
If the tests above have produced the 'expected' output then they have
passed.
(****** Output End *******)
$ make install
(****** Here's the output ... *******)
Manifying blib/man1/ora_explain.1
Installing
/usr/lib/perl5/site_perl/5.8.0/cygwin-multi-64int/auto/DBD/Oracle/mk.pm
Installing
/usr/lib/perl5/site_perl/5.8.0/cygwin-multi-64int/auto/DBD/Oracle/Oracle
..dll
Installing
/usr/lib/perl5/site_perl/5.8.0/cygwin-multi-64int/auto/DBD/Oracle/libOra
cle.dll.a
Files found in blib/arch: installing files in blib/lib into architecture
dependent library tree
Installing
/usr/lib/perl5/site_perl/5.8.0/cygwin-multi-64int/DBD/sbtest.pl
Writing
/usr/lib/perl5/site_perl/5.8.0/cygwin-multi-64int/auto/DBD/Oracle/.packl
ist
Appending installation info to
/usr/lib/perl5/5.8.0/cygwin-multi-64int/perllocal.pod
(****** Output End *******)
And that's it !! I hope this helps someone.
Steve