【问题标题】:What to do about "no ocijdbc11 in java.library.path" SQL Developer error如何处理“java.library.path 中没有 ocijdbc11”SQL Developer 错误
【发布时间】:2016-04-22 19:04:25
【问题描述】:

我正在尝试在我的 mac 笔记本电脑(OS X 10.9.5)上的 SQL Developer 中创建 TNS 连接。 我收到此错误no ocijdbc11 in java.library.path 我用谷歌搜索发现我需要 安装 oracle 的即时客户端。我在这里找到了实例客户端文件:

http://www.oracle.com/technetwork/topics/intel-macsoft-096467.html

这些文件只是 zip 文件,您需要下载并解压到某个地方。 然后我在这里找到了实际告诉您如何处理 zip 文件的说明:

https://docs.oracle.com/cd/E11882_01/install.112/e38228/inst_task.htm#BABHEBIG

说明书说:

设置DYLD_LIBRARY_PATHNLS_LANG 环境变量 到instantclient_11_2 目录的完整路径。例如, 如果您解压缩了 /bin/oracle 中的 Instant Client zip 文件 目录,然后将DYLD_LIBRARY_PATH 环境变量设置为 /bin/oracle/instantclient_11_2.

说明没有告诉我的是如何永久设置环境变量以及如何使环境变量可供 SQL 开发人员等 GUI 工具访问。

有没有人让 SQL Developer 使用 Instantclient?

【问题讨论】:

  • 嗨,Alex,我安装了 Oracle SQL Developer 4.0.3。
  • 好的,我可以通过连接类型 TNS 得到该错误并输入连接标识符。可能不直接相关,但是您使用 TNS 连接类型而不是具有相同连接信息的基本连接是否有原因?

标签: macos oracle-sqldeveloper


【解决方案1】:

基于@Alex Poole 的回答:在 El Capitan 中启用SIP 时,此doesn't seem to work,因为DYLD_LIBRARY_PATH 环境变量不会转移到bash ./sqldeveloper 启动的环境中(最后一行SQLDeveloper.app/Contents/MacOS/sqldeveloper.sh)。

解决方案:我没有编辑文件 SQLDeveloper.app/Contents/MacOS/sqldeveloper.sh,而是编辑了文件 SQLDeveloper.app/Contents/Resources/sqldeveloper/sqldeveloper/bin/sqldeveloper 并在其中添加了 export DYLD_LIBRARY_PATH=/path/to/instantclient 行。

#!/bin/bash

export DYLD_LIBRARY_PATH=/path/to/instantclient

#=============================================================================
#  Launcher for Oracle SQL Developer
#  Copyright (c) 2005, Oracle. All rights reserved.
#=============================================================================

...

【讨论】:

  • 这也修复了 Instantclient 12.2 的类似错误:java.library.path 供应商代码 0 中没有 odijdbc12
【解决方案2】:

如果您喜欢编辑文件,您可以在内部启动脚本中设置库路径。我通过 Terminal.app 和 vim 编辑了这个,方法是:

cd <wherever SQL Developer was installed/unzipped>
cd SQLDeveloper.app/Contents/MacOS
cp -p sqldeveloper.sh sqldeveloper.sh.backup
chmod o+w sqldeveloper.sh
vim sqldeveloper.sh

该文件默认受保护,因此我将其更改为可写(并先进行备份,以防万一)。如果你跳过这一步,用 vim 你可以用:w! 保存它。

或者在 Finder 中找到 SQLDeveloper 应用程序,右键单击并选择“显示包内容”,然后深入到 Contents->MacOS,右键单击 sqldeveloper.sh 文件并选择“打开方式”和您最喜欢的文本编辑器- 文本编辑会做。当文件被锁定时,系统会在某个时候提示您解锁它 - 可能是在打开或首次编辑时,但 TextEdit 会在您保存时询问您是否要解锁它。

无论你如何进入文件,你都可以指定添加一行来设置/导出DYLD_LIBRARY_PATH

#!/bin/bash
# Next line added for TNS connections
export DYLD_LIBRARY_PATH=/path/to/instantclient
export JAVA_HOME=`/usr/libexec/java_home -v 1.7`
here="${0%/*}"
cd "${here}"
cd ../Resources/sqldeveloper/sqldeveloper/bin
bash ./sqldeveloper -clean >>/dev/null

... 其中/path/to/instantclient 是您的解压缩目录;在上面引用的示例中,这将是/bin/oracle/instantclient_11_2。另请注意,这需要是 64 位即时客户端;如果您尝试使用 32 位版本,它会抱怨架构错误。

修改后的文件已保存,重新启动 SQL Developer,您的 TNS 连接现在应该可以工作了。如果您希望能够使用 TNS 别名,您还可以设置/导出指向包含 tnsnames.ora 文件的目录的 TNS_ADMIN 变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-10
    • 1970-01-01
    • 2020-03-02
    • 2017-12-26
    • 1970-01-01
    • 2011-01-04
    • 2014-10-11
    • 2019-10-25
    相关资源
    最近更新 更多