怎样配置ODBC数据源连接远程Oracle19c?

秋强小哥_5916

秋强小哥_5916

2026-11-09

865人浏览

原创

必须同时满足Instant Client安装、匹配位数的ODBC管理器配置、TNS_ADMIN显式指向tnsnames.ora三条件,缺一不可;32位应用须用SysWOW64下odbcad32.exe配系统DSN,64位应用须用System32下odbcad32.exe;需手动运行odbc_install.exe注册驱动,TNS_ADMIN路径须无空格中文且重启进程生效。

怎样配置odbc数据源连接远程oracle19c?

必须用 Instant Client + 正确位数的 ODBC 管理器 + TNS_ADMIN 显式指向 tnsnames.ora,三者缺一不可。 光装驱动、光配 DSN、光写连接串,任一环节错配都会导致“驱动未找到”“ORA-12154”或“测试连接成功但应用连不上”。

确认应用位数并打开对应 odbcad32.exe

Excel、Power BI、Python(pyodbc)、旧版 VB6 等工具运行时有明确位数:32 位应用必须用 32 位 ODBC 数据源,64 位应用必须用 64 位。Windows 10/11 上两者完全隔离。

  • 按 Win+R 输入 odbcad32.exe 回车 —— 若标题栏含 “32-bit”,即为 32 位管理器;若无提示或显示 “64-bit”,即为 64 位
  • 32 位应用(如默认安装的 Excel 2016/2019/365)必须在 C:\Windows\SysWOW64\odbcad32.exe 中配置
  • 64 位应用(如 64 位 Python 或 Power BI Desktop)必须在 C:\Windows\System32\odbcad32.exe 中配置
  • 错配后现象:DSN 测试能过,但应用调用 pyodbc.connect() 或 Excel 导入时直接报“Data source name not found”或“Driver not found”

部署 Instant Client 并注册 ODBC 驱动

Oracle 不再随客户端自动注册 ODBC 驱动,必须手动运行 odbc_install.exe,且路径中不能含空格或中文。

  • 下载匹配版本的两个 ZIP:instantclient-basic-windows.x64-19.24.0.0.0dbru.zip 和 instantclient-odbc-windows.x64-19.24.0.0.0dbru.zip
  • 解压到同一目录,例如 D:\oracle\instantclient_19_24(确保路径无空格)
  • 以管理员身份运行 CMD,cd 进该目录,执行 odbc_install.exe —— 闪退即成功
  • 验证注册:打开注册表编辑器,查看 HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers 下是否有 Oracle in instantclient_19_24 条目

配置 TNS_ADMIN 和 tnsnames.ora 路径

TNS_ADMIN 环境变量优先级高于 ORACLE_HOME,设错会导致 tnsping 可通、但 ODBC 连接失败 —— 因为 ODBC 驱动只认 TNS_ADMIN 指向的 tnsnames.ora。

QuantOracle
QuantOracle

63个确定性量化金融计算器 + 10个通过MCP的复合工作流。期权定价、Greeks、奇异衍生品、风险指标、投资组合优化……

下载
  • 创建目录:D:\oracle\network\admin
  • 在该目录下新建 tnsnames.ora,内容示例:
ORCL19C =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
    (CONNECT_DATA =
      (SERVICE_NAME = ORCLPDB1)
    )
  )
  • 设置系统环境变量:TNS_ADMIN = D:\oracle\network\admin(使用 setx TNS_ADMIN "D:\oracle\network\admin" /M)
  • HOST 必须填数据库服务器局域网 IP,不能写主机名(Windows 默认不查 DNS 做 Oracle 名称解析)
  • SERVICE_NAME 值需与数据库中 SELECT value FROM v$parameter WHERE name = 'service_names'; 输出一致,大小写敏感

在 ODBC 管理器中创建系统 DSN

系统 DSN 对所有用户和应用可见,比用户 DSN 更可靠;名称里避免空格和特殊字符,否则某些工具(如 Excel 数据向导)会解析失败。

  • 在已确认位数的 odbcad32.exe 中,选“系统 DSN” → “添加” → 选择 Oracle in instantclient_19_24
  • 填写:
    • Data Source Name:纯英文,如 ORCL19C_DSN
    • TNS Service Name:填 tnsnames.ora 中定义的别名,如 ORCL19C
    • User ID:数据库用户名(如 hr)
  • 点击“Test Connection”,输入密码 —— 成功后才代表底层链路打通
  • 若测试失败,先在 CMD 中运行 tnsping ORCL19C 验证网络与解析是否正常;再检查 sqlplus username/password@ORCL19C 是否能登录

最容易被忽略的是:TNS_ADMIN 环境变量设完后,必须重启所有已打开的 CMD、IDE、Excel 等进程才能生效;而 ODBC 驱动注册后,部分老应用(如 VB6)还需重启整个操作系统才能识别新驱动。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

oracle

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
数据分析工具有哪些
数据分析工具有哪些

数据分析工具有Excel、SQL、Python、R、Tableau、Power BI、SAS、SPSS和MATLAB等。详细介绍:1、Excel,具有强大的计算和数据处理功能;2、SQL,可以进行数据查询、过滤、排序、聚合等操作;3、Python,拥有丰富的数据分析库;4、R,拥有丰富的统计分析库和图形库;5、Tableau,提供了直观易用的用户界面等等。

2023.10.12

4863

8

SQL中distinct的用法
SQL中distinct的用法

SQL中distinct的语法是“SELECT DISTINCT column1, column2,...,FROM table_name;”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.27

991

4

SQL中months_between使用方法
SQL中months_between使用方法

在SQL中,MONTHS_BETWEEN 是一个常见的函数,用于计算两个日期之间的月份差。想了解更多SQL的相关内容,可以阅读本专题下面的文章。

2024.02.23

1269

5

SQL出现5120错误解决方法
SQL出现5120错误解决方法

SQL Server错误5120是由于没有足够的权限来访问或操作指定的数据库或文件引起的。想了解更多sql错误的相关内容,可以阅读本专题下面的文章。

2024.03.06

6901

10

sql procedure语法错误解决方法
sql procedure语法错误解决方法

sql procedure语法错误解决办法:1、仔细检查错误消息;2、检查语法规则;3、检查括号和引号;4、检查变量和参数;5、检查关键字和函数;6、逐步调试;7、参考文档和示例。想了解更多语法错误的相关内容,可以阅读本专题下面的文章。

2024.03.06

3583

4

oracle数据库运行sql方法
oracle数据库运行sql方法

运行sql步骤包括:打开sql plus工具并连接到数据库。在提示符下输入sql语句。按enter键运行该语句。查看结果,错误消息或退出sql plus。想了解更多oracle数据库的相关内容,可以阅读本专题下面的文章。

2024.04.07

6880

11

sql中where的含义
sql中where的含义

sql中where子句用于从表中过滤数据,它基于指定条件选择特定的行。想了解更多where的相关内容,可以阅读本专题下面的文章。

2024.04.29

9581

6

sql中删除表的语句是什么
sql中删除表的语句是什么

sql中用于删除表的语句是drop table。语法为drop table table_name;该语句将永久删除指定表的表和数据。想了解更多sql的相关内容,可以阅读本专题下面的文章。

2024.04.29

1290

5

sql中删除一列的命令是什么
sql中删除一列的命令是什么

在sql中,使用alter table语句可以删除一列,语法为:alter table table_name drop column column_name。想了解更多sql的相关内容,可以阅读本专题下面的文章。

2024.04.29

1132

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程