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



我正试图在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环境变量到CCD_ 4目录的完整路径。例如如果您解压缩了/bin/oracle中的Instant Client zip文件目录,然后将DYLD_LIBRARY_PATH环境变量设置为/bin/oracle/instantclient_11_2

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

有人让SQL Developer使用instantclient吗?

根据@Alex Poole的回答:在El Capitan中,当启用SIP时,这似乎不起作用,因为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.
#=============================================================================
...

如果您对编辑文件感到满意,可以在内部启动脚本中设置库路径。我通过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即可。当文件被锁定时,系统会提示您在某个时候解锁它,可能是在打开或首次编辑时,但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别名,还可以设置/导出TNS_ADMIN变量,该变量指向包含tnsnames.ora文件的目录。

相关内容

最新更新