4 Replies Latest reply on Mar 6, 2009 8:03 AM by 658048

    DBD::Oracle 'make' error

    581290
      Guys,

      I am new to this forum, if I have not followed any rules I apologise for that.

      Here is my problem:

      Oracle in server: Oracle 9.2
      Red hat linux: 2.6.9
      Windows XP
      DBD::Oracle: 1.19

      I am having oracle installed in a server system. I installed sqldeveloper in my windows XP system and I connected to the oracle using host and tcp/ip port. It was working fine. And I used Perl DBI module to connect to the oracle and I have done my job without any problem in windows.

      The same scenario I want in my Red hat linux system. I am connecting to a linux system using Putty through telnet. I installed instant client in my linux system to connect to the Oracle which is in the server. When I installed DBD::Oracle, I am getting following error when I did "make" after perl makeinstall-cleint.PL.

      Is there any Idea to avoid this problem or any alternate solution to above scenario?
      ====================
      ...............
      ........
      /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/auto/DBI/Driver_xst.h:100: error: dereferencing pointer to incomplete type
      Oracle.xsi: In function `XS_DBD__Oracle__db_selectall_arrayref':
      Oracle.xsi:136: error: dereferencing pointer to incomplete type
      Oracle.xsi: In function `XS_DBD__Oracle__db_selectrow_arrayref':
      Oracle.xsi:174: error: dereferencing pointer to incomplete type
      Oracle.xsi: In function `XS_DBD__Oracle__db_commit':
      Oracle.xsi:253: error: dereferencing pointer to incomplete type
      Oracle.xsi:253: error: dereferencing pointer to incomplete type
      Oracle.xsi: In function `XS_DBD__Oracle__db_rollback':
      Oracle.xsi:263: error: dereferencing pointer to incomplete type
      Oracle.xsi:263: error: dereferencing pointer to incomplete type
      Oracle.xsi: In function `XS_DBD__Oracle__db_disconnect':
      Oracle.xsi:273: error: dereferencing pointer to incomplete type
      Oracle.xsi:278: error: dereferencing pointer to incomplete type
      Oracle.xsi:278: error: dereferencing pointer to incomplete type
      ...
      ...
      ...
      Oracle.xs:372: error: `OCI_SUCCESS' undeclared (first use in this function)
      Oracle.xs:373: error: dereferencing pointer to incomplete type
      Oracle.c: In function `boot_DBD__Oracle':
      Oracle.c:1612: error: `SQLCS_IMPLICIT' undeclared (first use in this function)
      Oracle.c:1624: error: `SQLCS_NCHAR' undeclared (first use in this function)
      Oracle.xsi:21: error: invalid application of `sizeof' to incomplete type `/usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/auto/DBI/DBIXS.h'
      Oracle.xsi:22: error: invalid application of `sizeof' to incomplete type `/usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/auto/DBI/DBIXS.h'
      Oracle.xsi:23: error: invalid application of `sizeof' to incomplete type `/usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/auto/DBI/DBIXS.h'
      {standard input}: Assembler messages:
      {standard input}:88: Warning: size of "name" is already 4; not changing to 1
      make: *** [Oracle.o] Error 1

      Thanks & Regards,
      Prasad
        • 1. Re: DBD::Oracle 'make' error
          Laurenz Albe
          Could you post the output of 'perl Makefile.PL'?

          Yours,
          Laurenz Albe
          • 2. Re: DBD::Oracle 'make' error
            581290
            Hi,

            Thanks for your reply.

            When I ran >perl Makefile.PL and >perl Makefile-instantclient.PL I got the following errors.

            I followed the instructions given in one of the site. They asked to place Makefile-instantclient.PL in DBD::Oracle folder and another instantclient-config file in /usr/bin. I did the same but I am getting errors.

            Could you help me in solving this issue.

            ====================

            [root@localhost DBD-Oracle-1.19]# perl Makefile.PL
            Using DBI 1.56 (for perl 5.008005 on i386-linux-thread-multi) installed in /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/auto/DBI/

            Configuring DBD::Oracle for perl 5.008005 on linux (i386-linux-thread-multi)

            Remember to actually READ the README file! Especially if you have any problems.

            The ORACLE_HOME environment variable value (/root/usr/local/oracle) 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!



            ====================================

            [root@localhost DBD-Oracle-1.19]# perl Makefile-instantclient.PL
            Using DBI 1.56 (for perl 5.008005 on i386-linux-thread-multi) installed in /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/auto/DBI/
            Note (probably harmless): No library found for -lclntsh
            Note (probably harmless): No library found for -lnnz10
            Note (probably harmless): No library found for -locci
            Note (probably harmless): No library found for -lociei
            Note (probably harmless): No library found for -locijdbc10
            Using DBI 1.56 (for perl 5.008005 on i386-linux-thread-multi) installed in /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/auto/DBI/
            Writing Makefile for DBD::Oracle
            • 3. Re: DBD::Oracle 'make' error
              Laurenz Albe
              Hmm... I just downloaded DBD::Oracle 1.19 from http://search.cpan.org/CPAN/authors/id/P/PY/PYTHIAN/DBD-Oracle-1.19.tar.gz and there is no Makefile-instantclient.PL included...
              Where did you get your DBD::Oracle from?

              However, it builds nicely on RHEL 3 with Instant Client 10.2.0.3 (Instant Client Basic Lite + sqlplus + skd installed):

              $ export ORACLE_HOME=/home/laurenz/instantclient_10_2
              $ export LD_LIBRARY_PATH=/home/laurenz/instantclient_10_2
              $ perl Makefile.PL
              Using DBI 1.48 (for perl 5.008 on i386-linux-thread-multi) installed in /usr/lib/perl5/site_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 /home/laurenz/instantclient_10_2
              DEFINE SQLPLUSRELEASE = "1002000300" (CHAR)
              Oracle version 10.2.0.3 (10.2)
              Looks like an Instant Client installation, okay
              Your LD_LIBRARY_PATH env var is set to '/home/laurenz/instantclient_10_2'
              Oracle sysliblist:
              Found header files in /home/laurenz/instantclient_10_2/sdk/include.

              Checking for functioning wait.ph
              Scalar found where operator expected at (eval 179) line 1, near "'int' $__val"
              (Missing operator before $__val?)

              System: perl5.008 linux hs20-bc1-4.build.redhat.com 2.6.9-22.18.bz155725.elsmp #1 smp thu nov 17 15:34:08 est 2005 i686 i686 i386 gnulinux
              Compiler: gcc -O2 -g -pipe -march=i386 -mcpu=i686 -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBUGGING -fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm
              Linker: /usr/bin/ld
              Sysliblist:
              Linking with -lclntsh.

              LD_RUN_PATH=/home/laurenz/instantclient_10_2
              Using DBD::Oracle 1.19.
              Using DBD::Oracle 1.19.
              Using DBI 1.48 (for perl 5.008 on i386-linux-thread-multi) installed in /usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi/auto/DBI/
              Writing Makefile for DBD::Oracle

              And 'make' runs without problems.

              Yours,
              Laurenz Albe
              • 4. Re: DBD::Oracle 'make' error
                658048
                (I know this is an old post, but it might help someone else like myself, who had a spot of trouble with DBD:Oracle installation :))

                I did not have to install per se the instant client or the SDK, I just unzipped both to my home directory, copied the sdk subfolder from the sdk-verion over to my /home/user/instantclient_10_2 -directory and pointed ORACLE_HOME to /home/user/instantclient_10_2

                That made make and install go through and it works (although I have not really tested it other than seeing that it throws no errors upon simple usage)

                ( I am on Solaris 10 )