.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "DBD::Oracle::Troubleshooting::Linux 3pm" .TH DBD::Oracle::Troubleshooting::Linux 3pm "2019-01-06" "perl v5.28.1" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" DBD::Oracle::Troubleshooting::Linux \- Tips and Hints to Troubleshoot DBD::Oracle on Linux .SH "VERSION" .IX Header "VERSION" version 1.76 .SH "SELinux and httpd" .IX Header "SELinux and httpd" If SELinux is running, it can prevents DBD::Oracle running in an Apache process to load shared libraries it requires (libclntsh.so or libnnz12.so). A typical symptom is a line like the following in the Apache error logs: .PP .Vb 4 \& [Tue Apr 17 13:22:45 2012] [error] Can\*(Aqt load \*(Aq.../DBD/Oracle/Oracle.so\*(Aq for \& module DBD::Oracle: libnnz11.so: cannot enable executable stack as shared \& object requires: Permission denied at .../DynaLoader.pm line 190.\en at \& .../startup.pl line 17\enCompilation failed in require at ... .Ve .PP The fix: .PP .Vb 1 \& /usr/sbin/setsebool \-P httpd_execmem .Ve .SH "Installing with Instantclient .rpm files." .IX Header "Installing with Instantclient .rpm files." Nothing special with this you just have to set up you permissions as follows; .PP 1) Have permission for \s-1RWE\s0 on '/usr/lib/oracle/10.2.0.3/client/' or the other directory where you RPMed to .PP 2) Set export ORACLE_HOME=/usr/lib/oracle/10.2.0.3/client .PP 3) Set export LD_LIBRARY_PATH=$ORACLE_HOME/lib .PP 4) If you plan to use tnsnames to connect to remote servers and your tnsnames.ora file is not in \f(CW$ORACLE_HOME\fR/network/admin, you will need to Export TNS_ADMIN=dir to point DBD::Oracle to where your tnsnames.ora file is .SH "undefined symbol: _\|_cmpdi2 comes up when Oracle isn't properly linked to the libgcc.a library." .IX Header "undefined symbol: __cmpdi2 comes up when Oracle isn't properly linked to the libgcc.a library." In version 8, this was corrected by changing the \s-1SYSLIBS\s0 entry in \&\f(CW$ORACLE_HOME\fR/bin/genclntsh to include \&\*(L"\-L/usr/lib/gcc\-lib/i386\-redhat\-linux/3.2 \-lgcc\*(R". .PP I had tried this with no success as when this program was then run, the error \*(L"unable to find libgcc\*(R" was generated. Of course, this was the library I was trying to describe! .PP It turns out that now it is necessary to edit the same file and append \&\*(L"`gcc \-print\-libgcc\-file\-name`\*(R" (including the backquotes!). If you do this and then run \*(L"genclntsh\*(R", the libclntsh is properly generated and the linkage with DBD::Oracle proceeds properly. .SH "cc1: invalid option `tune=pentium4'"" error" .IX Header "cc1: invalid option `tune=pentium4'"" error" If you get the above it seems that either your Perl or \s-1OS\s0 where compiled with a different version of \s-1GCC\s0 or the \s-1GCC\s0 that is on your system is very old. .PP No real problem with the above however you will have to .PP 1) run Perl Makefile.PL .PP 2) edit the Makefile and remove the offending '\-mtune=pentium4' text .PP 3) save and exit .PP 4) do the make install and it should work fine for you .SH "Oracle 9i Lite" .IX Header "Oracle 9i Lite" The advice is to use the regular Oracle9i not the lite version. .PP Another great source of help was: http://www.puschitz.com/InstallingOracle9i.html .PP just getting 9i and 9i lite installed. I use fvwm2(nvidia X driver) as a window manager which does not work with the 9i install program, works fine with the default Gnomish(nv X driver), it could have been the X driver too. .PP With Redhat9 it is \s-1REAL\s0 important to set \s-1LD_ASSUME_KERNEL\s0 to 2.4.1. .PP I didn't try this but it may be possible to install what is needed by only downloading the first disk saving some 1.3GB of download fun. .PP I installed a custom install from the client group. The packages I installed are the Programmers section and sqlplus. I noticed that the Pro*C when on as a result of the checking the Programmers section I assume. .PP Once Oracle was installed properly the DBD::Oracle install went as smooth as just about every other \s-1CPAN\s0 module. .SH "Oracle 10g Instantclient" .IX Header "Oracle 10g Instantclient" The Makefile.PL will now work for Oracle 10g Instantclient. To have both the Compile and the test.pl to work you must first have the \s-1LD_LIBRARY_PATH\s0 correctly set to your \&\*(L"instantclient\*(R" directory. (http://www.oracle.com/technology/tech/oci/instantclient/instantclient.html) .PP The present version of the make creates a link on your \*(L"instantclient\*(R" directory as follows \&\*(L"ln \-s libclntsh.so.10.1 libclntsh.so\*(R". It is needed for both the makefile creation and the compile but is not need for the test.pl. It should be removed after the compile. .PP If the Makefile.PL or make fails try creating this link directly in your \*(L"instantclient\*(R" directory. .SH "Oracle Database 10g Express Edition 10.2" .IX Header "Oracle Database 10g Express Edition 10.2" To get 10Xe to compile correctly I had to add \f(CW$ORACLE_HOME\fR/lib to the \s-1LD_LIBRARY_PATH\s0 as you would for an install against 10g Standard Edition, Standard Edition One, or Enterprise Edition .SH "UTF8 bug in Oracle 9.2.0.5.0 and 9.2.0.7.0" .IX Header "UTF8 bug in Oracle 9.2.0.5.0 and 9.2.0.7.0" DBD::Oracle seems to hit some sort of bug with the above two versions of \s-1DB.\s0 The bug seems to hit when you when the Oracle database charset: \s-1US7ASCII\s0 and the Oracle nchar charset: \s-1AL16UTF16\s0 and it has also been reported when the Oracle database charset: \s-1WE8ISO8850P1\s0 Oracle nchar charset: \s-1AL32UTF16.\s0 .PP So far there is no patch for this but here are some workarounds .PP .Vb 3 \& use DBD::Oracle qw( SQLCS_IMPLICIT SQLCS_NCHAR ); \& ... \& $sth\->bind_param(1, $value, { ora_csform => SQLCS_NCHAR }); \& \& or this way \& \& $dbh\->{ora_ph_csform} = SQLCS_NCHAR; # default for all future placeholders \& \& or this way \& \& utf8::downgrade($parameter, 1); .Ve .SH "AUTHORS" .IX Header "AUTHORS" .IP "\(bu" 4 Tim Bunce .IP "\(bu" 4 John Scoles .IP "\(bu" 4 Yanick Champoux .IP "\(bu" 4 Martin J. Evans .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" This software is copyright (c) 2018, 2014, 2013, 2012, 2011, 2010 by Tim Bunce. .PP This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.