我正在使用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
那么,我还应该做些什么来连接服务器?
答案 0 :(得分:0)
使用动态链接到Oracle库(在C / C ++中)的一件事是,libclntsh.so共享对象带有版之后的名称。因此,您可能需要在同一目录中创建一个软链接,确保软链接名称只是libclntsh.so
答案 1 :(得分:0)
我最近和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))
瞧,它有效