15

我想在我的 64 位 Mac 上安装 SqlPlus 客户端。首先,我为 64 位安装了 sqlplus,但出现错误: “Segmentation fault: 11” 然后我为 32 位安装了 sqlplus,但仍然出现问题: ../libsqlplus.dylib: no proper image found 。 ./libsqlplus.dylib:mach-o,但架构错误

我已经使用了很多教程,但仍然没有解决这个问题。

4

1 回答 1

35

11gR2 64 位即时客户端适用于 10.8.5。不管你连接的数据库还是10g,都可以用11g的客户端。我不知道有任何理由仍然使用旧版本,除非您可能需要特定ojdbc版本;但大概有用例,否则它仍然不会被突出显示以供下载。无论如何,这演示了全新安装:

$ unzip instantclient-basic-macos.x64-11.2.0.3.0.zip
Archive:  instantclient-basic-macos.x64-11.2.0.3.0.zip
  inflating: instantclient_11_2/BASIC_README  
  inflating: instantclient_11_2/adrci  
  inflating: instantclient_11_2/genezi  
  inflating: instantclient_11_2/libclntsh.dylib.11.1  
  inflating: instantclient_11_2/libnnz11.dylib  
  inflating: instantclient_11_2/libocci.dylib.11.1  
  inflating: instantclient_11_2/libociei.dylib  
  inflating: instantclient_11_2/libocijdbc11.dylib  
  inflating: instantclient_11_2/ojdbc5.jar  
  inflating: instantclient_11_2/ojdbc6.jar  
  inflating: instantclient_11_2/uidrvci  
  inflating: instantclient_11_2/xstreams.jar  

$ unzip instantclient-sqlplus-macos.x64-11.2.0.3.0.zip
Archive:  instantclient-sqlplus-macos.x64-11.2.0.3.0.zip
  inflating: instantclient_11_2/SQLPLUS_README  
  inflating: instantclient_11_2/glogin.sql  
  inflating: instantclient_11_2/libsqlplus.dylib  
  inflating: instantclient_11_2/libsqlplusic.dylib  
  inflating: instantclient_11_2/sqlplus  

$ export DYLD_LIBRARY_PATH=$PWD/instantclient_11_2
$ $PWD/instantclient_11_2/sqlplus

SQL*Plus: Release 11.2.0.3.0 Production on Thu Oct 3 09:49:06 2013

Copyright (c) 1982, 2012, Oracle.  All rights reserved.

Enter user-name: 

您可以在tnsnames.ora任何地方创建;我把它放在同一个instant client_11_2目录中:

$ export TNS_ADMIN=$PWD/instantclient_11_2
$ echo "TEST =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = <db_server>)(PORT = <listener port>))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = <full_db_service_name>)
    )
  )
" > $TNS_ADMIN/tnsnames.ora

$ $PWD/instantclient_11_2/sqlplus user/password@test

SQL*Plus: Release 11.2.0.3.0 Production on Thu Oct 3 09:55:14 2013

Copyright (c) 1982, 2012, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

SQL> 

32 位版本也可以正常工作:

$ rm -rf $PWD/instantclient_11_2
$ unzip instantclient-basic-macos.x32-11.2.0.3.0.zip
$ unzip instantclient-sqlplus-macos.x32-11.2.0.3.0.zip
$ export DYLD_LIBRARY_PATH=$PWD/instantclient_11_2
$ export TNS_ADMIN=$PWD/instantclient_11_2
$ echo "TEST = ..." > TNS_ADMIN/tnsnames.ora
$ $PWD/instantclient_11_2/sqlplus user/password@test

SQL*Plus: Release 11.2.0.3.0 Production on Thu Oct 3 10:06:19 2013

Copyright (c) 1982, 2012, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

SQL> 

您当然可以将instanstclient_11_2目录移动或重命名为您想要的任何内容,只需确保您的DYLD_LIBRARY_PATH,TNS_ADMIN和(为了让生活更轻松)PATH环境变量跟随它。如果您安装了多个版本,请确保变量一次仅指向一个版本,以便您选择正确的库等。(如果您确实有多个版本,则将TNS_ADMIN某个位置设置为中心更有意义,因为您只需要维护一份tnsnames.ora)。

我需要检查一下,但我认为如果您从 Java 连接,您可能仍必须使用 32 位版本;它必须批量处理 Java 本身的体系结构,所以我想这取决于您安装了哪个版本。

于 2013-10-03T09:08:47.037 回答