如何处理 "no ocijdbc11 in java.library.path" SQL 开发人员错误

What to do about "no ocijdbc11 in java.library.path" SQL Developer error

我正在尝试在 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

说明说:

Set the DYLD_LIBRARY_PATH and the NLS_LANG environment variables to the full path of the instantclient_11_2 directory. For example, if you unzipped the Instant Client zip file in the /bin/oracle directory, then set the DYLD_LIBRARY_PATH environment variable to /bin/oracle/instantclient_11_2.

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

有没有人 SQL 开发人员使用 instantclient?

如果您喜欢编辑文件,可以在内部启动脚本中设置库路径。我通过 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 应用程序,右键单击并选择 'Show Package Contents',然后向下钻取到 Contents->MacOS,右键单击 sqldeveloper.sh 文件并选择'Open With' 和您最喜欢的文本编辑器 - TextEdit 即可。由于文件已锁定,系统会提示您在某个时候解锁它 - 可能是在打开或第一次编辑时,但 TextEdit 会在您保存时询问您是否要解锁它。

无论您进入文件,您都可以指定添加一行到 set/export 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 别名,您还可以 set/export 指向包含 tnsnames.ora 文件的目录的 TNS_ADMIN 变量。

基于@Alex Poole 的回答:在 SIP is enabled, this doesn't seem to work 时在 El Capitan 中,因为 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.
#=============================================================================

...