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.2cto.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`

posted @ 2013-07-19 16:50  小白快跑  阅读(497)  评论(0编辑  收藏  举报