一、安裝以前,先檢查一下當前系統中Perl的版本linux
[root@arcerzhang ~]# perl -v This is perl, v5.10.1 (*) built for x86_64-linux-thread-multi Copyright 1987-2009, Larry Wall Perl may be copied only under the terms of either the Artistic License or the GNU General Public License, which may be found in the Perl 5 source kit. Complete documentation for Perl, including FAQ lists, should be found on this system using "man perl" or "perldoc perl". If you have access to the Internet, point your browser at http://www.perl.org/, the Perl Home Page.
二、執行腳本,驗證當前系統中安裝了哪些Perl modules?sql
#!/usr/bin/perl use strict; use ExtUtils::Installed; my $inst=ExtUtils::Installed->new(); my @modules = $inst->modules(); foreach(@modules){ my $ver = $inst->version($_) || "???"; printf("%-12s -- %s\n",$_,$ver); } exit;
[root@arcerzhang scripts]# /root/scripts/chk2.pl DBI -- 1.627 Perl -- 5.10.1
三、安裝模塊DBI-1.627.tar.gz,具體安裝包自行到官方網站下載(www.cpan.org)bootstrap
具體安裝步驟centos
安裝完成後,能夠再次執行驗證腳本,查看時候已經安裝成功DBI模塊oracle
[root@arcerzhang scripts]# /root/scripts/chk2.pl DBI -- 1.627 Perl -- 5.10.1
四、安裝模塊DBD-Oracle-1.64.tar.gz,具體安裝包自行到官方網站下載(www.cpan.org) ide
首先在安裝DBD-Oracle-1.64.tar.gz以前,須要先安裝oracle 的example的包; 網站
[root@arcerzhang DBD-Oracle-1.64]# export ORACLE_HOME='/u01/oracle' [root@arcerzhang DBD-Oracle-1.64]# export ORACLE_USERID='SCOTT/TIGER@DB234' [root@arcerzhang DBD-Oracle-1.64]# export path=$ORACLE_HOME/bin:$PATH [root@arcerzhang DBD-Oracle-1.64]# export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
[root@arcerzhang DBD-Oracle-1.64]# perl Makefile.PL Multiple copies of Driver.xst found in: /usr/local/lib64/perl5/auto/DBI/ /usr/lib64/perl5/auto/DBI/ at Makefile.PL line 39 Using DBI 1.627 (for perl 5.010001 on x86_64-linux-thread-multi) installed in /usr/local/lib64/perl5/auto/DBI/ Configuring DBD::Oracle for perl 5.010001 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 /u01/oracle DEFINE _SQLPLUS_RELEASE = "1102000100" (CHAR) Oracle version 11.2.0.1 (11.2) Found /u01/oracle/rdbms/demo/demo_rdbms.mk Found /u01/oracle/rdbms/demo/demo_rdbms64.mk Found /u01/oracle/rdbms/lib/ins_rdbms.mk Using /u01/oracle/rdbms/demo/demo_rdbms.mk Your LD_LIBRARY_PATH env var is set to '/u01/oracle/lib:' Reading /u01/oracle/rdbms/demo/demo_rdbms.mk Reading /u01/oracle/rdbms/lib/env_rdbms.mk Attempting to discover Oracle OCI build rules gcc -c -o DBD_ORA_OBJ.o DBD_ORA_OBJ.c by executing: [make -f /u01/oracle/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] Oracle oci build command: [true -L/u01/oracle/lib/ -L/u01/oracle/rdbms/lib/ -o DBD_ORA_EXE DBD_ORA_OBJ.o -lclntsh `cat /u01/oracle/lib/sysliblist` -ldl -lm -lpthread] Found header files in /u01/oracle/rdbms/public. client_version=11.2 DEFINE= -Wall -Wno-comment -DUTF8_SUPPORT -DORA_OCI_VERSION=\"11.2.0.1\" -DORA_OCI_102 -DORA_OCI_112 Checking for functioning wait.ph System: perl5.010001 linux c6b8.bsys.dev.centos.org 2.6.32-220.el6.x86_64 #1 smp tue dec 6 19:48:22 gmt 2011 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 -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 Linker: /usr/bin/ld Sysliblist: -ldl -lm -lpthread -lnsl -lirc -lipgo -lsvml Oracle makefiles would have used these definitions but we override them: CC: $(COMPDIR)/bin/gcc CFLAGS: $(GFLAG) $(OPTIMIZE) $(CDEBUG) $(CCFLAGS) $(PFLAGS)\ $(SHARED_CFLAG) $(USRFLAGS) [$(GFLAG) -O3 $(CDEBUG) -m32 -trigraphs -fPIC -I/u01/oracle/rdbms/demo -I/u01/oracle/rdbms/public -I/u01/oracle/plsql/public -I/u01/oracle/network/public -DLINUX -D_GNU_SOURCE -D_LARGEFILE64_SOURCE=1 -D_LARGEFILE_SOURCE=1 -DSLTS_ENABLE -DSLMXMX_ENABLE -D_REENTRANT -DNS_THREADS -D__NO_CTYPE=1 -DLDAP_CM $(LPFLAGS) $(PLSQLNCGFLAGS) $(USRFLAGS)] LDFLAGS: $(LDFLAGS32) [-m32 -o $@ -L/u01/oracle/rdbms//lib32/ -L/u01/oracle/lib32/ -L/u01/oracle/lib32/stubs/] Linking with OTHERLDFLAGS = -L/u01/oracle/lib/ -L/u01/oracle/rdbms/lib/ -lclntsh `cat /u01/oracle/lib/sysliblist` -ldl -lm -lpthread [from 'build' rule] Checking if your kit is complete... Looks good LD_RUN_PATH=/u01/oracle/lib:/u01/oracle/rdbms/lib Using DBD::Oracle 1.64. Using DBD::Oracle 1.64. Multiple copies of Driver.xst found in: /usr/local/lib64/perl5/auto/DBI/ /usr/lib64/perl5/auto/DBI/ at Makefile.PL line 1789 Using DBI 1.627 (for perl 5.010001 on x86_64-linux-thread-multi) installed in /usr/local/lib64/perl5/auto/DBI/ Writing Makefile for DBD::Oracle *** 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?)
[root@arcerzhang DBD-Oracle-1.64]# make cp lib/DBD/Oracle/Troubleshooting/Cygwin.pod blib/lib/DBD/Oracle/Troubleshooting/Cygwin.pod cp lib/DBD/Oracle.pm blib/lib/DBD/Oracle.pm cp Oracle.h blib/arch/auto/DBD/Oracle/Oracle.h cp lib/DBD/Oracle/Troubleshooting/Vms.pod blib/lib/DBD/Oracle/Troubleshooting/Vms.pod cp lib/DBD/Oracle/Troubleshooting/Hpux.pod blib/lib/DBD/Oracle/Troubleshooting/Hpux.pod cp lib/DBD/Oracle/Troubleshooting/Linux.pod blib/lib/DBD/Oracle/Troubleshooting/Linux.pod cp lib/DBD/Oracle/GetInfo.pm blib/lib/DBD/Oracle/GetInfo.pm cp lib/DBD/Oracle/Troubleshooting.pod blib/lib/DBD/Oracle/Troubleshooting.pod cp dbdimp.h blib/arch/auto/DBD/Oracle/dbdimp.h cp ocitrace.h blib/arch/auto/DBD/Oracle/ocitrace.h cp lib/DBD/Oracle/Troubleshooting/Sun.pod blib/lib/DBD/Oracle/Troubleshooting/Sun.pod cp lib/DBD/Oracle/Troubleshooting/Macos.pod blib/lib/DBD/Oracle/Troubleshooting/Macos.pod cp lib/DBD/Oracle/Object.pm blib/lib/DBD/Oracle/Object.pm cp lib/DBD/Oracle/Troubleshooting/Aix.pod blib/lib/DBD/Oracle/Troubleshooting/Aix.pod cp lib/DBD/Oracle/Troubleshooting/Win64.pod blib/lib/DBD/Oracle/Troubleshooting/Win64.pod cp lib/DBD/Oracle/Troubleshooting/Win32.pod blib/lib/DBD/Oracle/Troubleshooting/Win32.pod cp mk.pm blib/arch/auto/DBD/Oracle/mk.pm /usr/bin/perl -p -e "s/~DRIVER~/Oracle/g" /usr/local/lib64/perl5/auto/DBI/Driver.xst > Oracle.xsi /usr/bin/perl /usr/share/perl5/ExtUtils/xsubpp -typemap /usr/share/perl5/ExtUtils/typemap -typemap typemap Oracle.xs > Oracle.xsc && mv Oracle.xsc Oracle.c gcc -c -I/u01/oracle/rdbms/public -I/u01/oracle/rdbms/demo -I/u01/oracle/rdbms/public -I/u01/oracle/plsql/public -I/u01/oracle/network/public -I/usr/local/lib64/perl5/auto/DBI -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -DVERSION=\"1.64\" -DXS_VERSION=\"1.64\" -fPIC "-I/usr/lib64/perl5/CORE" -Wall -Wno-comment -DUTF8_SUPPORT -DORA_OCI_VERSION=\"11.2.0.1\" -DORA_OCI_102 -DORA_OCI_112 Oracle.c gcc -c -I/u01/oracle/rdbms/public -I/u01/oracle/rdbms/demo -I/u01/oracle/rdbms/public -I/u01/oracle/plsql/public -I/u01/oracle/network/public -I/usr/local/lib64/perl5/auto/DBI -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -DVERSION=\"1.64\" -DXS_VERSION=\"1.64\" -fPIC "-I/usr/lib64/perl5/CORE" -Wall -Wno-comment -DUTF8_SUPPORT -DORA_OCI_VERSION=\"11.2.0.1\" -DORA_OCI_102 -DORA_OCI_112 dbdimp.c dbdimp.c: In function ‘ora_db_login6’: dbdimp.c:721: warning: format ‘%d’ expects type ‘int’, but argument 12 has type ‘size_t’ dbdimp.c:721: warning: format ‘%d’ expects type ‘int’, but argument 14 has type ‘size_t’ gcc -c -I/u01/oracle/rdbms/public -I/u01/oracle/rdbms/demo -I/u01/oracle/rdbms/public -I/u01/oracle/plsql/public -I/u01/oracle/network/public -I/usr/local/lib64/perl5/auto/DBI -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -DVERSION=\"1.64\" -DXS_VERSION=\"1.64\" -fPIC "-I/usr/lib64/perl5/CORE" -Wall -Wno-comment -DUTF8_SUPPORT -DORA_OCI_VERSION=\"11.2.0.1\" -DORA_OCI_102 -DORA_OCI_112 oci8.c oci8.c: In function ‘ora_blob_read_mb_piece’: oci8.c:1847: warning: format ‘%lu’ expects type ‘long unsigned int’, but argument 6 has type ‘ub4’ Running Mkbootstrap for DBD::Oracle () chmod 644 Oracle.bs rm -f blib/arch/auto/DBD/Oracle/Oracle.so gcc -shared -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic Oracle.o dbdimp.o oci8.o -L/u01/oracle/lib/ -L/u01/oracle/rdbms/lib/ -lclntsh `cat /u01/oracle/lib/sysliblist` -ldl -lm -lpthread -o blib/arch/auto/DBD/Oracle/Oracle.so \ \ chmod 755 blib/arch/auto/DBD/Oracle/Oracle.so cp Oracle.bs blib/arch/auto/DBD/Oracle/Oracle.bs chmod 644 blib/arch/auto/DBD/Oracle/Oracle.bs Manifying blib/man3/DBD::Oracle::Troubleshooting.3pm Manifying blib/man3/DBD::Oracle::Troubleshooting::Cygwin.3pm Manifying blib/man3/DBD::Oracle.3pm Manifying blib/man3/DBD::Oracle::Troubleshooting::Sun.3pm Manifying blib/man3/DBD::Oracle::Troubleshooting::Hpux.3pm Manifying blib/man3/DBD::Oracle::Troubleshooting::Macos.3pm Manifying blib/man3/DBD::Oracle::Troubleshooting::Vms.3pm Manifying blib/man3/DBD::Oracle::Object.3pm Manifying blib/man3/DBD::Oracle::Troubleshooting::Aix.3pm Manifying blib/man3/DBD::Oracle::Troubleshooting::Linux.3pm Manifying blib/man3/DBD::Oracle::Troubleshooting::Win64.3pm Manifying blib/man3/DBD::Oracle::GetInfo.3pm Manifying blib/man3/DBD::Oracle::Troubleshooting::Win32.3pm
[root@arcerzhang DBD-Oracle-1.64]# make test PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t t/000-report-versions-tiny.t .. # # # Generated by Dist::Zilla::Plugin::ReportVersions::Tiny v1.08 # perl: 5.010001 (wanted 5.006) on linux from /usr/bin/perl # # Carp => 1.11 (want any version) # Config => <undef> (want any version) # DBI => 1.627 (want 1.51) # Data::Dumper => 2.124 (want any version) # Devel::Peek => 1.04 (want any version) # DynaLoader => 1.10 (want any version) # Encode => 2.35 (want any version) # Exporter => 5.63 (want any version) # ExtUtils::MakeMaker => 6.55_02 (want 6.30) # Math::BigInt => 1.89 (want any version) # Test::More => 0.92 (want 0.88) # Thread::Semaphore => 2.09 (want any version) # strict => 1.04 (want any version) # utf8 => 1.07 (want any version) # vars => 1.01 (want any version) # version => 0.77 (want 0.9901) # warnings => 1.06 (want any version) # # Thanks for using my code. I hope it works for you. # If not, please try and include this output in the bug report. # That will help me reproduce the issue and solve your problem. # t/000-report-versions-tiny.t .. ok t/00versions.t ................ # OCI client library version: 11.2.0.1 t/00versions.t ................ 1/2 # database version: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production t/00versions.t ................ ok t/01base.t .................... ok t/10general.t ................. ok t/12impdata.t ................. ok t/14threads.t ................. ok t/15nls.t ..................... ok t/20select.t .................. ok t/21nchar.t ................... ok t/22nchar_al32utf8.t .......... ok t/22nchar_utf8.t .............. ok t/23wide_db.t ................. ok t/23wide_db_8bit.t ............ ok t/23wide_db_al32utf8.t ........ ok t/24implicit_utf8.t ........... ok t/25plsql.t ................... ok t/26exe_array.t ............... ok t/28array_bind.t .............. ok t/30long.t .................... ok t/31lob.t ..................... 1/12 DBI::db=HASH(0x1a292f0)->disconnect invalidates 1 active statement handle (either destroy statement handles or call finish on them before disconnecting) at t/31lob.t line 216. t/31lob.t ..................... ok t/31lob_extended.t ............ ok t/32xmltype.t ................. ok t/34pres_lobs.t ............... ok t/36lob_leak.t ................ ok t/38taf.t ..................... ok t/39attr.t .................... # Oracle version: 11.2.0.1.0 # client version: 11.2.0.1 t/39attr.t .................... ok t/40ph_type.t ................. ok t/50cursor.t .................. Can't determine open_cursors from v$parameter, so using default t/50cursor.t .................. ok t/51scroll.t .................. ok t/55nested.t .................. ok t/56embbeded.t ................ ok t/58object.t .................. ok t/60reauth.t .................. skipped: ORACLE_USERID_2 not defined. t/70meta.t .................... ok t/80ora_charset.t ............. ok t/rt13865.t ................... ok t/rt74753-utf8-encoded.t ...... ok All tests successful. Test Summary Report ------------------- t/31lob.t (Wstat: 0 Tests: 12 Failed: 0) TODO passed: 9-11 Files=37, Tests=1858, 24 wallclock secs ( 0.31 usr 0.12 sys + 3.28 cusr 1.57 csys = 5.28 CPU) Result: PASS
[root@arcerzhang DBD-Oracle-1.64]# make install Files found in blib/arch: installing files in blib/lib into architecture dependent library tree Installing /usr/local/lib64/perl5/auto/DBD/Oracle/ocitrace.h Installing /usr/local/lib64/perl5/auto/DBD/Oracle/Oracle.so Installing /usr/local/lib64/perl5/auto/DBD/Oracle/Oracle.h Installing /usr/local/lib64/perl5/auto/DBD/Oracle/mk.pm Installing /usr/local/lib64/perl5/auto/DBD/Oracle/Oracle.bs Installing /usr/local/lib64/perl5/auto/DBD/Oracle/dbdimp.h Installing /usr/local/lib64/perl5/DBD/Oracle.pm Installing /usr/local/lib64/perl5/DBD/Oracle/Object.pm Installing /usr/local/lib64/perl5/DBD/Oracle/Troubleshooting.pod Installing /usr/local/lib64/perl5/DBD/Oracle/GetInfo.pm Installing /usr/local/lib64/perl5/DBD/Oracle/Troubleshooting/Win32.pod Installing /usr/local/lib64/perl5/DBD/Oracle/Troubleshooting/Vms.pod Installing /usr/local/lib64/perl5/DBD/Oracle/Troubleshooting/Linux.pod Installing /usr/local/lib64/perl5/DBD/Oracle/Troubleshooting/Win64.pod Installing /usr/local/lib64/perl5/DBD/Oracle/Troubleshooting/Aix.pod Installing /usr/local/lib64/perl5/DBD/Oracle/Troubleshooting/Macos.pod Installing /usr/local/lib64/perl5/DBD/Oracle/Troubleshooting/Sun.pod Installing /usr/local/lib64/perl5/DBD/Oracle/Troubleshooting/Hpux.pod Installing /usr/local/lib64/perl5/DBD/Oracle/Troubleshooting/Cygwin.pod Installing /usr/local/share/man/man3/DBD::Oracle::GetInfo.3pm Installing /usr/local/share/man/man3/DBD::Oracle::Troubleshooting::Linux.3pm Installing /usr/local/share/man/man3/DBD::Oracle::Troubleshooting::Win64.3pm Installing /usr/local/share/man/man3/DBD::Oracle::Troubleshooting::Aix.3pm Installing /usr/local/share/man/man3/DBD::Oracle.3pm Installing /usr/local/share/man/man3/DBD::Oracle::Troubleshooting::Sun.3pm Installing /usr/local/share/man/man3/DBD::Oracle::Troubleshooting::Cygwin.3pm Installing /usr/local/share/man/man3/DBD::Oracle::Troubleshooting::Vms.3pm Installing /usr/local/share/man/man3/DBD::Oracle::Troubleshooting::Win32.3pm Installing /usr/local/share/man/man3/DBD::Oracle::Object.3pm Installing /usr/local/share/man/man3/DBD::Oracle::Troubleshooting.3pm Installing /usr/local/share/man/man3/DBD::Oracle::Troubleshooting::Hpux.3pm Installing /usr/local/share/man/man3/DBD::Oracle::Troubleshooting::Macos.3pm Appending installation info to /usr/lib64/perl5/perllocal.pod
五、驗證安裝ui
[root@arcerzhang scripts]# /root/scripts/chk2.pl DBD::Oracle -- 1.64 DBI -- 1.627 Perl -- 5.10.1