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`