配置 PolyBase 以访问 Oracle 中的外部数据

适用于:SQL Server

本文介绍如何使用 SQL Server 实例上的 PolyBase 来查询 Oracle 中的外部数据。

先决条件

如果尚未安装 PolyBase,请参阅 PolyBase 安装

在创建数据库范围凭据之前,必须先创建主密钥

配置 Oracle 外部数据源

若要查询 Oracle 数据源中的数据,必须创建外部表以引用外部数据。 本节提供用于创建这些外部表的示例代码。

此部分中使用了以下 Transact-SQL 命令:

  1. 创建数据库范围凭据以访问 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 身份验证。

  2. 使用 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)
    
  3. 使用 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)
    
  4. 可选:在外部表上创建统计信息。

    为了获得最佳查询性能,我们建议在外部表列上创建统计信息,尤其是用于联接、筛选和聚合的统计信息。

    CREATE STATISTICS statistics_name ON customer (C_CUSTKEY) WITH FULLSCAN; 
    

重要

创建外部数据源后,可以使用 CREATE EXTERNAL TABLE 命令在该数据源上创建可查询的表。

后续步骤

有关为各种数据源创建外部数据源和外部表的更多教程,请参阅 PolyBase Transact-SQL 参考

有关详细信息和示例,请参阅以下文章: