当前位置: 首页 > article >正文

Ubuntu 24.04 配置ODBC连接ORACLE 11G数据库

1. 安装必要工具和驱动

1.1 安装unixODBC和依赖库

# apt update

# apt install unixodbc unixodbc-dev libaio1 

执行失败,报错

libaio1包找不到,先跳过,安装其他两个。

# apt install unixodbc unixodbc-dev

安装成功

1.2 下载Oracle Instant Client

访问 Oracle Instant Client下载页面,

https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html

选择以下两个RPM包(需转换为Debian格式):

Basic Package(基础库,oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm)

ODBC Package(ODBC驱动,oracle-instantclient11.2-odbc-11.2.0.4.0-1.x86_64.rpm)

1.3 转换为Debian包并安装

安装转换工具

# apt install alien

转换刚才下载的RPM为DEB并安装

# alien -k --scripts *.rpm

# dpkg -i oracle-instantclient*.deb

1.4 创建符号链接(解决库路径问题)

# sh -c "echo /usr/lib/oracle/11.2/client64/lib > /etc/ld.so.conf.d/oracle-instantclient.conf"

# ldconfig

2. 配置Oracle网络连接

2.1 创建TNS配置文件目录

# mkdir -p /usr/lib/oracle/11.2/client64/network/admin

2.2 配置tnsnames.ora

编辑文件 /usr/lib/oracle/11.2/client64/network/admin/tnsnames.ora,添加远程Oracle服务器的连接信息:

# cd /usr/lib/oracle/11.2/client64/network/admin

# vi  tnsnames.ora

添加以下内容

ORCL =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.200)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SID = ORCL) 

    )

  )

3. 配置ODBC驱动和数据源

3.1 配置ODBC驱动

编辑 /etc/odbcinst.ini,添加Oracle驱动配置:

# vi  /etc/odbcinst.ini

[Oracle11g]  # 驱动名称(自定义)

Description = Oracle ODBC Driver for 11g

Driver      = /usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1

FileUsage   = 1

3.2 配置ODBC数据源

编辑 /etc/odbc.ini,添加数据源:

# vi  /etc/odbc.ini

[OracleTest]  # 数据源名称(自定义)

Description = Oracle 11g Connection

Driver      = Oracle11g  # 与odbcinst.ini中的驱动名称一致

ServerName  = ORCL       # 与tnsnames.ora中的条目一致

UserID      = 你的用户名

Password    = 你的密码

Port        = 1521

4. 测试连接

4.1 使用isql命令行工具

# isql -v OracleTest

报错了

提示找不到libsqora.so.11.1

但目录下有这个文件

检查驱动库依赖

# ldd /usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1

有“not found”,应该是之前libaio1没装的问题

apt 始终找不到,只能手动下载安装包

# wget http://archive.ubuntu.com/ubuntu/pool/main/liba/libaio/libaio1_0.3.112-5_amd64.deb

安装依赖和包

# apt install ./libaio1_0.3.112-5_amd64.deb

验证安装

# dpkg -l libaio1

再测试

# isql -v OracleTest

仍然报错

检查驱动库依赖

# ldd /usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1

查到有说Ubuntu 24.04 默认不提供 libodbcinst.so.1,手动创建符号链接

# ln -s /usr/lib/x86_64-linux-gnu/libodbcinst.so.2 /usr/lib/x86_64-linux-gnu/libodbcinst.so.1

重新检查 libsqora.so.11.1 的依赖关系:

# ldd /usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1 | grep odbc

再测试

# isql -v OracleTest

仍然报错,但错误信息变了。

检查TNS 配置文件,确认 tnsnames.ora 路径和权限正常,tnsnames.ora 内容也正确。

Oracle Instant Client 需要通过环境变量明确指定 TNS 配置目录,尝试设置 TNS_ADMIN 变量

# export TNS_ADMIN=/usr/lib/oracle/11.2/client64/network/admin

再测试

# isql -v OracleTest

连接成功

将环境变量写入配置文件

# echo "export TNS_ADMIN=/usr/lib/oracle/11.2/client64/network/admin" >> ~/.bashrc

测试结束。


http://www.kler.cn/a/574006.html

相关文章:

  • Java 大视界 -- 基于 Java 的大数据分布式任务调度系统设计与实现(117)
  • 力扣132. 分割回文串 II
  • js实现pdf文件路径预览和下载
  • Spring Boot使用JDBC /JPA访问达梦数据库
  • Dify部署踩坑指南(Windows+Mac)
  • 【C++】User-Defined Data Type
  • 文件操作(详细讲解)(2/2)
  • 【NL2SQL(text2sql) 到底准不准】智能BI中生成sql模块的评测数据构造 + 评测办法
  • go ent编写hooks时如何处理循环导入问题
  • 当服务器出现卡顿该怎么办?
  • 【大模型基础_毛玉仁】1.5 语言模型的评测
  • 冯诺依曼体系结构的理解和操作系统的极简介绍【Linux操作系统】
  • 【五.LangChain技术与应用】【28.LangChain Agent添加记忆:智能代理的长期学习能力】
  • 解决DeepSeek繁忙办法一:本地部署(完整篇)
  • 自学Linux系统软件编程第八天
  • 数据结构 常见的排序算法
  • python爬虫:python中使用多进程、多线程和协程对比和采集实践
  • 【C++】5.4.3 范围for语句
  • maven高级-02.继承与聚合-继承关系实现
  • 算阶,jdk和idea的安装