求解决方案:
ORA-28545: 连接代理时 Net8 诊断到错误
Unable to retrieve text of NETWORK/NCR message 65535
ORA-02063: 紧接着 2 lines (起自 NEWHIS)
ORACLE连接sqlsever
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
6条回答 默认 最新
檀越@新空间 2025-08-18 15:41关注下午好🌅🌅🌅
本答案参考通义千问你遇到的错误信息是:
ORA-28545: 连接代理时 Net8 诊断到错误 Unable to retrieve text of NETWORK/NCR message 65535 ORA-02063: 紧接着 2 lines (起自 NEWHIS)这是一个典型的 Oracle 链接 SQL Server 时出现的问题,通常发生在使用 Oracle 的 Heterogeneous Services (HS) 模块连接非 Oracle 数据库(如 SQL Server)时。以下是详细的解决方案和排查步骤。
一、问题分析
1. 错误原因
-
ORA-28545: 表示 Oracle 在连接 SQL Server 时,无法获取网络协议消息,可能是由于以下原因之一:
- SQL Server 的 ODBC 驱动配置不正确
- Oracle Heterogeneous Services 配置有误
- 网络连接问题(如防火墙、端口未开放)
- SQL Server 的监听服务未正常运行
- Oracle 的
init.ora或listener.ora配置文件设置不当
-
ORA-02063: 表示在执行查询时,Oracle 与远程数据库之间的连接中断或超时。
二、解决方案
1. 检查 SQL Server 的 ODBC 驱动配置
步骤:
- 确保 SQL Server 的 ODBC 驱动已正确安装并配置。
- 打开“ODBC 数据源管理器” → “系统DSN” → 查看是否有一个指向 SQL Server 的 DSN(例如
SQLServerDSN)。 - 测试该 DSN 是否可以成功连接到 SQL Server。
如果 DSN 无法连接,请重新安装或更新 ODBC 驱动。
2. 配置 Oracle Heterogeneous Services
确保 Oracle 的
hs相关参数已正确配置。修改
init.ora或spfile文件HS_FDS_CONNECT_INFO = "DSN=SQLServerDSN;UID=your_user;PWD=your_password" HS_FDS_TRACE_LEVEL = 0 HS_FDS_TRACE_FILE_NAME = /u01/oracle/admin/your_instance/trace/hstrace.log HS_FDS_SHARE_MEMORY = FALSE HS_FDS_RECOVERY_ACCOUNT = "HR/HR@localhost"注意:
HS_FDS_CONNECT_INFO中的 DSN 必须与你在 ODBC 中配置的一致。
3. 修改
listener.ora文件确保 Oracle 的监听器支持 HS 的连接。
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = your_hostname)(PORT = 1521)) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = your_sid) (ORACLE_HOME = /u01/oracle/product/12.2.0/dbhome_1) (PROGRAM = hsodbc) (ENVS = "LD_LIBRARY_PATH=/usr/lib") ) )注意:
PROGRAM = hsodbc是必须的,表示使用 ODBC 驱动连接。
4. 配置
tnsnames.ora文件添加一个用于连接 SQL Server 的 TNS 别名:
NEWHIS = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = your_hostname)(PORT = 1521)) ) (CONNECT_DATA = (SID = your_sid) ) (HS = OK)注意:
HS = OK表示启用 Heterogeneous Services 支持。
5. 启动监听器和 Oracle 实例
lsnrctl stop lsnrctl start启动 Oracle 实例(如果是 PDB 可以使用
sqlplus / as sysdba登录后启动)。
6. 测试连接
使用
sqlplus测试连接:sqlplus "user/pass@newhis"如果连接成功,则说明配置正确;否则查看日志文件
/u01/oracle/admin/your_instance/trace/hstrace.log获取详细错误信息。
7. 检查防火墙和网络
确保以下几点:
- SQL Server 的 1433 端口(默认)是否开放
- Oracle 服务器与 SQL Server 之间的网络是否连通
- 防火墙是否允许 TCP 通信
三、常见错误排查建议
| 错误 | 原因 | 解决方法 | |------|------|----------| | ORA-28545 | 无法获取网络消息 | 检查 ODBC 配置、HS 参数、网络连接 | | ORA-02063 | 连接中断 | 检查 SQL Server 是否可用、网络延迟、超时设置 | | ORA-12154 | 无法解析连接字符串 | 检查
tnsnames.ora配置是否正确 |
四、代码示例(修改后的
init.ora配置)# Oracle Heterogeneous Services 配置 HS_FDS_CONNECT_INFO = "DSN=SQLServerDSN;UID=sa;PWD=your_password" HS_FDS_TRACE_LEVEL = 0 HS_FDS_TRACE_FILE_NAME = /u01/oracle/admin/orcl/trace/hstrace.log HS_FDS_SHARE_MEMORY = FALSE HS_FDS_RECOVERY_ACCOUNT = "HR/HR@localhost"
五、总结
要解决 ORA-28545 和 ORA-02063 错误,关键在于:
- 正确配置 ODBC 驱动
- 合理设置 Oracle Heterogeneous Services
- 确保网络连接通畅
- 检查日志文件定位具体问题
如果你能提供更具体的环境信息(如 Oracle 版本、SQL Server 版本、操作系统等),我可以进一步帮你定制解决方案。
如有需要,我也可以为你生成完整的
init.ora、listener.ora和tnsnames.ora配置模板。解决 无用评论 打赏 举报-