如何刷新ODBC DSN配置的Oracle TNS服务名称下拉列表?
Oracle ODBC DSN 配置界面刷新TNS服务名称下拉列表的方法
核心原理
Oracle 64位ODBC驱动不存在对TNSNAMES.ORA的实时文件监听能力,只会在ODBC数据源管理器进程首次启动时,一次性把文件内的服务名配置加载到内存缓存中。因此修改文件后,已经打开的配置界面不会自动同步列表内容,会一直显示旧的服务名选项。
具体操作步骤
- 完全关闭所有已打开的ODBC数据源管理器窗口
- 打开任务管理器,查找后台残留的
odbcad32.exe进程并手动结束,只要这个进程驻留后台,旧的TNS服务名缓存就不会被清除,重新打开窗口依旧会显示旧列表
- 打开任务管理器,查找后台残留的
- 核对配置文件的匹配性
- 确认你修改的
TNSNAMES.ORA文件路径,和当前64位Oracle客户端默认读取的..\network\admin\路径完全一致——不少设备会同时安装32位、64位不同版本的Oracle客户端,很容易出现修改的文件并非ODBC驱动实际加载目标的问题 - 检查
TNSNAMES.ORA的语法格式,确保所有服务名条目不存在括号不闭合、参数拼写错误等解析异常,这类无法正常解析的条目会被驱动直接跳过,不会出现在下拉列表中
- 确认你修改的
- 重新启动64位ODBC数据源管理器
- 可直接通过运行命令
odbcad32.exe打开管理器,选中目标DSN进入配置页,TNS服务名称的下拉列表就会同步为最新的文件配置内容
- 可直接通过运行命令
常见排查点
- 如果重新加载后仍未显示新的服务名,检查系统环境变量中的
TNS_ADMIN配置,Oracle驱动会优先读取该环境变量指向路径下的TNSNAMES.ORA文件,而非客户端默认安装路径下的配置 - 该操作不需要重启电脑,只要清除驻留的ODBC进程缓存即可完成列表刷新
- 不建议在旧下拉选项的基础上手动输入新服务名完成DSN配置,避免后续出现存储配置和预期不一致的排查类故障
内容的提问来源于stack exchange,提问作者cofactor
相关产品推荐
相关产品推荐

