proc错误 proc: symbol lookup error: proc: undefined symbol: kgefac_

在这样一个场景下:你已有大量Pro*C代码,但是你的Oracle数据库版本要升级了,于是你的客户端也要等版本的升级。

当然客户端一般都具有兼容性,所以也可以不升级,但是老板们一般不这么想嘛,万一出事,你负责啊?咋整,只能升级了呗。

但是又不想把proc也升级啊,因为那样的话,你的Pro*C代码怎么办,重新编译测试一遍?come on。

 

新数据库:Oracle 19c

老数据库:Oracle 11g

 

办法自然是很老套,客户端升级,但是proc嘛,还是用原来的嘛。皆大欢喜。

又是一个温暖的下午,我抓心挠肝的发现了一个问题,新客户端搭配老proc,出了个错。

proc: symbol lookup error: proc: undefined symbol: kgefac_

 

在linux命令行上敲 proc -v,想看一下版本对不对,哎,事情都是这样啦,不过没有问题还要我们程序员干嘛,对不对。

我用 ldd proc命令来看看,到底proc都招惹了谁

 

[test@test sdk]$ ldd proc
        /lib64/ld-linux-x86-64.so.2 (0x00007fe18894c000)
        libaio.so.1 => /lib64/libaio.so.1 (0x00007fe183071000)
        libc.so.6 => /lib64/libc.so.6 (0x00007fe183273000)
        libclntsh.so.11.1 => /u01/app/oracle/product/instantclient_19_6/libclntsh.so.11.1 (0x00007fe1846c7000)
        libclntshcore.so.19.1 => /u01/app/oracle/product/instantclient_19_6/libclntshcore.so.19.1 (0x00007fe1828b5000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007fe183d79000)
        libm.so.6 => /lib64/libm.so.6 (0x00007fe183a77000)
        libnnz11.so => /u01/app/oracle/product/instantclient_19_6/libnnz11.so (0x00007fe183f7d000)
        libnsl.so.1 => /lib64/libnsl.so.1 (0x00007fe183641000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fe18385b000)
        libresolv.so.2 => /lib64/libresolv.so.2 (0x00007fe182e57000)
        librt.so.1 => /lib64/librt.so.1 (0x00007fe188744000)
        linux-vdso.so.1 =>  (0x00007ffcccd45000)

 

我发现这个libclntsh.so.11.1在11g里就一个文件,19c里分成了两个,ibclntshcore.so.xxx,这个很可疑,

另外,libnnz11.so在新客户端里连软链接都没有,估计被19c给摒弃了

所以我就从11g里面把libclntsh.so.11.1和libnnz11.so都拿过来,再试一遍,耶!可以交差啦。

[test@test sdk]$ proc -v

Pro*C/C++: Release 11.2.0.4.0 - Production on Fri 6月 5 09:55:52 2020

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值