配置 PolyBase 以访问 Oracle 中的外部数据
适用于:SQL Server
本文介绍如何使用 SQL Server 实例上的 PolyBase 来查询 Oracle 中的外部数据。
先决条件
如果尚未安装 PolyBase,请参阅 PolyBase 安装。
在创建数据库范围凭据之前,必须先创建主密钥。
配置 Oracle 外部数据源
若要查询 Oracle 数据源中的数据,必须创建外部表以引用外部数据。 本节提供用于创建这些外部表的示例代码。
此部分中使用了以下 Transact-SQL 命令:
- CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL)
- CREATE EXTERNAL DATA SOURCE (Transact-SQL)
- CREATE EXTERNAL TABLE (Transact-SQL)
- CREATE STATISTICS (Transact-SQL)
创建数据库范围凭据以访问 Oracle 数据源。
/* specify credentials to external data source * IDENTITY: user name for external source. * SECRET: password for external source. */ CREATE DATABASE SCOPED CREDENTIAL credential_name WITH IDENTITY = 'username', Secret = 'password';
重要
用于 PolyBase 的 Oracle ODBC 连接器仅支持基本身份验证,不支持 Kerberos 身份验证。
使用 CREATE EXTERNAL DATA SOURCE 创建外部数据源。
/* * LOCATION: Location string should be of format '<vendor>://<server>[:<port>]'. * PUSHDOWN: specify whether computation should be pushed down to the source. ON by default. * CONNECTION_OPTIONS: Specify driver location * CREDENTIAL: the database scoped credential, created above. */ CREATE EXTERNAL DATA SOURCE external_data_source_name WITH ( LOCATION = 'oracle://<server address>[:<port>]', -- PUSHDOWN = ON | OFF, CREDENTIAL = credential_name)
使用 CREATE EXTERNAL TABLE 创建外部表。
/* * LOCATION: Three-part identifier indicating database & domain or only database, schema, and table name. * DATA_SOURCE: The data source created above. */ CREATE EXTERNAL TABLE [T1] ( [KEY] DECIMAL(38) NOT NULL, [RANDOM_INT] DECIMAL(38), [RANDOM_FLOAT] FLOAT(53)) WITH ( LOCATION = '[ORCLCDB.localdomain].SYS.T1', DATA_SOURCE = external_data_source_name)
可选:在外部表上创建统计信息。
为了获得最佳查询性能,我们建议在外部表列上创建统计信息,尤其是用于联接、筛选和聚合的统计信息。
CREATE STATISTICS statistics_name ON customer (C_CUSTKEY) WITH FULLSCAN;
重要
创建外部数据源后,可以使用 CREATE EXTERNAL TABLE 命令在该数据源上创建可查询的表。
后续步骤
有关为各种数据源创建外部数据源和外部表的更多教程,请参阅 PolyBase Transact-SQL 参考。
有关详细信息和示例,请参阅以下文章: