Настройте Perl DBI и DBD в Linux
Я новичок в Perl и работаю на сервере Linux OEL 5x. Я пытаюсь настроить модули Perl DB для подключения к Oracle (модули DBD и DBI). Кто-нибудь может мне помочь в процедуре установки?
Я пробовал CPAN, на самом деле не сработало. Любая помощь будет оценена. Я не совсем уверен, что мне нужно инициализировать любые переменные, кроме $LD_LIBRARY_PATH
а также $ORACLE_HOME
Вот мои наблюдения:
ПРОБЛЕМА:: Я получаю следующую проблему при использовании модуля DBI для подключения к 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
Я установил DBD для оракула из /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/DBD/DBD-Oracle-1.50
Не могли бы вы взглянуть на шаги и исправить меня, если я ошибаюсь:
Замечания:
$ 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
Вот как я пытался установить модуль DBD:
- Скачать файл DBD 1.50 для Oracle
- Скопируйте в /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/DBD
- Untar и 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 dbi-users@perl.org. 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?)
2 ответа
Это довольно старая версия Perl (выпущена в январе 2006 года). Мне удалось заставить работать одинаковые версии каждого компонента, но он никогда не проходил тесты сборки. Помимо ваших LD_LIBRARY_PATH (некоторые системы используют 64-битную версию) и ORACLE_HOME, мне пришлось быть осторожным с набором символов и локалью по умолчанию, чтобы заставить это работать. Будьте осторожны, имея несколько домов. В конце я установил Oracle Instant Client отдельно и определил реальный экземпляр через tnsnames.
Повторять это позже с более новым программным обеспечением было намного легче в очень похожей системе. Поэтому обновите, если это возможно, или используйте Instant Client для более простой среды.
Пожалуйста , прочитайте эту статью о том, как установить DBD:: Oracle.
Он содержит все шаги, необходимые для установки модуля DBD::Oracle CPAN, что не является простой установкой. Цель состоит в том, чтобы уменьшить головную боль и превратить ее в повторяющийся процесс.
Надеюсь, что это поможет, а также позвольте мне внести свой вклад в великое сообщество Perl.