【问题标题】:Has anyone got Oracle Pro*C to work on OS X 10.6 using a non-Oracle user account有没有人使用非 Oracle 用户帐户让 Oracle Pro*C 在 OS X 10.6 上工作
【发布时间】:2010-08-11 03:36:26
【问题描述】:

我已经在 10.6 上成功安装了本机 Oracle,并且可以使用“oracle”帐户(即安装该软件的同一操作系统用户)成功编译和执行示例 Pro*C 代码。那是一份有趣的工作。它甚至可以与 clang 一起使用。

但是,在我们的正常开发环境中,源代码、构建脚本、make 文件等由不同的 Unix 组和用户拥有 - 可以访问一组受限的 Oracle 工具(sqlplus、exp、proc 等) .

尝试从 oracle 安装中使用 sqlplus 给出了(已知问题)

dyld: Library not loaded: /b/227/sqlplus/lib/libsqlplus.dylib

尽管 DYLD_LIBRARY_PATH 确实设置正确。做过更多调查的人认为,在进程开始之前,库路径的某处未设置。

我放弃了,改用 Instantclient。

不幸的是,instantclient SDK 只是 OCCI - 它不包括 pro*c 编译器。

所以我回到尝试让“dev”用户能够在 oracle bin 目录中执行“proc”。我已经解决了一个 dylib 问题(使用符号链接)和各种文件权限问题(需要将 -r 授予 /precomp 目录层次结构中的文件)。

现在我得到一个核心转储(在 oracle 用户下运行时不会发生)

System default option values taken from:    
/Users/oracle/product/10.2.0/db_1/precomp/admin/pcscfg.cfg

INTERNAL ERROR: Failed assertion [PGE Code=90105]

Segmentation fault

有什么建议吗?有没有人真正成功地做到了这一点?

【问题讨论】:

  • 啊,当然 - 简单的权限错误(感谢 Google) - proc 编译器试图在与源相同的目录中写入,而不是在本地。很好的防御性编码和错误处理。更进一步 - 现在我只需要让我的链接工作到标准 sqlca 等结构。
  • 这是否意味着您可以关闭任务?如果是这样,请输入您自己的答案并接受它。
  • 还没有,但希望很快。事实证明这很“有趣”(所需的示例制作文件等不在文档中)。

标签: oracle macos osx-snow-leopard


【解决方案1】:

我遇到的第一个问题是通过授予对 oracle 安装下的 /precomp 目录和子目录的读取访问权限来解决的(然后为我的下一个问题编辑了该问题)。

默认情况下,proc 编译器写入源代码文件所在的目录,而不是本地目录。简单修复 - 通过路径指定目标文件名。这样就成功生成了 .c 文件。

编译这个是授予访问权限并指定要链接的正确库的情况(instantclient 64 位的将在这里工作)。

最后,将示例修改为形状。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-25
    • 2012-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-07
    • 2016-02-17
    • 2021-12-21
    相关资源
    最近更新 更多