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 とリンクされたサーバーを有効にします。以下のプロセスを使用します。
-
新しいオプショングループを作成するか、既存のオプショングループを選択します。
-
オプショングループに [
OLEDB_ORACLE
] オプションを追加します。 -
使用する OLEDB ドライバーのバージョンを選択します。
-
オプショングループを DB インスタンスに関連付けます。
-
DB インスタンスを再起動します。
OLEDB_ORACLE のオプショングループの作成
Oracle とリンクされたサーバーを使用するには、使用する DB インスタンスの SQL Server のエディションとバージョンに対応するオプショングループを作成または変更します。この手順を完了するには、AWS Management Console または AWS CLI を使用してください。
次の手順では、SQL Server Standard Edition 2019 のオプショングループを作成します。
オプショングループを作成するには
AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/
) を開きます。 -
ナビゲーションペインで、[オプショングループ] を選択します。
-
[Create group] (グループの作成) を選択します。
-
[Create subnet group(オプショングループの作成)] ウィンドウで以下を行います。
-
[名前] に、AWS アカウント内で一意のオプショングループ名 (
oracle-oledb-se-2019
など) を入力します。名前には、英字、数字、ハイフンのみを使用できます。 -
[説明] に、オプショングループの簡単な説明 (
OLEDB_ORACLE option group for SQL Server SE 2019
など) を入力します。この説明は表示用に使用されます。 -
[エンジン] で [sqlserver-se] を選択します。
-
[Major engine version] (メジャーエンジンのバージョン) で、[15.00] を選択します。
-
-
[作成] を選択します。
次の手順では、SQL Server Standard Edition 2019 のオプショングループを作成します。
オプショングループを作成するには
-
以下のいずれかのコマンドを実行します。
Linux、macOS、Unix の場合:
aws rds create-option-group \ --option-group-name
oracle-oledb-se-2019
\ --engine-namesqlserver-se
\ --major-engine-version15.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-namesqlserver-se
^ --major-engine-version15.00
^ --option-group-description "OLEDB_ORACLE option group for SQL Server SE 2019
"
OLEDB_ORACLE
オプションのオプショングループへの追加
次に、AWS Management Console または AWS CLI を使用して OLEDB_ORACLE
オプションをオプショングループに追加します。
OLEDB_ORACLE オプションを追加するには
AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/
) を開きます。 -
ナビゲーションペインで、[オプショングループ] を選択します。
-
作成したオプショングループ (この例では oracle-oledb-se-2019) を選択します。
-
[オプションの追加] を選択します。
-
[Option details] (オプションの詳細) で、[Option name] (オプション名) として [OLEDB_ORACLE] を選択します。
-
[スケジュール] で、オプションをすぐに追加するか、次のメンテナンスウィンドウで追加するかを選択します。
-
[オプションを追加] を選択します。
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-immediatelyWindows の場合:
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-classdb.m5.2xlarge
\ --enginesqlserver-se
\ --engine-version15.0.4236.7.v1
\ --allocated-storage100
\ --manage-master-user-password \ --master-usernameadmin
\ --storage-typegp2
\ --license-modelli
\ --domain-iam-role-namemy-directory-iam-role
\ --domainmy-domain-id
\ --option-group-nameoracle-oledb-se-2019
\ --db-parameter-group-namemy-parameter-group-name
Windows の場合:
aws rds create-db-instance ^ --db-instance-identifier
mytestsqlserveroracleoledbinstance
^ --db-instance-classdb.m5.2xlarge
^ --enginesqlserver-se
^ --engine-version15.0.4236.7.v1
^ --allocated-storage100
^ --manage-master-user-password ^ --master-usernameadmin
^ --storage-typegp2
^ --license-modelli
^ --domain-iam-role-namemy-directory-iam-role
^ --domainmy-domain-id
^ --option-group-nameoracle-oledb-se-2019
^ --db-parameter-group-namemy-parameter-group-name
インスタンスを変更して OLEDB_ORACLE
オプショングループを関連付けるには
-
以下のいずれかのコマンドを実行します。
Linux、macOS、Unix の場合:
aws rds modify-db-instance \ --db-instance-identifier
mytestsqlserveroracleoledbinstance
\ --option-group-nameoracle-oledb-se-2019
\ --db-parameter-group-namemy-parameter-group-name
\ --apply-immediatelyWindows の場合:
aws rds modify-db-instance ^ --db-instance-identifier
mytestsqlserveroracleoledbinstance
^ --option-group-nameoracle-oledb-se-2019
^ --db-parameter-group-namemy-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 = オフ) | 説明 |
---|---|---|
|
1 |
パラメータ化されたクエリで SQL プレースホルダー ('?' で表されます) を許可します。 |
|
1 |
サブクエリなど、 |
|
0 |
プロバイダーに対して呼び出されるのは、ベースレベルの OLEDB インターフェイスだけです。 |
|
1 |
Microsoft SQL Server を有効にすると、プロバイダーをインプロセスサーバーとしてインスタンス化できます。Oracle リンクサーバーを使用するには、このプロパティを 1 に設定します。 |
|
0 |
0 以外の場合、SQL Server は更新を許可します。 |
|
False |
0 以外の場合、SQL Server はプロバイダーのインデックスを使用してデータを取得しようとします。 |
|
False |
設定すると、SQL Server は OLEDB プロバイダーに対するパススルークエリの実行を許可しません。このオプションはチェックできますが、パススルークエリを実行するのが適切な場合もあります。 |
|
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 オプションをオプショングループから削除するには
AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/
) を開きます。 -
ナビゲーションペインで、[オプショングループ] を選択します。
-
OLEDB_ORACLE
オプションが含まれているオプショングループ (前の例ではoracle-oledb-se-2019
) を選択します。 -
[オプションを削除] を選択します。
-
[Deletion options] (オプションの削除) で、[Options to delete] (削除するオプション) として [OLEDB_ORACLE] を選択します。
-
[Apply immediately] (すぐに適用) で、オプションをすぐに削除する場合は [Yes] (はい) を選択し、次のメンテナンスウィンドウで削除する場合は [No] (いいえ) を選択します。
-
[削除] を選択します。
以下の手順では、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-immediatelyWindows の場合:
aws rds remove-option-from-option-group ^ --option-group-name
oracle-oledb-se-2019
^ --options OLEDB_ORACLE ^ --apply-immediately