web-dev-qa-db-ja.com

LinuxでPerlDBIとDBDを構成する

私はPerlを初めて使用し、Linux OEL5xサーバーで作業しています。 Oracle接続用にPerlDBモジュール(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

/usr/lib64/Perl5/5.8.8/x86_64-linux-thread-multi/DBD/DBD-Oracle-1.50からDBDforOracleをインストールしました

手順を確認して、間違っている場合は修正してください。

観察:

$ 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モジュールをインストールしようとした方法です:

  1. Oracle用のファイルDBD1.50をダウンロードします
  2. /usr/lib64/Perl5/5.8.8/x86_64-linux-thread-multi/DBDにコピーします
  3. 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 [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?)
1
Balualways

これはかなり古いバージョンのPerl(2006年1月にリリース)です。各コンポーネントの同様のバージョンで動作するようになりましたが、ビルドテストに合格することはありませんでした。 LD_LIBRARY_PATH(一部のシステムは64ビットバージョンを使用)とOracle_HOMEに加えて、これを機能させるには、デフォルトの文字セットとロケールに注意する必要がありました。複数の家を持つことにも注意してください。最後に、OracleのInstant Clientを個別にインストールし、tnsnamesを使用して実インスタンスを定義しました。

後で新しいソフトウェアでこれをやり直すことは、非常によく似たシステムではるかに簡単でした。したがって、可能であればアップグレードするか、より単純な環境の場合はインスタントクライアントを使用してください。

1
igelkott

DBD :: Oracleのインストール方法 について書いたこの記事を読んでください。

DBD :: Oracle CPANモジュールをインストールするために必要なすべての手順が含まれていますが、これは簡単なインストールではありません。目的は、頭痛を軽減し、それを反復可能なプロセスに変えることです。

それがお役に立てば幸いです。また、すばらしいPerlコミュニティに貢献させてください。

0
Gianluca Casati