在 Amazon RDS for SQL Server 中支持带有 Oracle OLEDB 的链接服务器 - Amazon Relational Database Service

在 Amazon RDS for SQL Server 中支持带有 Oracle OLEDB 的链接服务器

RDS for SQL Server 上带有 Oracle Provider for OLEDB 的链接服务器可让您访问 Oracle 数据库上的外部数据来源。您可以从远程 Oracle 数据来源读取数据,并对您的 RDS for SQL Server 数据库实例之外的远程 Oracle 数据库服务器运行命令。使用带有 Oracle OLEDB 的链接服务器,您可以:

  • 直接访问 SQL Server 以外的数据来源

  • 使用相同的查询对不同的 Oracle 数据来源进行查询,无需移动数据

  • 对整个企业生态系统中的数据来源发出分布式查询、更新、命令和事务

  • 在 Microsoft 商业智能套件(SSIS、SSRS、SSAS)中集成与 Oracle 数据库的连接

  • 从 Oracle 数据库迁移到 RDS for SQL Server

您可以在现有或新的 RDS for SQL Server 数据库实例上激活一个或多个适用于 Oracle 的链接服务器。然后,您可以将外部 Oracle 数据来源与您的数据库实例集成。

支持的版本和区域

在以下版本上,对于 SQL Server 标准版和企业版,RDS for SQL Server 在所有区域中支持带有 Oracle OLEDB 的链接服务器:

  • SQL Server 2022,所有版本

  • SQL Server 2019,所有版本

  • SQL Server 2017,所有版本

以下 Oracle Database 版本支持带有 Oracle OLEDB 的链接服务器:

  • Oracle Database 21c,所有版本

  • Oracle Database 19c,所有版本

  • Oracle Database 18c,所有版本

限制和建议

请记住以下适用于带有 Oracle OLEDB 的链接服务器的限制和建议:

  • 通过在每个 RDS for SQL Server 数据库实例的安全组中添加适用的 TCP 端口来允许网络流量。例如,如果您在 EC2 Oracle 数据库实例和 RDS for SQL Server 数据库实例之间配置链接服务器,则必须允许来自 EC2 Oracle 数据库实例的 IP 地址的流量。您还必须允许 SQL Server 用于侦听数据库通信的端口上的流量。有关安全组的更多信息,请参阅使用安全组控制访问权限

  • 在打开、关闭或修改选项组中的 OLEDB_ORACLE 选项后,重启 RDS for SQL Server 数据库实例。选项组状态对于这些事件显示 pending_reboot 且是必需的。

  • Oracle 数据来源的用户名和密码仅支持简单身份验证。

  • 不支持开放式数据库连接(ODBC)驱动程序。仅支持最新版本的 OLEDB 驱动程序。

  • 支持分布式事务(XA)。要激活分布式事务,请为您的数据库实例开启选项组中的 MSDTC 选项,并确保 XA 事务处于开启状态。有关更多信息,请参阅RDS for SQL Server 中的 Microsoft 分布式事务处理协调器支持

  • 不支持创建用作连接字符串的快捷方式的数据来源名称(DSN)。

  • 不支持 OLEDB 驱动程序跟踪。您可以使用 SQL Server 扩展事件来跟踪 OLEDB 事件。有关更多信息,请参阅在 RDS for SQL Server 中设置扩展事件

  • 不支持使用 SQL Server Management Studio(SSMS)访问 Oracle 链接服务器的目录文件夹。

激活适用于 Oracle 的链接服务器

通过在 RDS for SQL Server 数据库实例中添加 OLEDB_ORACLE 选项来激活适用于 Oracle 的链接服务器。使用以下过程:

  1. 创建新的选项组或选择现有的选项组。

  2. OLEDB_ORACLE 选项添加到该选项组。

  3. 选择要使用的 OLEDB 驱动程序的版本。

  4. 将选项组与数据库实例相关联。

  5. 重启数据库实例。

为 OLEDB_ORACLE 创建选项组

要使用适用于 Oracle 的链接服务器,请创建或修改与您计划使用的 SQL Server 版本和数据库实例版本对应的选项组。要完成此过程,请使用 AWS Management Console或 AWS CLI。

以下过程创建适用于 SQL Server 标准版 2019 的选项组。

创建选项组
  1. 登录 AWS Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择选项组

  3. 选择创建组

  4. 创建选项组窗口中,执行以下操作:

    1. 对于名称,输入选项组的名称,该名称在 AWS 账户内具有唯一性,例如 oracle-oledb-se-2019。此名称只能包含字母、数字和连字符。

    2. 对于描述,输入选项组的简要描述,例如 OLEDB_ORACLE option group for SQL Server SE 2019。此说明用于显示说明。

    3. 对于引擎,选择 sqlserver-se

    4. 对于 Major engine version(主引擎版本),选择 15.00

  5. 选择创建

以下过程创建适用于 SQL Server 标准版 2019 的选项组。

创建选项组
  • 运行以下命令之一。

    对于 Linux、macOS 或 Unix:

    aws rds create-option-group \ --option-group-name oracle-oledb-se-2019 \ --engine-name sqlserver-se \ --major-engine-version 15.00 \ --option-group-description "OLEDB_ORACLE option group for SQL Server SE 2019"

    对于 Windows:

    aws rds create-option-group ^ --option-group-name oracle-oledb-se-2019 ^ --engine-name sqlserver-se ^ --major-engine-version 15.00 ^ --option-group-description "OLEDB_ORACLE option group for SQL Server SE 2019"

OLEDB_ORACLE 选项添加到选项组

接下来,使用 AWS Management Console或 AWS CLI 将 OLEDB_ORACLE 选项添加到您的选项组。

添加 OLEDB_ORACLE 选项
  1. 登录 AWS Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择选项组

  3. 选择您刚刚创建的选项组(本例中为 oracle-oledb-se-2019)。

  4. 选择添加选项

  5. Option details(选项详细信息)下,为 Option name(选项名称)选择 OLEDB_ORACLE

  6. 计划 (Scheduling) 下,选择是立即添加选项还是在下一个维护时段添加选项。

  7. 选择添加选项

添加 OLEDB_ORACLE 选项
  • OLEDB_ORACLE 选项添加到该选项组。

    对于 Linux、macOS 或 Unix:

    aws rds add-option-to-option-group \ --option-group-name oracle-oledb-se-2019 \ --options OptionName=OLEDB_ORACLE \ --apply-immediately

    对于 Windows:

    aws rds add-option-to-option-group ^ --option-group-name oracle-oledb-se-2019 ^ --options OptionName=OLEDB_ORACLE ^ --apply-immediately

将选项组与数据库实例关联

要将 OLEDB_ORACLE 选项组和参数组与数据库实例关联,请使用 AWS Management Console或 AWS CLI

要完成激活适用于 Oracle 的链接服务器,请将您的 OLEDB_ORACLE 选项组与新的或现有的数据库实例关联:

您可以将 OLEDB_ORACLE 选项组和参数组与新的或现有的数据库实例关联。

使用 OLEDB_ORACLE 选项组和参数组创建实例
  • 指定创建选项组时使用的相同数据库引擎类型和主要版本。

    对于 Linux、macOS 或 Unix:

    aws rds create-db-instance \ --db-instance-identifier mytestsqlserveroracleoledbinstance \ --db-instance-class db.m5.2xlarge \ --engine sqlserver-se \ --engine-version 15.0.4236.7.v1 \ --allocated-storage 100 \ --manage-master-user-password \ --master-username admin \ --storage-type gp2 \ --license-model li \ --domain-iam-role-name my-directory-iam-role \ --domain my-domain-id \ --option-group-name oracle-oledb-se-2019 \ --db-parameter-group-name my-parameter-group-name

    对于 Windows:

    aws rds create-db-instance ^ --db-instance-identifier mytestsqlserveroracleoledbinstance ^ --db-instance-class db.m5.2xlarge ^ --engine sqlserver-se ^ --engine-version 15.0.4236.7.v1 ^ --allocated-storage 100 ^ --manage-master-user-password ^ --master-username admin ^ --storage-type gp2 ^ --license-model li ^ --domain-iam-role-name my-directory-iam-role ^ --domain my-domain-id ^ --option-group-name oracle-oledb-se-2019 ^ --db-parameter-group-name my-parameter-group-name
修改实例并关联 OLEDB_ORACLE 选项组
  • 运行以下命令之一。

    对于 Linux、macOS 或 Unix:

    aws rds modify-db-instance \ --db-instance-identifier mytestsqlserveroracleoledbinstance \ --option-group-name oracle-oledb-se-2019 \ --db-parameter-group-name my-parameter-group-name \ --apply-immediately

    对于 Windows:

    aws rds modify-db-instance ^ --db-instance-identifier mytestsqlserveroracleoledbinstance ^ --option-group-name oracle-oledb-se-2019 ^ --db-parameter-group-name my-parameter-group-name ^ --apply-immediately

修改 OLEDB 提供程序属性

您可以查看和更改 ODB 提供程序的属性。只有 master 用户才能执行此任务。在数据库实例上创建的所有适用于 Oracle 的链接服务器都使用该 OLEDB 提供程序的相同属性。调用 sp_MSset_oledb_prop 存储过程以更改 OLEDB 提供程序的属性。

更改 OLEDB 提供程序属性

USE [master] GO EXEC sp_MSset_oledb_prop N'OraOLEDB.Oracle', N'AllowInProcess', 1 EXEC sp_MSset_oledb_prop N'OraOLEDB.Oracle', N'DynamicParameters', 0 GO

可以修改以下属性:

属性名称 建议的值(1 = 开启,0 = 关闭) 描述

Dynamic parameter

1

在参数化查询中允许 SQL 占位符(以“?”表示)。

Nested queries

1

允许在 FROM 子句中嵌套 SELECT 语句,例如子查询。

Level zero only

0

仅针对此提供程序调用基级 OLEDB 接口。

Allow inprocess

1

如果开启,Microsoft SQL Server 允许将提供程序实例化为进程内服务器。将此属性设置为 1 可使用 Oracle 链接服务器。

Non transacted updates

0

如果不为零,则 SQL Server 允许更新。

Index as access path

False

如果不为零,则 SQL Server 会尝试使用提供程序的索引来获取数据。

Disallow adhoc access

False

如果已设置,则 SQL Server 不允许对 OLEDB 提供程序运行传递查询。虽然可以选中此选项,但有时运行传递查询是合适的。

Supports LIKE operator

1

表示提供程序支持使用 LIKE 关键字进行查询。

修改 OLEDB 驱动程序属性

在创建适用于 Oracle 的链接服务器时,可以查看和更改 OLEDB 驱动程序的属性。只有 master 用户才能执行此任务。驱动程序属性定义了在使用远程 Oracle 数据来源时 OLEDB 驱动程序如何处理数据。驱动程序属性特定于在数据库实例上创建的每个 Oracle 链接服务器。调用 master.dbo.sp_addlinkedserver 存储过程以更改 OLEDB 驱动程序的属性。

示例:创建链接服务器并更改 OLEDB 驱动程序 FetchSize 属性

EXEC master.dbo.sp_addlinkedserver @server = N'Oracle_link2', @srvproduct=N'Oracle', @provider=N'OraOLEDB.Oracle', @datasrc=N'my-oracle-test.cnetsipka.us-west-2.rds.amazonaws.com:1521/ORCL, @provstr='FetchSize=200' GO
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'Oracle_link2', @useself=N'False', @locallogin=NULL, @rmtuser=N'master', @rmtpassword='Test#1234' GO
注意

作为安全最佳实践,请指定除此处所示提示以外的密码。

停用适用于 Oracle 的链接服务器

要停用适用于 Oracle 的链接服务器,请从其选项组中删除 OLEDB_ORACLE 选项。

重要

删除此选项不会删除数据库实例上现有的链接服务器配置。您必须手动删除它们,才能将其从数据库实例中删除。

删除后,您可以重新激活 OLEDB_ORACLE 选项,以重用先前在数据库实例上配置的链接服务器配置。

以下过程删除 OLEDB_ORACLE 选项。

从其选项组中删除 OLEDB_ORACLE 选项
  1. 登录 AWS Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择选项组

  3. 选择具有 OLEDB_ORACLE 选项的选项组(在前面的示例中为 oracle-oledb-se-2019)。

  4. 选择 Delete option (删除选项)

  5. Deletion options(删除选项)下,为 Options to delete(待删除的选项)选择 OLEDB_ORACLE

  6. Apply immediately(立即应用)下,选择 Yes(是)可立即删除选项,选择 No(否)可在下一个维护时段删除它。

  7. 选择删除

以下过程删除 OLEDB_ORACLE 选项。

从选项组中删除 OLEDB_ORACLE 选项
  • 运行以下命令之一。

    对于 Linux、macOS 或 Unix:

    aws rds remove-option-from-option-group \ --option-group-name oracle-oledb-se-2019 \ --options OLEDB_ORACLE \ --apply-immediately

    对于 Windows:

    aws rds remove-option-from-option-group ^ --option-group-name oracle-oledb-se-2019 ^ --options OLEDB_ORACLE ^ --apply-immediately