0

我最近才开始在工作中学习/使用 Ruby。我有一个超级简单的测试脚本,它只连接到我们的 Oracle 10g 数据库,运行一个选择,然后将结果“显示”到屏幕上。这是在 Solaris 10 服务器上。如果我以“应用程序”用户(运行我们的自动化脚本的系统用户)身份运行脚本,则脚本运行良好。如果我自己运行它,则会引发错误:

oci8lib.c:98:in oci8lib.so: OCI Library Initialization Error (OCIError)
    from /usr/local/lib/ruby/site_ruby/1.8/oci8.rb:25
    from ./dbTest.rb:3:in `require'
    from ./dbTest.rb:3

我的环境变量与“应用程序”用户的匹配。我假设这是某个文件/目录或其他文件/目录的权限问题,但我不知道从哪里开始寻找。oci8.rb 文件中的第 25 行是“require 'oci8lib_18'”指令。我已经读取并执行了 oci8lib_18.so 文件和指向它的目录的权限,但我不知道需要访问哪些目录。

有人对我应该检查权限的文件/目录有什么建议吗?或者关于问题可能是什么的任何其他想法?

更新我一直在与支持 OCI8 的人发送电子邮件,结果发现几个 Oracle 目录具有阻止我登录访问所需信息的权限。一个简单的测试是尝试运行 sqlplus,它也失败了。

戴夫

4

2 回答 2

2

先验的我不知道。其他 ruby​​ 应用程序是否使用 OCI 运行?通常库和附属库都安装了rwx-r-xr-x。您永远不会在正确安装的库上看到权限错误。所以我在猜测你在你的环境中遗漏了一些东西,可能就像 LD_LIBRARY_PATH 中的一个条目

ldd 打开共享库的方式与您的运行时映像几乎相同。

看看这是否有效:

cd /path/to/library   # where oci8lib.so lives.  
ldd oci8lib.so

这应该显示所有外部链接的库,没有错误。如果 ldd 有效,请检查您的 LD_LIBRARY_PATH 以确保您现在所在的路径已在此处声明。如果它不起作用,则您有某种安装问题,例如缺少库或库的非标准路径。

将您的结果返回给我们。

于 2010-06-27T13:51:47.520 回答
0

我一直在与支持 OCI8 的人发送电子邮件,结果发现几个 Oracle 目录具有阻止我登录访问所需信息的权限。一个简单的测试是尝试运行 sqlplus,它也失败了。

于 2010-10-29T17:43:53.623 回答