在Ubuntu 12.04 x64上安装Oracle Instant Client 12.1和Oracle SQL Plus
首先,Oracle的即时客户端是一个免费的客户端软件,用于连接到Oracle数据库。
我们在这里不打算使用Alien来转换.rpm软件包,而是从zip压缩文件安装。
注册并下载即时客户端软件包
我们将需要注册才能下载该软件。
注册是免费的。
转到下载页面:http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html
注册后,我们将需要下载以下软件包:
Instantclient-basic-linux.x64-12.1.0.1.0.zip
Instantclient-sqlplus-linux.x64-12.1.0.1.0.zip
安装软件
将两个zip文件都移到“/opt /”目录,然后再更改为:
# cd /opt
解压缩档案:
# unzip instantclient-basic-linux.x64-12.1.0.1.0.zip Archive: instantclient-basic-linux.x64-12.1.0.1.0.zip inflating: instantclient_12_1/BASIC_README inflating: instantclient_12_1/adrci inflating: instantclient_12_1/genezi inflating: instantclient_12_1/libclntsh.so.12.1 inflating: instantclient_12_1/libclntshcore.so.12.1 inflating: instantclient_12_1/libnnz12.so inflating: instantclient_12_1/libocci.so.12.1 inflating: instantclient_12_1/libociei.so inflating: instantclient_12_1/libocijdbc12.so inflating: instantclient_12_1/libons.so inflating: instantclient_12_1/liboramysql12.so inflating: instantclient_12_1/ojdbc6.jar inflating: instantclient_12_1/ojdbc7.jar inflating: instantclient_12_1/uidrvci inflating: instantclient_12_1/xstreams.jar
# unzip instantclient-sqlplus-linux.x64-12.1.0.1.0.zip Archive: instantclient-sqlplus-linux.x64-12.1.0.1.0.zip inflating: instantclient_12_1/SQLPLUS_README inflating: instantclient_12_1/glogin.sql inflating: instantclient_12_1/libsqlplus.so inflating: instantclient_12_1/libsqlplusic.so inflating: instantclient_12_1/sqlplus
将默认的Instantclient_12_1目录重命名为sqlplus:
# mv instantclient_12_1 sqlplus
创建一个日志文件夹:
# mkdir -p /opt/sqlplus/log/diag/clients
这有助于避免由于以下错误而导致创建'/home/$USER/oradiag_root'文件夹:
Directory does not exist for read/write [/opt/sqlplus/log] [/opt/sqlplus/log/diag/clients]
配置
将“/opt/sqlplus”添加到共享库路径LD_LIBRARY_PATH:
# export LD_LIBRARY_PATH=/opt/sqlplus:${LD_LIBRARY_PATH}
还要将'/opt/sqlplus'添加到PATH变量中,以避免使用绝对/相对路径:
# export PATH=/opt/sqlplus:${PATH}
将SQLPATH设置为“/opt/sqlplus”,以便可以找到glogin.sql:
# export SQLPATH=/opt/sqlplus:${SQLPATH}
请注意,无需为SQL Plus Instant Client设置ORACLE_HOME或者ORACLE_SID环境变量。
现在,我们希望这些变量在系统重新引导后保持不变。
我们还希望为所有用户登录系统时设置这些变量,以便他们可以使用sqlplus客户端而无需导出变量。
下面列出的是普通用户登录时(将Bash作为交互式登录Shell调用时)要处理的文件:
/etc/profile
~/.bash_profile
~/.bash_login
~/.profile
登录时处理的第一个文件是'/etc/profile'。
该文件集文件为所有用户设置全局环境。
用户的“~/.bash_profile”仅在存在时运行。
如果文件丢失,则bash然后查找要运行的~/.bash_login。
如果该文件也丢失,bash最终将尝试运行'~/.profile'。
“~/.bash_profile”和“~/.bash_login”文件可能无法在系统上退出。
在这种情况下,为所有用户设置全局环境变量的最佳方法是将其放入'/etc/profile'中。
做:
# echo "export LD_LIBRARY_PATH=/opt/sqlplus:${LD_LIBRARY_PATH}" >>/etc/profile # echo "export PATH=/opt/sqlplus:${PATH}" >>/etc/profile # echo "export SQLPATH=/opt/sqlplus:${SQLPATH}" >>/etc/profile
尝试连接到本地可访问的数据库:
# sqlplus 'Hyman@theitroad(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.1.1.3) (PORT=1521))(CONNECT_DATA=(SID=test)))' SQL*Plus: Release 12.1.0.1.0 Production on Sun Nov 16 13:46:57 2014 Copyright (c) 1982, 2013, Oracle. All rights reserved. Enter password: Connected to: Oracle Database 11g Release 11.2.0.3.0 - 64bit Production SQL>
故障排除
sqlplus:加载共享库时出错:libaio.so.1
如果在运行sqlplus时收到以下错误:
sqlplus: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
确保已安装libaio1库:
# apt-get update && apt-get install libaio1
错误:ORA-21561:OID生成失败
如果出现此错误:
ERROR: ORA-21561: OID generation failed
检查主机名是否在'/etc/hostname'和'/etc/hosts'内部正确定义:
# echo "ubuntu" > /etc/hostname
# head -n1 /etc/hosts 127.0.0.1 localhost ubuntu