loit 发表于 2015-12-27 08:33:14

Sun Solaris Perl DBD Oracle

  
  今天遇到在
  Release: 5.10
Kernel architecture: sun4u
Application architecture: sparc
Hardware provider: Sun_Microsystems
Domain:
Kernel version: SunOS 5.10 Generic_118833-36
  
  
  oracle客户端版本:
  file sqlplus
sqlplus:      ELF 64-位 MSB 可执行 SPARCV9 版本 1,动态链接,没有除去
  
  perl版本
  perl -v
  This is perl, v5.8.3 built for sun4-solaris-thread-multi
  
  
  
  执行:perl dbi:oracle的程序提示:
  install_driver(Oracle) failed: Can't load '/opt/dc_perl/lib/site_perl/5.8.3/sun4-solaris-thread-multi/auto/DBD/Oracle/Oracle.so' for module DBD::Oracle: ld.so.1: perl: 致命的: libclntsh.so.9.0: 打开失败: 无此文件或目录 at /opt/dc_perl/lib/5.8.3/sun4-solaris-thread-multi/DynaLoader.pm line 229.
at (eval 18) line 3
Compilation failed in require at (eval 18) line 3.
Perhaps a required shared library or dll isn't installed where expected
  
  在perl –V 找到相关的@INC目录
  /opt/dc_perl/lib/site_perl/5.8.3/sun4-solaris-thread-multi/auto/DBD/Oracle
  ls
  Oracle.bs   Oracle.h      Oracle.so*    Oracle.so.8*Oracle.so.9*dbdimp.h      mk.pm         ocitrace.h
  
  
  ldd Oracle.so
      libclntsh.so.9.0 =>      (文件没有发现)
      libnsl.so.1 =>   /usr/lib/libnsl.so.1
      libsocket.so.1 =>      /usr/lib/libsocket.so.1
      libgen.so.1 =>   /usr/lib/libgen.so.1
      libdl.so.1 =>    /usr/lib/libdl.so.1
      libsched.so.1 =>         /usr/lib/libsched.so.1
      libaio.so.1 =>   /usr/lib/libaio.so.1
      librt.so.1 =>    /usr/lib/librt.so.1
      libkstat.so.1 =>         /usr/lib/libkstat.so.1
      libm.so.1 =>   /usr/lib/libm.so.1
      libc.so.1 =>   /usr/lib/libc.so.1
      libmp.so.2 =>    /usr/lib/libmp.so.2
      libmd5.so.1 =>   /usr/lib/libmd5.so.1
      libscf.so.1 =>   /usr/lib/libscf.so.1
      libdoor.so.1 =>/usr/lib/libdoor.so.1
      libuutil.so.1 =>         /usr/lib/libuutil.so.1
      libm.so.2 =>   /usr/lib/libm.so.2
      /platform/SUNW,Sun-Fire/lib/libc_psr.so.1
      /platform/SUNW,Sun-Fire/lib/libmd5_psr.so.1
  
  http://www.anysql.net/developer/perl_dbd_oracle.html 按照这个作者的指导说是Oracle客户端版本有和编译DBD:Oracle的客户端版本不一致导致,准备重新安装DBD:Oracle,但是主机上没有gcc…
  http://www.iyunv.com/os/201109/103022.html 准备按照这篇文章的指导安装gcc,发现上面的程序包不能下载。(可能是和谐的网络所致)。
  于是手工在/usr/lib目录下准备创建libclntsh.so.9.0链接文件。
  
  中间还尝试过重其他主机拷一个Oracle目录,经测试也行不通。
  最后:
  开始创建指向64的的libclntsh.so.10.1了,一直提示是64位的异常。
  后来用root用户执行 : ln -s XXXX/lib32/libclntsh.so.10.1/usr/lib/libclntsh.so.9.0
  
  居然能用了,当真是误打误撞。^_^
  
  
  
  ldd `which sysresv`
页: [1]
查看完整版本: Sun Solaris Perl DBD Oracle