问题 如何在Mac上安装Oracle Instant Client?


如何在Mac上安装Oracle Instant Client版本12.1.0.2(64位)(OS X 10.11.5)

我已经下载了12.1.0.2版(64位)版本并解压缩了该文件。

我现在在/ downloads / instantclient下有以下文件:

libclntsh.dylib.12.1
libclntshcore.dylib.12.1
libnnz12.dylib
libocci.dylib.12.1
libociei.dylib
libocijdbc12.dylib
libons.dylib
liboramysql12.dylib
ojdbc6.jar
ojdbc7.jar
uidrvci
xstreams.jar
adrci
BASIC_README
genezi

我没有任何想法如何从这个到Instant Client的工作版本,所以我可以从CLI连接到数据库。 Oracles网站上的说明似乎过于复杂。

我找到了一些详细说明安装方法的博客,但它们似乎都来自以前版本的Instant Client。出于绝望,我下载了以前版本的Instant Client,但似乎仍然缺少本教程中提到的文件。

有谁知道如何在我的Mac上获得Oracle Instant Client?


6813
2018-06-08 19:39


起源



答案:


多个文件可供下载。从您列出的文件中,您只下载并解压缩了“基本”包。

要运行CLI(我假设您的意思是SQL * Plus),您还需要该软件包 - 列表中的第四个,标题为“Instant Client Package - SQL * Plus:使用Instant Client运行SQL * Plus的附加库和可执行文件”。

这些包的安排使得如果你从同一个地方解压缩你需要的所有包,他们都将它们的文件放在同一个目录中。不幸的是,如果您使用Safari并将其设置为打开某些下载的文件,则不会起作用;每个zip文件都扩展为一个单独的文件夹,名称递增。然后删除zip文件。

您可以禁用自动解压缩并手动执行,也可以将文件从单个文件夹复制到常用文件夹中。

您可能还需要为主客户端库创建符号链接;从该文件夹内(在终端中)你会做:

ln -s libclntsh.dylib.12.1 libclntsh.dylib

您可以将组合文件夹放在任何您喜欢的位置。然后,您需要将该文件夹的完整路径添加到PATH和环境变量中 - 您可以将其添加到.bash_profile中,这样您就不需要手动执行该操作。

一旦你完成了,你就可以执行 sqlplus 从任何地方。

总结一下:

  1. 如果您正在使用Safari,请禁用自动打开zip文件;从Safari-> Preferences-> General取消下载后'打开'安全“文件”复选框。

  2. 下载 instantclient-basic-macos.x64-12.1.0.2.0.zip和instantclient-sqlplus-macos.x64-12.1.0.2.0.zip

  3. 在终端中转到下载目录。

  4. 解压缩两个文件:

    MacBook:Downloads alex$ unzip instantclient-basic-macos.x64-12.1.0.2.0.zip
    Archive:  instantclient-basic-macos.x64-12.1.0.2.0.zip
      inflating: instantclient_12_1/BASIC_README  
      inflating: instantclient_12_1/adrci  
      inflating: instantclient_12_1/genezi  
      inflating: instantclient_12_1/libclntsh.dylib.12.1  
      inflating: instantclient_12_1/libclntshcore.dylib.12.1  
      inflating: instantclient_12_1/libnnz12.dylib  
      inflating: instantclient_12_1/libocci.dylib.12.1  
      inflating: instantclient_12_1/libociei.dylib  
      inflating: instantclient_12_1/libocijdbc12.dylib  
      inflating: instantclient_12_1/libons.dylib  
      inflating: instantclient_12_1/liboramysql12.dylib  
      inflating: instantclient_12_1/ojdbc6.jar  
      inflating: instantclient_12_1/ojdbc7.jar  
      inflating: instantclient_12_1/uidrvci  
      inflating: instantclient_12_1/xstreams.jar  
    MacBook:Downloads alex$ unzip instantclient-sqlplus-macos.x64-12.1.0.2.0.zip
    Archive:  instantclient-sqlplus-macos.x64-12.1.0.2.0.zip
      inflating: instantclient_12_1/SQLPLUS_README  
      inflating: instantclient_12_1/glogin.sql  
      inflating: instantclient_12_1/libsqlplus.dylib  
      inflating: instantclient_12_1/libsqlplusic.dylib  
      inflating: instantclient_12_1/sqlplus  
    
  5. (可选)重命名和/或移动 instantclient_12_1 目录到某个地方更永久。

  6. 将位置添加到当前会话中的路径中,也可以添加到shell配置文件/资源​​文件中,以使其在每次登录时生效:

     export PATH=$HOME/Downloads/instantclient_12_1:$PATH
    
  7. 请享用。

    MacBook:Downloads alex$ export PATH=$HOME/Downloads/instantclient_12_1:$PATH
    MacBook:Downloads alex$ which sqlplus
    /Users/alex/Downloads/instantclient_12_1/sqlplus
    MacBook:Downloads alex$ sqlplus
    
    SQL*Plus: Release 12.1.0.2.0 Production on Thu Jun 9 16:29:49 2016
    
    Copyright (c) 1982, 2016, Oracle.  All rights reserved.
    
    Enter user-name: 
    

El Capitan添加了系统完整性保护(SIP),其中一个副作用是导出DYLD_LIBRARY_PATH不起作用。例如,这可能会影响从shell脚本运行SQL * Plus。有 解决方法 对于11g即时客户端。自从我上次这样做以来,下载页面底部的安装说明发生了变化,现在它表示将库文件硬链接到用户的 ~/lib 目录,以避免该问题。幸运的是,看起来您不需要担心12c客户端 - 他们已经修复了它的构建方式。


15
2018-06-08 22:16



请给出一个镜头并报告,谢谢你的信息。 - Ben
所以我要澄清两件事。 1.我可以将所有即时客户端文件(包括sqlplus)放入单个目录中吗? 2.我只是进入我的bash配置文件(在本例中为.zshrc)并将instantclient目录路径添加到我的$ PATH中?我只想澄清一下,因为它仍然没有用。 - Ben
对于(1)是,必须将它们解压缩到同一目录中,以使库依赖项起作用。对于(2)您是否导出更新的PATH?你能跑吗? sqlplus 从这些文件所在的目录,但不是在其他地方? - Alex Poole
无论我在哪个目录,如果我在终端输入sqlplus,它说“找不到命令”,我在.zshrc中导出PATH,其路径为instantclient目录,即/ Users / bdonna / Downloads / instantclient_12_1 - Ben
您是否已在当前shell中完成导出,或者重新获得.zshrc,或者启动了新shell?将其添加到文件会使其在下次登录时自动生成,猜测不是很明显......如果您在目录中,则可以执行此操作 ./sqlplus,我忘了它默认排除了当前目录。 - Alex Poole


答案:


多个文件可供下载。从您列出的文件中,您只下载并解压缩了“基本”包。

要运行CLI(我假设您的意思是SQL * Plus),您还需要该软件包 - 列表中的第四个,标题为“Instant Client Package - SQL * Plus:使用Instant Client运行SQL * Plus的附加库和可执行文件”。

这些包的安排使得如果你从同一个地方解压缩你需要的所有包,他们都将它们的文件放在同一个目录中。不幸的是,如果您使用Safari并将其设置为打开某些下载的文件,则不会起作用;每个zip文件都扩展为一个单独的文件夹,名称递增。然后删除zip文件。

您可以禁用自动解压缩并手动执行,也可以将文件从单个文件夹复制到常用文件夹中。

您可能还需要为主客户端库创建符号链接;从该文件夹内(在终端中)你会做:

ln -s libclntsh.dylib.12.1 libclntsh.dylib

您可以将组合文件夹放在任何您喜欢的位置。然后,您需要将该文件夹的完整路径添加到PATH和环境变量中 - 您可以将其添加到.bash_profile中,这样您就不需要手动执行该操作。

一旦你完成了,你就可以执行 sqlplus 从任何地方。

总结一下:

  1. 如果您正在使用Safari,请禁用自动打开zip文件;从Safari-> Preferences-> General取消下载后'打开'安全“文件”复选框。

  2. 下载 instantclient-basic-macos.x64-12.1.0.2.0.zip和instantclient-sqlplus-macos.x64-12.1.0.2.0.zip

  3. 在终端中转到下载目录。

  4. 解压缩两个文件:

    MacBook:Downloads alex$ unzip instantclient-basic-macos.x64-12.1.0.2.0.zip
    Archive:  instantclient-basic-macos.x64-12.1.0.2.0.zip
      inflating: instantclient_12_1/BASIC_README  
      inflating: instantclient_12_1/adrci  
      inflating: instantclient_12_1/genezi  
      inflating: instantclient_12_1/libclntsh.dylib.12.1  
      inflating: instantclient_12_1/libclntshcore.dylib.12.1  
      inflating: instantclient_12_1/libnnz12.dylib  
      inflating: instantclient_12_1/libocci.dylib.12.1  
      inflating: instantclient_12_1/libociei.dylib  
      inflating: instantclient_12_1/libocijdbc12.dylib  
      inflating: instantclient_12_1/libons.dylib  
      inflating: instantclient_12_1/liboramysql12.dylib  
      inflating: instantclient_12_1/ojdbc6.jar  
      inflating: instantclient_12_1/ojdbc7.jar  
      inflating: instantclient_12_1/uidrvci  
      inflating: instantclient_12_1/xstreams.jar  
    MacBook:Downloads alex$ unzip instantclient-sqlplus-macos.x64-12.1.0.2.0.zip
    Archive:  instantclient-sqlplus-macos.x64-12.1.0.2.0.zip
      inflating: instantclient_12_1/SQLPLUS_README  
      inflating: instantclient_12_1/glogin.sql  
      inflating: instantclient_12_1/libsqlplus.dylib  
      inflating: instantclient_12_1/libsqlplusic.dylib  
      inflating: instantclient_12_1/sqlplus  
    
  5. (可选)重命名和/或移动 instantclient_12_1 目录到某个地方更永久。

  6. 将位置添加到当前会话中的路径中,也可以添加到shell配置文件/资源​​文件中,以使其在每次登录时生效:

     export PATH=$HOME/Downloads/instantclient_12_1:$PATH
    
  7. 请享用。

    MacBook:Downloads alex$ export PATH=$HOME/Downloads/instantclient_12_1:$PATH
    MacBook:Downloads alex$ which sqlplus
    /Users/alex/Downloads/instantclient_12_1/sqlplus
    MacBook:Downloads alex$ sqlplus
    
    SQL*Plus: Release 12.1.0.2.0 Production on Thu Jun 9 16:29:49 2016
    
    Copyright (c) 1982, 2016, Oracle.  All rights reserved.
    
    Enter user-name: 
    

El Capitan添加了系统完整性保护(SIP),其中一个副作用是导出DYLD_LIBRARY_PATH不起作用。例如,这可能会影响从shell脚本运行SQL * Plus。有 解决方法 对于11g即时客户端。自从我上次这样做以来,下载页面底部的安装说明发生了变化,现在它表示将库文件硬链接到用户的 ~/lib 目录,以避免该问题。幸运的是,看起来您不需要担心12c客户端 - 他们已经修复了它的构建方式。


15
2018-06-08 22:16



请给出一个镜头并报告,谢谢你的信息。 - Ben
所以我要澄清两件事。 1.我可以将所有即时客户端文件(包括sqlplus)放入单个目录中吗? 2.我只是进入我的bash配置文件(在本例中为.zshrc)并将instantclient目录路径添加到我的$ PATH中?我只想澄清一下,因为它仍然没有用。 - Ben
对于(1)是,必须将它们解压缩到同一目录中,以使库依赖项起作用。对于(2)您是否导出更新的PATH?你能跑吗? sqlplus 从这些文件所在的目录,但不是在其他地方? - Alex Poole
无论我在哪个目录,如果我在终端输入sqlplus,它说“找不到命令”,我在.zshrc中导出PATH,其路径为instantclient目录,即/ Users / bdonna / Downloads / instantclient_12_1 - Ben
您是否已在当前shell中完成导出,或者重新获得.zshrc,或者启动了新shell?将其添加到文件会使其在下次登录时自动生成,猜测不是很明显......如果您在目录中,则可以执行此操作 ./sqlplus,我忘了它默认排除了当前目录。 - Alex Poole


HomeBrew救了我。我不弄清楚环境路径。

  1. 从下载下面的两个文件 http://www.oracle.com/technetwork/topics/intel-macsoft-096467.html

由于Oracle许可证,这是必要的。

instantclient-basic-macos.x64–11.2.0.4.0.zip 和 instantclient-sqlplus-macos.x64–11.2.0.4.0.zip

放入文件 ~/Library/Caches/Homebrew

  1. 接下来运行以下命令

$ brew tap InstantClientTap / instantclient

$ brew install instantclient-basic

$ brew install instantclient-sqlplus

来源于 Joost van Wollingen的文件


1
2018-05-18 00:24



在哪里运行命令请帮助 - Sunishtha Singh
在终点站@SunishthaSingh。 Homebrew与Mac有关 - dengApro