是否可通过ODBC连接运行在Docker容器内的Oracle数据库
Ubuntu环境通过ODBC连接Docker部署的Oracle 19c 操作指南
1. 前置连通性校验
首先确认Docker部署的Oracle服务端口可正常访问,避免后续配置走弯路:
- 执行端口连通性测试:
nc -zv 127.0.0.1 1521,正常返回succeeded提示即为可用 - 也可本地安装sqlplus工具,验证登录账号密码、PDB服务名
orclpdb1可正常登录
2. 安装依赖组件
2.1 安装unixODBC驱动管理器
sudo apt update sudo apt install unixodbc unixodbc-dev -y
2.2 安装Oracle官方ODBC驱动
需要安装Oracle Instant Client的基础包和ODBC扩展包:
- 下载Oracle 19c对应版本的x64 deb安装包:
instantclient-basic-linux.x64-19.x.x.x.x.deb、instantclient-odbc-linux.x64-19.x.x.x.x.deb - 执行安装命令:
sudo dpkg -i instantclient-basic-linux.x64-19*.deb sudo dpkg -i instantclient-odbc-linux.x64-19*.deb # 自动补全缺失依赖 sudo apt install -f -y
- 配置Oracle动态库路径并生效:
echo "/usr/lib/oracle/19/client64/lib" | sudo tee /etc/ld.so.conf.d/oracle-instantclient.conf sudo ldconfig
3. 配置ODBC规则
3.1 注册ODBC驱动
编辑全局驱动配置文件/etc/odbcinst.ini,添加如下内容:
[Oracle19cODBC] Description = Oracle 19c ODBC Driver Driver = /usr/lib/oracle/19/client64/lib/libsqora.so.19.1 FileUsage = 1
如果不想手动编辑,也可以进入/usr/lib/oracle/19/client64/bin目录,执行官方自带的odbc_update_ini.sh脚本自动完成驱动注册
3.2 配置数据源
编辑全局数据源配置文件/etc/odbc.ini(全局所有用户可用)或者当前用户目录下的~/.odbc.ini(仅当前用户可用),添加如下内容:
[Oracle19cDB] Driver = Oracle19cODBC ServerName = 127.0.0.1:1521/orclpdb1 UserID = system Password = oracle
其中ServerName格式为IP地址:端口/PDB服务名,UserID和Password请替换为你实际的数据库登录账号密码
4. 连接测试
执行如下命令测试ODBC连接:
isql -v Oracle19cDB
正常返回连接成功提示、进入SQL交互界面即为配置完成。
常见异常排查
- 端口连接失败:检查Oracle容器是否正常运行,ufw/iptables防火墙是否开放1521端口
- 驱动加载失败:重新执行
sudo ldconfig,检查动态库路径配置是否正确 - 服务名不存在:进入Oracle容器执行
lsnrctl status,确认实际暴露的PDB服务名是否为orclpdb1
内容的提问来源于stack exchange,提问作者VoidedHost
相关产品推荐
相关产品推荐

