直接在linux中使用sqlplus客户端

首先到oracle的官方网站下载两个包:

oracle-instantclient-basic-<release>.i386.zip
oracle-instantclient-sqlplus-<release>.i386.zip

这两个其中release部分根据你的服务器端的release所决定,只跟服务器端相同或者比服务器端高,不能低于服务器端版本。
PS:下载地址:
http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/linuxsoft.html

然后,先不要急着解压。我们先建立一个目录,假设为/opt/oracle,然后我们在这里面建立一些子目录

mkdir /opt/oracle/bin
mkdir /opt/oracle/lib
mkdir /opt/oracle/tns
mkdir -p /opt/oracle/sqlplus/admin
mkdir -p /opt/oracle/sqlplus/mesg

然后,我们解压开始下载的两个包:

unzip oracle-instantclient-basic-<release>.i386.zip
unzip oracle-instantclient-sqlplus-<release>.i386.zip

解压之后,会得到一个目录,应该是instantclient_release,进入之后,对文件做如下的文件

mv sqlplus /opt/oracle/bin
mv glogin.sql /opt/oracle/sqlplus/admin
mv * /opt/oracle/lib

然后,执行如下命令(最好是写入/etc/profile或者~/.profile)

export ORACLE_HOME=/opt/oracle
export PATH=$PATH:$ORACLE_HOME/bin
export TNS_ADMIN=$ORACLE_HOME/tns
export LD_LIBRARY_PATH=$ORACLE_HOME/lib

这个时候,你再执行

sqlplus /nolog

就会发现SQL*PLUS还是不能工作,会报如下这个错误:

Error 6 initializing SQL*Plus
Message file sp1<lang>.msb not found
SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory

目前这个错误我没有找到真正的原因,但是也有一个临时解决方法:只要从ORACLE服务器端把sp1.msb与sp2.msb之类的的文件拷贝过来放在/opt/oracle/sqlplus/mesg中就可以了。如果你不能连接到你的ORACLE服务器去直接拷贝文件,也可以下载我的,用unzip解压,然后移动到/opt/oracle/sqlplus/mesg就可以了。

点击下载msb文件

之后,你就发现

$ sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on Sun Jul 25 10:19:32 2010

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

SQL>

也就是说,SQL*PLUS可以工作了。

这个时候,你可以用easy connecting方式或者创建tnsnames.ora文件到/opt/oracle/tns中就可以了连接到你的ORACLE数据库了

PS:
有些朋友可能会碰到如下错误

SP2-1503: Unable to initialize Oracle call interface
SP2-0152: ORACLE may not be functioning properly

这个是因为你没有正确安装OCI(oracle call interface),其实就是你没有下载basic那个包,或者LD_LIBRARY_PATH设置错误。你至少要保证你的LD_LIBRARY_PATH里面存在如下四个文件:

libclntsh.so.10.1  libnnz10.so  libociei.so  libsqlplus.so