如何处理 "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.
#=============================================================================
...
我正在尝试在 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 theNLS_LANG
environment variables to the full path of theinstantclient_11_2
directory. For example, if you unzipped the Instant Client zip file in the/bin/oracle
directory, then set theDYLD_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.
#=============================================================================
...