如何通过ODBC连接提取Oracle连接信息以适配SQL Developer?
如何从Oracle ODBC连接中提取Host、SID/Service、Port信息
嘿,作为非Oracle技术从业者遇到这个需求确实有点挠头,不过别担心,我给你整理几个可行的方法,帮你从已有的ODBC连接里挖出需要的连接信息:
方法1:直接查看ODBC数据源配置
这是最直观的方式,毕竟你的ODBC连接已经配置好了:
- 打开Windows的ODBC数据源管理器(注意区分32位和64位,如果你用的是32位MS Access,就要打开32位的管理器,路径一般是
C:\Windows\SysWOW64\odbcad32.exe;64位的话是C:\Windows\System32\odbcad32.exe) - 在「用户DSN」或「系统DSN」里找到你用来连接Oracle的那个数据源名称
- 点击「配置」按钮,在弹出的Oracle ODBC驱动配置窗口里,你能看到TNS Service Name或者Server字段。如果是直接填写的服务器信息,这里可能直接显示
主机名:端口/服务名的格式;如果是选择的TNS别名,那你需要结合下面的方法2去解析TNS配置。
方法2:解析本地tnsnames.ora文件
Oracle ODBC驱动通常会读取本地的TNS配置文件来解析连接信息,你可以这么找:
- 先确定Oracle客户端的安装路径,一般是
C:\Oracle\product\<你的版本号>\client_1\network\admin - 找到
tnsnames.ora文件,用记事本打开它 - 找到和你ODBC配置里的TNS Service Name对应的条目,格式大概是这样:
ORACLE_PROD = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oracle-prod.example.com)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = prod.service.example.com) ) )
这里面的HOST、PORT、SERVICE_NAME就是你需要的信息,如果是用SID的话,这里会显示(SID = prod)。
方法3:用PowerShell查询ODBC属性
如果你喜欢用命令行,可以试试PowerShell的命令来直接导出ODBC的配置属性:
- 打开PowerShell,运行下面的命令(替换成你的ODBC数据源名称和驱动名称):
Get-OdbcDsn -Name "你的ODBC数据源名称" -DriverName "Oracle in OraClient19Home1" | Select-Object -ExpandProperty Attributes
- 输出结果里会有
Server或TNSName这样的属性,里面包含了连接的核心信息,你可以从中提取出Host、Port和服务名/SID。
额外说明
如果你们企业的ODBC连接是通过LDAP来解析TNS的,那你可能需要查看ldap.ora文件(和tnsnames.ora在同一个目录),不过一般来说,只要ODBC能正常连接,你的本地肯定已经有了能解析到具体服务器的配置,优先试试前面两个方法就够了。
拿到这些信息后,你就可以在SQL Developer里新建连接,选择「Basic」类型,填入Host、Port、Service Name/SID,然后用你在MS Access里使用的LDAP账号密码登录就行啦!
内容的提问来源于stack exchange,提问作者Ryan B.
相关产品推荐
相关产品推荐

