该怎么做"java.library.path中没有ocijdbc11"SQL Developer错误

Red*_*ket 5 macos oracle-sqldeveloper

我试图在我的Mac笔记本电脑(OS X 10.9.5)上的SQL Developer中创建一个TNS连接.我得到这个错误no ocijdbc11 in java.library.path我google了,发现我需要安装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?

Auk*_*uke 8

根据@Alex Poole的答案:在启用SIP时,在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.
#=============================================================================

...
Run Code Online (Sandbox Code Playgroud)


Ale*_*ole 3

如果您习惯编辑文件,则可以在内部启动脚本中设置库路径。我通过 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
Run Code Online (Sandbox Code Playgroud)

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

或者,在 Finder 中找到 SQLDeveloper 应用程序,右键单击并选择“显示包内容”,然后向下钻取到“内容”->MacOS,右键单击该sqldeveloper.sh文件并选择“打开方式”,然后使用您最喜欢的文本编辑器 - TextEdit 即可。由于文件被锁定,系统会在某个时候提示您解锁它 - 也许是在打开或第一次编辑时,但 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
Run Code Online (Sandbox Code Playgroud)

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

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