Configure Perl DBI e DBD no Linux

1

Eu sou novo no Perl e trabalho em um servidor Linux OEL 5x. Eu estou tentando configurar os módulos Perl DB para conectividade Oracle (módulos DBD e DBI). Alguém pode me ajudar no processo de instalação?

Eu tentei o CPAN não deu certo. Qualquer ajuda seria apreciada. Não tenho certeza se preciso inicializar qualquer variável diferente de $LD_LIBRARY_PATH e $ORACLE_HOME

Estas são minhas observações:

PROBLEMA ::                 Estou recebendo o seguinte problema ao usar o módulo DBI para se conectar ao Oracle:

install_driver(Oracle) failed: Can't locate loadable object for module DBD::Oracle in @INC (@INC contains: /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/5.8.8 .) at (eval 3) line 3
Compilation failed in require at (eval 3) line 3.
Perhaps a module that DBD::Oracle requires hasn't been fully installed
at connectdb.pl line 57

Eu tinha instalado o DBD para o oracle em /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/DBD/DBD-Oracle-1.50

Poderia, por favor, dar uma olhada nos passos e me corrigir se eu estiver errado:

Observações:

$ echo $LD_LIBRARY_PATH
/opt/CA/UnicenterAutoSysJM/autosys/lib:/opt/CA/SharedComponents/Csam/SockAdapter/lib:/opt/CA/SharedComponents/ETPKI/lib:/opt/CA/CAlib
$ echo $ORACLE_HOME
/usr/local/oracle/ORA

Foi assim que tentei instalar o módulo DBD:

  1. Faça o download do arquivo DBD 1.50 para Oracle
  2. Copiar para /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/DBD
  3. Untar e Makefile.PL

.

Message:  Using DBI 1.52 (for perl 5.008008 on x86_64-linux-thread-multi) installed in /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi/auto/DBI/

Configuring DBD::Oracle for perl 5.008008 on linux (x86_64-linux-thread-multi)

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

Installing on a linux, Ver#2.6
Using Oracle in /opt/oracle/product/10.2
DEFINE _SQLPLUS_RELEASE = "1002000400" (CHAR)
Oracle version 10.2.0.4 (10.2)
Found /opt/oracle/product/10.2/rdbms/demo/demo_rdbms.mk
Found /opt/oracle/product/10.2/rdbms/demo/demo_rdbms64.mk
Found /opt/oracle/product/10.2/rdbms/lib/ins_rdbms.mk
Using /opt/oracle/product/10.2/rdbms/demo/demo_rdbms.mk
Your LD_LIBRARY_PATH env var is set to '/usr/local/oracle/ORA/lib:/usr/dt/lib:/usr/openwin/lib:/usr/local/oracle/ORA/ows/cartx/wodbc/1.0/util/lib:/usr/local/oracle/ORA/lib:/usr/local/sybase/OCS-12_0/lib:/usr/local/sybase/lib:/home/oracle/jdbc/jdbcoci73/lib:./'
WARNING: Your LD_LIBRARY_PATH env var doesn't include '/opt/oracle/product/10.2/lib' but probably needs to.
Reading /opt/oracle/product/10.2/rdbms/demo/demo_rdbms.mk
Reading /usr/local/oracle/ORA/rdbms/lib/env_rdbms.mk

Attempting to discover Oracle OCI build rules
sh: make: command not found
by executing: [make -f /opt/oracle/product/10.2/rdbms/demo/demo_rdbms.mk build ECHODO=echo ECHO=echo GENCLNTSH='echo genclntsh' CC=true OPTIMIZE= CCFLAGS= EXE=DBD_ORA_EXE OBJS=DBD_ORA_OBJ.o]
WARNING: Oracle build rule discovery failed (32512)
Add path to make command into your PATH environment variable.
Oracle oci build prolog:
    [sh: make: command not found]
Oracle oci build command:
    []
WARNING: Unable to interpret Oracle build commands from /opt/oracle/product/10.2/rdbms/demo/demo_rdbms.mk.
(Will continue by using fallback approach.)
Please report this to [email protected]. See README for what to include.

Found header files in /opt/oracle/product/10.2/rdbms/public.

client_version=10.2


DEFINE= -Wall -Wno-comment -DUTF8_SUPPORT -DORA_OCI_VERSION=\"10.2.0.4\" -DORA_OCI_102


Checking for functioning wait.ph


System: perl5.008008 linux ca-build9.us.oracle.com 2.6.20-1.3002.fc6xen #1 smp thu apr 30 18:08:39 pdt 2009 x86_64 x86_64 x86_64 gnulinux
Compiler:   gcc -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm
Linker:     not found
Sysliblist: -ldl -lm -lpthread -lnsl -lirc
Oracle makefiles would have used these definitions but we override them:
  CC:       cc
  CFLAGS:   $(GFLAG) $(OPTIMIZE) $(CDEBUG) $(CCFLAGS) $(PFLAGS)\
    $(SHARED_CFLAG) $(USRFLAGS)
       [$(GFLAG) -O3 $(CDEBUG) -m32 $(TRIGRAPHS_CCFLAGS) -fPIC -I/usr/local/oracle/ORA/rdbms/demo -I/usr/local/oracle/ORA/rdbms/public -I/usr/local/oracle/ORA/plsql/public -I/usr/local/oracle/ORA/network/public -DLINUX -D_GNU_SOURCE -D_LARGEFILE64_SOURCE=1 -D_LARGEFILE_SOURCE=1 -DSLTS_ENABLE -DSLMXMX_ENABLE -D_REENTRANT -DNS_THREADS -fno-strict-aliasing $(LPFLAGS) $(USRFLAGS)]
  build:     $(CC) $(ORALIBPATH) -o $(EXE) $(OBJS) $(OCISHAREDLIBS)
       [ cc -L$(LIBHOME) -L/usr/local/oracle/ORA/rdbms/lib/ -o $(EXE) $(OBJS) -lclntsh     $(EXPDLIBS) $(EXOSLIBS) -ldl -lm -lpthread -lnsl -lirc -ldl -lm $(USRLIBS) -lpthread]
  LDFLAGS:  $(LDFLAGS32)
       [-m32 -o $@ -L/usr/local/oracle/ORA/rdbms//lib32/ -L/usr/local/oracle/ORA/lib32/ -L/usr/local/oracle/ORA/lib32/stubs/]
Linking with /usr/local/oracle/ORA/rdbms/lib/defopt.o  -lclntsh -ldl -lm -lpthread -lnsl -lirc -ldl -lm -lpthread [from $(DEF_OPT) $(OCISHAREDLIBS)]

Checking if your kit is complete...
Looks good
LD_RUN_PATH=/usr/local/oracle/ORA/lib
Using DBD::Oracle 1.50.
Using DBD::Oracle 1.50.
Using DBI 1.52 (for perl 5.008008 on x86_64-linux-thread-multi) installed in /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi/auto/DBI/
Writing Makefile for DBD::Oracle
Writing MYMETA.yml and MYMETA.json

***  If you have problems...
     read all the log printed above, and the README and README.help.txt files.
     (Of course, you have read README by now anyway, haven't you?)
    
por Balualways 12.09.2012 / 22:21

2 respostas

1

Essa é uma versão bem antiga do Perl (lançada em janeiro de 2006). Consegui trabalhar com versões semelhantes de cada componente, mas nunca passou nos testes de compilação. Além de seu LD_LIBRARY_PATH (alguns sistemas usam uma versão de 64 bits) e ORACLE_HOME, tive que ter cuidado com o conjunto de caracteres padrão e a localidade para que isso funcionasse. Tenha cuidado também de ter várias casas. No final, eu instalei o Oracle Instant Client separadamente e defini a instância real através de tnsnames.

Refazer isso mais tarde com o software mais recente foi muito mais fácil em um sistema muito semelhante. Portanto, faça upgrade, se possível, ou use um Instant Client para um ambiente mais simples.

    
por 24.02.2013 / 19:35
0

por favor leia este artigo que escrevi com sobre Como instalar o DBD :: Oracle .

Ele contém todas as etapas necessárias para instalar o módulo DBD :: Oracle CPAN, que não é uma instalação simples. O objetivo é reduzir a dor de cabeça e transformá-la em um processo repetitivo.

Espero que possa ajudar, e também deixe-me contribuir de volta para a grande comunidade Perl.

    
por 22.12.2014 / 14:53