背景

server:Oracle11g

      远程支撑team做一个多年前写的crontab计划任务迁移,遇到Oracle 简易客户端连接server的报错。

也是够奇葩的,首先是因为信息汇报错误客户端安装了高版本12c。

因为需要使用到sqlldr,所以network、lib、、rdbms、oracore都是从server上面拷贝的。

然后server是oracle11g,导致sqlplus连接server时候读取共享库的so是11g的。经过数分钟的排查才发现,客户端版本不一致,真实的坑。

问题1:libclntsh.so.12.1 not found

使用ldd查看链接发现没找到,再一看lib里面的so。才知道原来是版本不一致。总结沟通真重要

[oracle@oracle ~]$ ldd bin/sqlplus
linux-vdso.so.1 => (0x00007ffe5cd0e000)
libsqlplus.so => not found
libclntsh.so.12.1 => not found
libnnz12.so => not found
libdl.so.2 => /lib64/libdl.so.2 (0x00007fd768dd3000)
libm.so.6 => /lib64/libm.so.6 (0x00007fd768ad0000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fd7688b4000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x00007fd76869b000)
libc.so.6 => /lib64/libc.so.6 (0x00007fd7682d7000)
/lib64/ld-linux-x86-64.so.2 (0x00007fd768ff3000)

 

在修复链接库后使用功能sqlplus再次报错如下:

[oracle@oracle ~]$ sqlplus / as sysdba
Error 6 initializing SQL*Plus
SP2-0667: Message file sp1<lang>.msb not found
SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory

问题2:SP2-0667

根据提示明显的是msb文件not found,还有ORACLE_HOME环境变量错误。

SP2-0667: Message file sp1<lang>.msb not found
SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory

首先排查变量,发现没有问题

[oracle@oracle ~]$ echo $ORACLE_HOME
/u01/app/oracle/product/11.2.0/client

使用oerr查看0667详细报错,没有此文件

[oracle@oracle ~]$ oerr sp2 667
oerr: Cannot access the message file /u01/app/oracle/product/11.2.0/client/sqlplus/mesg/sp2us.msg
[oracle@oracle ~]$ ls /u01/app/oracle/product/11.2.0/client/sqlplus/mesg/sp2us.msg
ls: cannot access /u01/app/oracle/product/11.2.0/db_1/sqlplus/mesg/sp2us.msg: No such file or directory

这里留意到一个文件sqlplus。貌似拷贝server时候并没有没有拷到这个文件。

这个我是不知情啊。。。百度sqlldr的安装里面没有说到这个文件

明天再写个简易客户端加sqlldr吧


富强 民主 文明 和谐 自由 平等 公正 法治 爱国 敬业 诚信 友善