279 lines
12 KiB
Plaintext
279 lines
12 KiB
Plaintext
#PODNAME: DBD::Oracle::Troubleshooting::Win32
|
|
#ABSTRACT: Tips and Hints to Troubleshoot DBD::Oracle on Win32
|
|
|
|
__END__
|
|
|
|
=pod
|
|
|
|
=encoding UTF-8
|
|
|
|
=head1 NAME
|
|
|
|
DBD::Oracle::Troubleshooting::Win32 - Tips and Hints to Troubleshoot DBD::Oracle on Win32
|
|
|
|
=head1 VERSION
|
|
|
|
version 1.80
|
|
|
|
=head1 GENERAL INFO
|
|
|
|
In general, on Windows, it's best to just use ActiveState Perl and the
|
|
PPM package manager to install a pre-built version of DBD::Oracle however only version 1.17 is available there.
|
|
|
|
=head1 Oracle Instant Client 11.1.0.6.0 Notes
|
|
|
|
So far I have managed to get it to Makefile and compile test and install and work. However it seems one needs to set "NLS_LANG" to a valid value
|
|
in the environment variables.
|
|
|
|
As well IC 11 seems to have trouble finding the .ORA files. A quick fix for this is to add "TNS_ADMIN"
|
|
to the environment variables and point it to where your .ORA files are.
|
|
|
|
=head1 Other information, some of which is out of date ---
|
|
|
|
DBD-Oracle for Windows and Oracle Instantclient and 10XE (Express Edition)
|
|
By: John Scoles
|
|
The Pythian Group
|
|
|
|
The preferred method of getting DBD::Oracle is to use a pre-built version from the ActiveState
|
|
repository, which can be installed with PPM.
|
|
|
|
Compiling and installing DBD::Oracle 1.18 or later on a windows 2000 professional or XP OS for use
|
|
with Oracle instantClient ver 10.2.0.1 & 10.1.0.5 or Oracle XE requires only a few downloads and
|
|
a minimal number of environment setting. The procedures below were tested on a clean
|
|
Windows platform having no Oracle or other development environment installed.
|
|
|
|
1) The first part of the process is to download and install the latest version of
|
|
Active Perl from http://www.activeperl.com/.
|
|
|
|
2) Use the PPM application to get the latest version of DBI
|
|
|
|
3) Download the latest DBD::Oracle from http://svn.perl.org/modules/dbd-oracle/trunk/
|
|
|
|
4) Download and unzip the Oracle Instant Client (10.2.0.1 or 10.1.0.5) 32 bit from
|
|
http://www.oracle.com/technology/tech/oci/instantclient/instantclient.html
|
|
You will need all three of these products
|
|
i. Instant Client Package - Basic
|
|
ii. Instant Client Package - SQL*Plus:
|
|
iii. Instant Client Package - SDK:
|
|
or
|
|
|
|
install oracle 10XE http://www.oracle.com/technology/products/database/xe/index.html
|
|
|
|
5) You will now need the Microsoft Visual C++ toolkit 2003. Unfortunately this product is no longer available from Microsoft.
|
|
The file name was VCToolkitSetup.exe and is available at this mirror site http://www.filewatcher.com/m/VCToolkitSetup.exe.32952488.0.0.html at the time of writing.
|
|
Microsoft's replacement for this tool kit is Visual C++ 2005 Express Edition and all attempts to compile DBD::Oracle with this product fail. It has been successfully compiled
|
|
using a complete edition of Microsoft Visual Studio 2005.
|
|
Download and then install this product.
|
|
|
|
6) You will also need the Windows SDK. Which can be found at
|
|
http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en
|
|
You have the choice to of either to download the entire SDK and install or run an online install from the page.
|
|
Both have been tested and proven to work.
|
|
|
|
7) Next download and install the Microsoft .net framework 1.1 skd from
|
|
http://www.microsoft.com/downloads/details.aspx?FamilyID=9b3a2ca6-3647-4070-9f41-a333c6b9181d&displaylang=en
|
|
|
|
8) You will also need a copy of nmake.exe which you can download here http://download.microsoft.com/download/vc15/patch/1.52/w95/en-us/nmake15.exe
|
|
|
|
9) Enough Downloading and installing go have a coffee.
|
|
|
|
10) You should at this time attempt to connect to an Oracle database with the version SQL*Plus that
|
|
you installed in step 4. If you are unable to connect at this stage then any problems you encounter
|
|
later may have nothing to do with DBD::Oracle
|
|
|
|
11) On the path where you installed Visual C++ find and edit the vcvars32.bat file as follows. You may have to modify
|
|
these path values depending where you installed the products on you computer,
|
|
|
|
i. Add the local path to the windows platform SDK include directory to the Set INCLUDE
|
|
Command Line to include the needed files from the Windows SDK.
|
|
|
|
e.g. "C:\Program Files\Microsoft Platform SDK\Include;"
|
|
|
|
ii. Add the local path to the .net Vc7 lib directory to the Set LIB command
|
|
to include the needed library file from the .Net SKD
|
|
|
|
e.g. C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib;
|
|
|
|
iii. Add the local path to the windows platform SDK Lib directory to the Set Lib command
|
|
to include the needed library files from the Windows SDK
|
|
|
|
e.g. C:\Program Files\Microsoft Platform SDK\Lib;
|
|
|
|
12) Open a Windows Visual C++ command window from the start menu.
|
|
|
|
13) Add the path to the instant client to the Path command. If you are compiling against a 10XE db/client then you can skip steps
|
|
12 to 14.
|
|
e.g. PATH = C:/Oracle/instantclient;%PATH%
|
|
|
|
14) Using the "Set" command add "ORACLE_HOME=path to Instant client" to the environment variables.
|
|
e.g. Set ORACLE_HOME=C:\Oracle\instantclient
|
|
|
|
15) Using the "Set" command add "NLS_LANG=.WE8ISO8859P15" to the environment variables. The globalization variable is required,
|
|
with this or another compatible value, by Oracle instantclient in order for it to compile correctly.
|
|
e.g. Set NLS_LANG=.WE8ISO8859P15
|
|
|
|
16) Using the "Set" command add "ORACLE_USERID=test/test@test" substituting test with the username/password@database
|
|
you wish to run the make test files against.
|
|
Note: it is not necessary to do this step for the compile and install to work.
|
|
However: The self-test programs included with Oracle-DBD will mostly fail.
|
|
|
|
17) Move to the DBD-Oracle directory in the Visual C++ window DOS prompt and enter the following.
|
|
|
|
c:\oracle-dbd\>perl Makefile.PL
|
|
|
|
The Makefile should then run and compile Oracle-dbd without reporting any errors.
|
|
|
|
18) From this DOS prompt enter the following command
|
|
|
|
c:\oracle-dbd\>nmake
|
|
|
|
The Visual C++ make executable will then build you DBD-execuable. There should be no errors at this point.
|
|
|
|
19) You can test the compile by either entering
|
|
|
|
c:\oracle-dbd\>nmake test
|
|
|
|
As long as you have given a valid user name, password and database name in step 15 you will see some results. If it appears to
|
|
run but you do not get a connection check the following.
|
|
|
|
i. User name password and DB Name
|
|
ii. Ensure the a valid TNSNAMES.ORA file is in the Instantclient directory
|
|
iii. Attempt to log into the version of SQLPLUS that comes with Instantclient.
|
|
If you manage to log on use the username password and TNS name with
|
|
the Set ORACLE_USERID = and rerun the tests.
|
|
iv If you are compiling against 10XE and have skipped steps 12 to 14 try again bu this time carry out these steps
|
|
|
|
20) You can now install DBD-Oracle into you system by entering the following command from the Visual C++ window dos prompt;
|
|
|
|
c:\oracle-dbd\>nmake install
|
|
|
|
21) You should now be able to run DBD-Oracle on you system
|
|
|
|
=head1 09/30 2006 from asu
|
|
|
|
DBD::Oracle 1.18a
|
|
|
|
Linux, Debian unstable (
|
|
DBI: 1.52
|
|
perl v5.8.8 built for i486-linux-gnu-thread-multi
|
|
)
|
|
|
|
Oracle Instant client (10.1.0.5)
|
|
|
|
The problem is in Makefile.PL. In line 130 the function find_oracle_home
|
|
is used to guess a value form $ORACLE_HOME if it is not set explicitly.
|
|
This value is used in line 138 to setup the environment (regardless
|
|
which client is used).
|
|
|
|
in line 1443 (sub get_client_version) sqlplus is used to get the
|
|
version string, but for the oracle instant client you must not set
|
|
$ORACLE_HOME (it will generate an error "SP2-0642: SQL*Plus internal
|
|
error state 2165, context 4294967295:0:0")
|
|
|
|
A solution that worked for me was to set
|
|
local $ENV{ORACLE_HOME} = '';
|
|
in line 1463 immediately before sqlplus is called (but I cannot tell if
|
|
this fails for full client installations)
|
|
|
|
11/30/05 -- John Scoles
|
|
I have confirmed that this Makefile.pl will work for both Oracle InstantClient
|
|
10.2.0.1 & 10.1.0.4 using same process the Andy Hassall uses. Starting with a clean OD
|
|
One needs only to get the latest version of Active Perl 5.8.7 use PPM to get DBI and then
|
|
install Microsoft Visual C++ toolkit, Windows SDK, and the Microsoft .net
|
|
framework 1.1. and modify the vcvars32.bat in C++ dir as follows
|
|
|
|
1) Add the local path to the windows platform SDK include directory to the
|
|
Set INCLUDE Command Line to include the needed files from the Windows SDK.
|
|
e.g. "C:\Program Files\Microsoft Platform SDK\Include;"
|
|
2) Add the local path to the .net Vc7 lib directory to the Set LIB
|
|
command to include the needed library files from the .Net SKD
|
|
e.g. C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib;
|
|
3) Add the local path to the windows platform SDK Lib directory to the Set Lib
|
|
command to include the needed library files from the Windows SDK
|
|
e.g. C:\Program Files\Microsoft Platform SDK\Lib;
|
|
|
|
If one happens to have visual studio installed you may not have to download additional MS products.
|
|
|
|
12/01/05 --- John Scoles
|
|
Oracle 10XE
|
|
No big problem here as 10XE seems to use the instantclient as well. Just ensure your
|
|
NLS_LANG and ORACLE_HOME are set to the same directory that 10XE uses
|
|
|
|
10/07/05 --John Scoles
|
|
Andy Hassall kindly added some changes to the Makefile.PL
|
|
so it will work for the Instant Client 10g on Windows OSs. Below is how he set
|
|
up his environment and the steps he preformed to get it to compile.
|
|
|
|
Setting environment for using Microsoft Visual Studio .NET 2003 tools.
|
|
(If you have another version of Visual Studio or Visual C++ installed and wish
|
|
to use its tools from the command line, run vcvars32.bat for that version.)
|
|
|
|
C:\Documents and Settings\andyh>d:
|
|
|
|
D:\>cd cygwin\home\andyh\src\pythian
|
|
|
|
D:\cygwin\home\andyh\src\pythian>set ORACLE_HOME=d:\lib\instantclient_10_2
|
|
|
|
D:\cygwin\home\andyh\src\pythian>set NLS_LANG=.WE8ISO8859P15
|
|
|
|
D:\cygwin\home\andyh\src\pythian>set PATH=d:\lib\instantclient_10_2;D:\Program F
|
|
iles\Microsoft Visual Studio .NET 2003\Common7\IDE;D:\Program Files\Microsoft Vi
|
|
sual Studio .NET 2003\VC7\BIN;D:\Program Files\Microsoft Visual Studio .NET 2003
|
|
\Common7\Tools;D:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Tools\
|
|
bin\prerelease;D:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Tools\
|
|
bin;D:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\bin;C:\WINNT\Mic
|
|
rosoft.NET\Framework\v1.1.4322;d:\Perl\bin\;C:\WINNT\system32;C:\WINNT;C:\WINNT\
|
|
System32\Wbem;D:\Program Files\Microsoft SDK\Bin;D:\Program Files\Microsoft SDK\
|
|
Bin\WinNT
|
|
|
|
D:\cygwin\home\andyh\src\pythian>set ORACLE_USERID=test/test@test102
|
|
|
|
D:\cygwin\home\andyh\src\pythian>perl Makefile.PL
|
|
|
|
4/27/04 -- Jeff Urlwin
|
|
|
|
Do not untar this distribution in a directory with spaces. This will not work.
|
|
|
|
i.e. C:\Program Files\ORacle\DBD Oracle Distribution is bad while
|
|
c:\dev\dbd-oracle-1.15 is good ;)
|
|
|
|
9/14/02 -- Michael Chase
|
|
|
|
Makefile.PL uses Win32::TieRegistry or Win32::Registry to find the
|
|
current Oracle Home directory if the ORACLE_HOME environment variable
|
|
is not set. If neither module is installed, you must set ORACLE_HOME
|
|
before running Makefile.PL. Since the registry location of the current
|
|
Oracle Home is in different locations in different Oracle versions,
|
|
it is usually safer to set ORACLE_HOME before running Makefile.PL.
|
|
|
|
=head1 AUTHORS
|
|
|
|
=over 4
|
|
|
|
=item *
|
|
|
|
Tim Bunce <timb@cpan.org>
|
|
|
|
=item *
|
|
|
|
John Scoles <byterock@cpan.org>
|
|
|
|
=item *
|
|
|
|
Yanick Champoux <yanick@cpan.org>
|
|
|
|
=item *
|
|
|
|
Martin J. Evans <mjevans@cpan.org>
|
|
|
|
=back
|
|
|
|
=head1 COPYRIGHT AND LICENSE
|
|
|
|
This software is copyright (c) 2019, 2014, 2013, 2012, 2011, 2010 by Tim Bunce.
|
|
|
|
This is free software; you can redistribute it and/or modify it under
|
|
the same terms as the Perl 5 programming language system itself.
|
|
|
|
=cut
|