You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server 2019 Polybase配置Oracle Exadata HA/DR连接咨询

解决Polybase连接Oracle Exadata HA/DR节点的故障转移方案

以下是两种可行的配置方案,实现Polybase对Oracle Exadata多节点的自动故障转移与负载均衡:

方案一:通过Oracle客户端TNS别名配置

这是最稳定的方式,利用Oracle客户端的TNS配置管理HA连接信息:

  1. 在SQL Server服务器上安装兼容的Oracle客户端(建议12c及以上版本,匹配Exadata的Oracle版本),并配置tnsnames.ora文件(通常位于%ORACLE_HOME%\network\admin目录),添加HA连接配置:
OracleTNSName =
  (DESCRIPTION=(ENABLE=BROKEN)(ADDRESS_LIST=(LOAD_BALANCE=YES)(FAILOVER=YES)(ADDRESS=(PROTOCOL=tcp)(HOST=ExaData1.domain.com)(PORT=1521))(ADDRESS=(PROTOCOL=tcp)(HOST=ExaData2.domain.com)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=OracleTNSName)))
  1. 配置SQL Server服务账户的环境变量:

    • 设置ORACLE_HOME为Oracle客户端的安装路径
    • 设置TNS_ADMIN为tnsnames.ora所在的目录路径
      完成后重启SQL Server服务,确保服务能读取到TNS配置。
  2. 创建支持HA的外部数据源:

CREATE EXTERNAL DATA SOURCE [OracleDataSource] 
WITH (LOCATION = 'oracle://OracleTNSName', CREDENTIAL = [OracleCredential])
  1. 调整外部表定义(无需在LOCATION中指定TNS域名,直接使用Schema和表名):
CREATE EXTERNAL TABLE [Polybase].[sample]
(
    [SID] [nvarchar](8) NULL,
    [MESSAGE_DATE] [datetime2](7) NULL,
    [MESSAGE_ID] [nvarchar](3) NULL
)
WITH (DATA_SOURCE = [OracleDataSource], LOCATION = N'OracleSchema.SAMPLE')

方案二:直接在外部数据源LOCATION中使用完整TNS连接串

如果不想部署Oracle客户端,可以尝试直接将完整的TNS连接串作为LOCATION的值:

CREATE EXTERNAL DATA SOURCE [OracleDataSource] 
WITH (LOCATION = 'oracle:///(DESCRIPTION=(ENABLE=BROKEN)(ADDRESS_LIST=(LOAD_BALANCE=YES)(FAILOVER=YES)(ADDRESS=(PROTOCOL=tcp)(HOST=ExaData1.domain.com)(PORT=1521))(ADDRESS=(PROTOCOL=tcp)(HOST=ExaData2.domain.com)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=OracleTNSName)))', 
      CREDENTIAL = [OracleCredential])

外部表定义与方案一相同,无需额外修改。

验证方法

配置完成后,执行外部表查询验证连接正常,之后手动停止ExaData1节点的Oracle服务,再次查询外部表,确认连接自动切换到ExaData2节点,故障转移生效。

内容的提问来源于stack exchange,提问作者Nathan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 22:15:33