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 DB インスタンスの外部にあるリモート Oracle データベースサーバーに対してコマンドを実行できます。Oracle OLEDB とリンクされたサーバーを使用すると、次のことが可能になります。

  • SQL Server 以外のデータソースに直接アクセスする

  • データを移動することなく、同じクエリでさまざまな Oracle データソースに対してクエリを実行する

  • エンタープライズエコシステム全体のデータソースに対して分散クエリ、更新、コマンド、トランザクションを発行する

  • Microsoft ビジネスインテリジェンススイート (SSIS、SSRS、SSAS) 内から Oracle データベースへの接続を統合する

  • Oracle データベースから RDS for SQL サーバーに移行

既存または新しい RDS for SQL Server DB インスタンスで、Oracle 用の 1 つ以上のリンクされたサーバーをアクティブ化できます。その後、外部の Oracle データソースを DB インスタンスと統合できます。

サポート対象のバージョンとリージョン

RDS for SQL Server は、すべてのリージョンで、SQL Server Standard と Enterprise エディションの次のバージョンについて Oracle OLEDB とリンクしたサーバーをサポートします。

  • SQL Server 2022、すべてのバージョン

  • SQL Server 2019、すべてのバージョン

  • SQL Server 2017、すべてのバージョン

Oracle OLEDB とリンクされたサーバーは、以下の Oracle Database バージョンでサポートされています。

  • Oracle Database 21c、すべてのバージョン

  • Oracle Database 19c、すべてのバージョン

  • Oracle Database 18c、すべてのバージョン

制限と推奨事項

Oracle OLEDB とリンクされたサーバーに適用される次の制約事項および推奨事項に注意してください。

  • 各 RDS for SQL Server DB インスタンスのセキュリティグループに適切な TCP ポートを追加して、ネットワークトラフィックを許可します。例えば、EC2 Oracle DB インスタンスと RDS for SQL Server DB インスタンスの間にリンクされたサーバーを設定する場合、EC2 Oracle DB インスタンスの IP アドレスからのトラフィックを許可する必要があります。また、SQL Server がデータベース通信をリッスンするために使用しているポートでのトラフィックを許可する必要があります。セキュリティグループの詳細については、「セキュリティグループによるアクセス制御」を参照してください。

  • オプショングループの OLEDB_ORACLE オプションをオン、オフ、または変更した後、RDS for SQL Server DB インスタンスを再起動します。オプショングループのステータスにはこれらのイベントに pending_reboot が表示され、必須です。

  • Oracle データソースのユーザー名とパスワードによる簡易認証のみをサポートします。

  • Open Database Connectivity (ODBC) ドライバーはサポートされていません。最新バージョンの OLEDB ドライバーのみがサポートされます。

  • 分散トランザクション (XA) はサポートされています。分散トランザクションを有効にするには、DB インスタンスのオプショングループで 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 DB インスタンスに OLEDB_ORACLE オプションを追加して、Oracle とリンクされたサーバーを有効にします。以下のプロセスを使用します。

  1. 新しいオプショングループを作成するか、既存のオプショングループを選択します。

  2. オプショングループに [OLEDB_ORACLE] オプションを追加します。

  3. 使用する OLEDB ドライバーのバージョンを選択します。

  4. オプショングループを DB インスタンスに関連付けます。

  5. DB インスタンスを再起動します。

OLEDB_ORACLE のオプショングループの作成

Oracle とリンクされたサーバーを使用するには、使用する DB インスタンスの SQL Server のエディションとバージョンに対応するオプショングループを作成または変更します。この手順を完了するには、AWS Management Console または AWS CLI を使用してください。

次の手順では、SQL Server Standard Edition 2019 のオプショングループを作成します。

オプショングループを作成するには
  1. AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

  2. ナビゲーションペインで、[オプショングループ] を選択します。

  3. [Create group] (グループの作成) を選択します。

  4. [Create subnet group(オプショングループの作成)] ウィンドウで以下を行います。

    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 Standard Edition 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. [スケジュール] で、オプションをすぐに追加するか、次のメンテナンスウィンドウで追加するかを選択します。

  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

オプショングループを DB インスタンスに関連付ける

OLEDB_ORACLE オプショングループおよびパラメータグループを DB インスタンスに関連付けるには、AWS Management Consoleまたは AWS CLI を使用します。

Oracle のリンクされたサーバーの有効化を完了するには、OLEDB_ORACLE オプショングループを新規または既存の DB インスタンスに関連付けます。

  • 新しい DB インスタンスの場合は、インスタンスを起動するときにそれらを関連付けます。詳細については、「Amazon RDS DB インスタンスの作成」を参照してください。

  • 既存の DB インスタンスの場合は、インスタンスを変更することでそれらを関連付けます。詳細については、「Amazon RDS DB インスタンスを変更する」を参照してください。

OLEDB_ORACLE オプショングループおよびパラメータグループを新規または既存の DB インスタンスに関連付けることができます。

OLEDB_ORACLE オプショングループおよびパラメータグループを使用してインスタンスを作成するには
  • オプショングループの作成時に使用したのと同じ DB エンジンのタイプとメジャーバージョンを指定します。

    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 プロバイダーのプロパティの変更

OLEDB プロバイダーのプロパティを表示および変更することができます。master ユーザーのみが、このタスクを実行できます。DB インスタンス上に作成された 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 を有効にすると、プロバイダーをインプロセスサーバーとしてインスタンス化できます。Oracle リンクサーバーを使用するには、このプロパティを 1 に設定します。

Non transacted updates

0

0 以外の場合、SQL Server は更新を許可します。

Index as access path

False

0 以外の場合、SQL Server はプロバイダーのインデックスを使用してデータを取得しようとします。

Disallow adhoc access

False

設定すると、SQL Server は OLEDB プロバイダーに対するパススルークエリの実行を許可しません。このオプションはチェックできますが、パススルークエリを実行するのが適切な場合もあります。

Supports LIKE operator

1

プロバイダーが LIKE キーワードを使用したクエリをサポートしていることを示します。

OLEDB ドライバープロパティの変更

Oracle にリンクされたサーバーを作成するとき、OLEDB ドライバーのプロパティを表示および変更できます。master ユーザーのみが、このタスクを実行できます。[Driver] (ドライバー) プロパティは、リモート Oracle データソースを使用するときに OLEDB ドライバーがデータを処理する方法を定義します。[Driver] (ドライバー) プロパティは、DB インスタンスで作成された各 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 でリンクされた Server を無効にするには、オプショングループから OLEDB_ORACLE オプションを削除します。

重要

このオプションを削除しても、DB インスタンス上の既存のリンクされたサーバー設定は削除されません。DB インスタンスから削除するには、手動で削除する必要があります。

削除後に OLEDB_ORACLE オプションを再度有効にすると、DB インスタンスで以前に設定したリンクされたサーバー設定を再利用できます。

以下の手順では、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. [オプションを削除] を選択します。

  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