【问题标题】:OCIError on 'require'; permissions issue?“要求”上的 OCIError;权限问题?
【发布时间】:2010-06-23 12:44:14
【问题描述】:

我最近刚开始在工作中学习/使用 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 文件和指向它的目录的权限,但我不知道 it 需要访问哪些目录。

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

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

戴夫

【问题讨论】:

    标签: ruby oracle solaris oci8


    【解决方案1】:

    先验我不知道。其他 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 以确保您现在所在的路径已在此处声明。如果它不起作用,则说明您遇到了某种安装问题,例如缺少库或库的非标准路径。

    在此处将您的结果返回给我们。

    【讨论】:

    • 我已经更新了我的问题。感谢您提供有关“ldd”的提示;我以前从未使用过。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-13
      • 2016-09-12
      • 2015-06-02
      • 2021-12-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多