我正试图在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_PATH
和NLS_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
文件的目录。