在 Linux 系统中安装 Oracle 数据库客户端方法(Install Oracle Instant Client on Ubuntu)

小助手读文章 00:00 / 00:00

温馨提示:
本文所述内容具有依赖性,可能因软硬条件不同而与预期有所差异,故请以实际为准,仅供参考。

前言

网上也有相关教程,然而质量参差不齐,故本文对 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。需要注意的是,不管哪个平台都需要下载安装带 BasicBasic lite字眼的安装包,大多数用户还会想要 SQL*PlusSDK

最新版本的下载链接

:永久下载地址是指该地址下载回来的客户端永远是最新版本的客户端。

需要把下载回来的客户端 .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

安装完成后,通过使用 sqlplussqlplus64 连接到数据库来测试客户端是否安装成功:

sqlplus username/password@//dbhost:1521/SID

例如:

sqlplus admin/pwd@//192.168.192.168:1521/TOPPROD

问题点排查

如果执行 sqlplussqlplus64 并出现错误提示 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


ArmxMod for Typecho
个性化、自适应、功能强大的响应式主题

推广

 继续浏览关于 linux部署教程ubuntu客户端方法oracle数据库 的文章

 本文最后更新于 2022/08/18 09:50:16,可能因经年累月而与现状有所差异

 引用转载请注明: VirCloud's Blog > 经验 > 在 Linux 系统中安装 Oracle 数据库客户端方法(Install Oracle Instant Client on Ubuntu)

精选评论

  1. Timochan
    Timochan 回复

    未知操作系统Chrome 103.0.5045.0来自 河南 的大神

    大佬可以直接用 Manjaro , AUR 都给你准备好了

    1. 欧文斯

      你是学啥的呀,总能说一些我没听过的 icon_arrow.gif

      1. Timochan
        Timochan 回复

        Mac OS X 10_15_7Chrome 103.0.9999.0来自 河南 的大神

        计算机呀!不过感觉这款软件不如 Datagrip