温馨提示:
本文所述内容具有依赖性,可能因软硬条件不同而与预期有所差异,故请以实际为准,仅供参考。
前言
网上也有相关教程,然而质量参差不齐,故本文对 Ubuntu 官方 WiKi 进行翻译,并进行一定扩展及排版。
本文中演示的操作系统是 Ubuntu 18.04.6 LTS
,安装的 Oracle 客户端版本是 11.2.0.4.0-1.x86_64
。
简介
Oracle Instant Client 是一个免费的 Oracle 数据库客户端。截止发文日期(2022/08/18),最新的版本是 21.7.0.0.0,官网上旧版本可以追溯到18.5.0.0.0,再旧就不提供了,在下载页面看到新版客户端可以向下兼容旧版服务端。
安装 RPMs
从下载页面 查找所需平台的 Oracle Instantclient 客户端安装包文件,本文选择的是 Instant Client for Linux x86-64
。需要注意的是,不管哪个平台都需要下载安装带 Basic
或 Basic lite
字眼的安装包,大多数用户还会想要 SQL*Plus
和 SDK
。
- Basic (.zip):永久下载地址(点击直接下载)
- Basic (.rpm):永久下载地址(点击直接下载)
- Basic Light (.zip):永久下载地址(点击直接下载)
- Basic Light (.rpm):永久下载地址(点击直接下载)
- SQL*Plus (.zip):永久下载地址(点击直接下载)
- SQL*Plus (.rpm):永久下载地址(点击直接下载)
- Tools (.zip):永久下载地址(点击直接下载)
- Tools (.rpm):永久下载地址(点击直接下载)
- SDK (.zip):永久下载地址(点击直接下载)
- SDK (.rpm):永久下载地址(点击直接下载)
- JDBC Supplement (.zip):永久下载地址(点击直接下载)
- JDBC Supplement (.rpm):永久下载地址(点击直接下载)
- ODBC (.zip):永久下载地址(点击直接下载)
- ODBC (.rpm):永久下载地址(点击直接下载)
注:永久下载地址是指该地址下载回来的客户端永远是最新版本的客户端。
需要把下载回来的客户端 .rpm
文件转换成 .deb
文件才能安装,故不可以用 rpm -i
命令安装,而使用 alien -i
命令安装,如果提示 alien: not found
,则需要先安装 alien
:
sudo apt install alien
例如,对于 Linux x86_64(64位)的 11.2.0.4.0-1
版本(该版本官网已下架,如需要可分流下载),安装命令如下:
alien -i oracle-instantclient12.1-basic-11.2.0.4.0.x86_64.rpm
alien -i oracle-instantclient12.1-sqlplus-11.2.0.4.0.x86_64.rpm
alien -i oracle-instantclient12.1-devel-11.2.0.4.0.x86_64.rpm
安装完成后,通过使用 sqlplus
或 sqlplus64
连接到数据库来测试客户端是否安装成功:
sqlplus username/password@//dbhost:1521/SID
例如:
sqlplus admin/pwd@//192.168.192.168:1521/TOPPROD
问题点排查
如果执行 sqlplus
或 sqlplus64
并出现错误提示 command not found
,请参阅下面添加 ORACLE_HOME
变量章节。
如果提示缺少 libsqlplus.so
文件,请参阅下面 集成 Oracle 库
。
如果提示缺少 libaio.so.1
文件,请参阅下面 基础库
。
如果提示缺少 oci.h
文件,请参阅下面的 集成 SDK
。
基础库
libaio
是 Linux 下的一个异步非阻塞接口,它提供了以异步非阻塞方式来读写文件的方式,读写效率比较高,Oracle 数据库客户端使用了该接口。libaio
安装命令如下:
sudo apt-get install libaio1
如果你在 64 位系统上安装了 32 位客户端,则需要指定版本:
sudo apt-get install libaio1:i386
集成 Oracle 库
如果 Oracle 应用程序,如 sqlplus
,抱怨缺少库,你可以在每次使用时将 Oracle 库添加到 LD_LIBRARY_PATH
中:
export LD_LIBRARY_PATH=/usr/lib/oracle/<version>/client(64)/lib/${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
例如本文中,就是:
export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib/${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
或者直接将其添加到系统库列表中,按如下方式创建一个新文件:
sudo vi /etc/ld.so.conf.d/oracle.conf && sudo chmod o+r /etc/ld.so.conf.d/oracle.conf
然后在第一行添加 Oracle 库的路径,例如:
/usr/lib/oracle/11.2/client64/lib
或者
/usr/lib/oracle/11.2/client/lib
接着加载即可:
sudo ldconfig
ORACLE_HOME
许多 Oracle 数据库应用程序会在环境变量 ORACLE_HOME
中指定的位置查找 Oracle 软件。一般服务器只安装了一个 Oracle,需要将这个变量定义在一个全系统都可用的位置:
sudo sudo vi /etc/profile.d/oracle.sh && sudo chmod o+r /etc/profile.d/oracle.sh
然后添加命令:
export ORACLE_HOME=/usr/lib/oracle/<version>/client(64)
export PATH=$PATH:$ORACLE_HOME/bin
例如本文中就是:
export ORACLE_HOME=/usr/lib/oracle/11.2/client64
或者,每个用户都可以在他们的 ~/.bash_profile
中定义。
集成 SDK
一些软件包在编译时,可能会在 $ORACLE_HOME/include
或 $ORACLE_HOME/rdbms/public
中寻找 oci.h
,而我们安装的客户端会将 include
头文件目录,如 oci.h
,放在 /usr/include/oracle/<version>/client
中。
可以先运行以下命令检查一下:
ls $ORACLE_HOME
ls -d /usr/include/oracle/*/client*/*
如果在 ORACLE_HOME
下没有 include
目录,而位于 /usr/include/oracle/
下,则需要创建一个符号链接来帮助编译时寻找这些头文件。
例如本文中就是:
sudo ln -s /usr/include/oracle/11.2/client64 $ORACLE_HOME/include
再次检查一下是否成功:
ls $ORACLE_HOME
参考文章:
1、《Community Help Wiki: Oracle Instant Client》
2、《Kernel Asynchronous I/O (AIO) Support for Linux》
3、《Oracle Instant Client Downloads》
未知操作系统Chrome 103.0.5045.0来自 河南 的大神
大佬可以直接用 Manjaro , AUR 都给你准备好了
你是学啥的呀,总能说一些我没听过的
Mac OS X 10_15_7Chrome 103.0.9999.0来自 河南 的大神
计算机呀!不过感觉这款软件不如 Datagrip
哈哈,大佬牛逼