4

我正在做一些练习clsql。我想连接我的 oracle 服务器,因此我的连接功能是;

(connect '("192.168.2.3" "xe" "username" "password") :database-type :oracle)

当我点击返回时,出现以下错误消息。

Couldn't load foreign libraries "libclntsh", "oci". (searched *FOREIGN-LIBRARY-SEARCH-PATHS*) [Condition of type SIMPLE-ERROR]

我已经安装了oracle-instantclient11.2-basic-11.2.0.1.0-1.i386.rpm

并定义export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client/lib

那么,我还应该做些什么来连接服务器呢?

4

2 回答 2

2

我最近在玩oracle,发现您所需要的只是将路径libclntsh放入/etc/ld.conf.d/oracle.conf

我的设置如下(redhat,centos - 作为 root):从 oracle 下载

oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm
install via rpm -ivh oracle*.rpm

创建文件/etc/ld.so.conf.d/oracle.conf

/usr/lib/oracle/12.1/client64/lib

然后执行ldconfig

现在因为clsql-oracle不在quicklisp,我下载解压了clsql-6.6.2,然后

(require "asdf")
(push #P"/opt/jeff/clsql-6.6.2/" asdf:*central-registry*)
(asdf:load-system :clsql-oracle)
(defparameter *some-db* (connect '("127.0.0.1:1521/db1" "SOME_USER_RO" "*******") :database-type :oracle))

瞧,它有效

于 2015-11-16T21:53:14.010 回答
1

动态链接到 Oracle 库(即在 C/C++ 中)使我绊倒的一件事是 libclntsh.so 共享对象带有so 名称之后的版本。所以可能需要在同一个目录下创建软链接,保证软链接名称就是libclntsh.so

于 2011-06-08T01:20:49.960 回答