

# Amazon RDS for SQL Server での Oracle OLEDB によるリンクされたサーバーのサポート
<a name="Appendix.SQLServer.Options.LinkedServers_Oracle_OLEDB"></a>

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 インスタンスと統合できます。

**Contents**
+ [サポート対象のバージョンとリージョン](#LinkedServers_Oracle_OLEDB.VersionRegionSupport)
+ [制限と推奨事項](#LinkedServers_Oracle_OLEDB.Limitations)
+ [Oracle とリンクされたサーバーのアクティベーション](#LinkedServers_Oracle_OLEDB.Enabling)
  + [OLEDB\$1ORACLE のオプショングループの作成](#LinkedServers_Oracle_OLEDB.OptionGroup)
  + [`OLEDB_ORACLE` オプションのオプショングループへの追加](#LinkedServers_Oracle_OLEDB.Add)
  + [`OLEDB_ORACLE` バージョンオプションを別のバージョンに変更する](#LinkedServers_Oracle_OLEDB.Modify)
  + [オプショングループを DB インスタンスに関連付ける](#LinkedServers_Oracle_OLEDB.Apply)
+ [OLEDB プロバイダーのプロパティの変更](#LinkedServers_Oracle_OLEDB.ModifyProviderProperties)
+ [OLEDB ドライバープロパティの変更](#LinkedServers_Oracle_OLEDB.ModifyDriverProperties)
+ [Oracle とリンクされたサーバーの非アクティブ化](#LinkedServers_Oracle_OLEDB.Disable)

## サポート対象のバージョンとリージョン
<a name="LinkedServers_Oracle_OLEDB.VersionRegionSupport"></a>

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 とリンクされたサーバーは、以下の OLEDB Oracle ドライバーバージョンでサポートされています。
+ 21.7
+ 21.16

## 制限と推奨事項
<a name="LinkedServers_Oracle_OLEDB.Limitations"></a>

Oracle OLEDB とリンクされたサーバーに適用される次の制約事項および推奨事項に注意してください。
+ 各 RDS for SQL Server DB インスタンスのセキュリティグループに適切な TCP ポートを追加して、ネットワークトラフィックを許可します。例えば、EC2 Oracle DB インスタンスと RDS for SQL Server DB インスタンスの間にリンクされたサーバーを設定する場合、EC2 Oracle DB インスタンスの IP アドレスからのトラフィックを許可する必要があります。また、SQL Server がデータベース通信をリッスンするために使用しているポートでのトラフィックを許可する必要があります。セキュリティグループの詳細については、「[セキュリティグループによるアクセス制御](Overview.RDSSecurityGroups.md)」を参照してください。
+ オプショングループの `OLEDB_ORACLE` オプションをオン、オフ、または変更した後、RDS for SQL Server DB インスタンスを再起動します。オプショングループのステータスにはこれらのイベントに `pending_reboot` が表示され、必須です。常時オプションやミラーリングオプションが有効になっている RDS for SQL Server のマルチ AZ インスタンスの場合、インスタンスの新規作成後または復元後にインスタンスを再起動すると、フェイルオーバーが予想されます。
+ Oracle データソースのユーザー名とパスワードによる簡易認証のみをサポートします。
+ Open Database Connectivity (ODBC) ドライバーはサポートされていません。上記の OLEDB ドライバーバージョンのみがサポートされています。
+ 分散トランザクション (XA) はサポートされています。分散トランザクションを有効にするには、DB インスタンスのオプショングループで `MSDTC` オプションを有効にし、XA トランザクションが有効になっていることを確認します。詳細については、「[RDS for SQL Server での Microsoft 分散トランザクションコーディネーターのサポート](Appendix.SQLServer.Options.MSDTC.md)」を参照してください。
+ 接続文字列のショートカットとして使用するデータソース名 (DSN) の作成はサポートされていません。
+ OLEDB ドライバーのトレースはサポートされていません。SQL Server 拡張イベントを使用して OLEDB イベントをトレースできます。詳細については、「[RDS for SQL Server で拡張イベントを設定する](https://aws.amazon.com/blogs/database/set-up-extended-events-in-amazon-rds-for-sql-server/)」を参照してください。
+ SQL Server Management Studio (SSMS) を使用して Oracle リンクサーバーのカタログフォルダにアクセスすることはサポートされていません。

## Oracle とリンクされたサーバーのアクティベーション
<a name="LinkedServers_Oracle_OLEDB.Enabling"></a>

RDS for SQL Server DB インスタンスに `OLEDB_ORACLE` オプションを追加して、Oracle とリンクされたサーバーを有効にします。以下のプロセスを使用します。

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

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

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

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

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

### OLEDB\$1ORACLE のオプショングループの作成
<a name="LinkedServers_Oracle_OLEDB.OptionGroup"></a>

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

#### コンソール
<a name="LinkedServers_Oracle_OLEDB.OptionGroup.Console"></a>

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

**オプショングループを作成するには**

1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

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

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

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

   1. [**名前**] に、AWS アカウント内で一意のオプショングループ名 (**oracle-oledb-se-2019** など) を入力します。名前には、英字、数字、ハイフンのみを使用できます。

   1. [**説明**] に、オプショングループの簡単な説明 (**OLEDB\$1ORACLE option group for SQL Server SE 2019** など) を入力します。この説明は表示用に使用されます。

   1. [**エンジン**] で [**sqlserver-se**] を選択します。

   1. **[Major engine version]** (メジャーエンジンのバージョン) で、**[15.00]** を選択します。

1. **[作成]** を選択します。

#### CLI
<a name="LinkedServers_Oracle_OLEDB.OptionGroup.CLI"></a>

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

**オプショングループを作成するには**
+ 以下のいずれかのコマンドを実行します。  
**Example**  

  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` オプションのオプショングループへの追加
<a name="LinkedServers_Oracle_OLEDB.Add"></a>

次に、AWS マネジメントコンソール または AWS CLI を使用して `OLEDB_ORACLE` オプションをオプショングループに追加します。

#### コンソール
<a name="LinkedServers_Oracle_OLEDB.Add.Console"></a>

**OLEDB\$1ORACLE オプションを追加するには**

1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

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

1. 作成したオプショングループ (この例では **oracle-oledb-se-2019**) を選択します。

1. **[オプションの追加]** を選択します。

1. **[Option details]** (オプションの詳細) で、**[Option name]** (オプション名) として **[OLEDB\$1ORACLE]** を選択します。

1. **Version** で、インストールする OLEDB Oracle ドライバーのバージョンを選択します。

1. **[スケジュール]** で、オプションをすぐに追加するか、次のメンテナンスウィンドウで追加するかを選択します。

1. **[オプションを追加]** を選択します。

#### CLI
<a name="LinkedServers_Oracle_OLEDB.Add.CLI"></a>

**OLEDB\$1ORACLE オプションを追加するには**
+ オプショングループに [`OLEDB_ORACLE`] オプションを追加します。  
**Example**  

  Linux、macOS、Unix の場合:

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

  Windows の場合:

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

### `OLEDB_ORACLE` バージョンオプションを別のバージョンに変更する
<a name="LinkedServers_Oracle_OLEDB.Modify"></a>

`OLEDB_ORACLE` オプションバージョンを別のバージョンに変更するには、AWS マネジメントコンソール または AWS CLI を使用します。

#### コンソール
<a name="LinkedServers_Oracle_OLEDB.Modify.Console"></a>

**OLEDB\$1ORACLE オプションを変更するには**

1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

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

1. `OLEDB_ORACLE` オプションが含まれているオプショングループ (前の例では **oracle-oledb-se-2019**) を選択します。

1. **[Modify option]** (オプションの変更) を選択します。

1. **[Option details]** (オプションの詳細) で、**[Option name]** (オプション名) として **[OLEDB\$1ORACLE]** を選択します。

1. **[バージョン]** で、使用する OLEDB Oracle ドライバーのバージョンを選択します。

1. **[スケジュール]** で、オプションをすぐに変更するか、次のメンテナンスウィンドウで追加するかを選択します。

1. **[Modify option]** (オプションの変更) を選択します。

#### CLI
<a name="LinkedServers_Oracle_OLEDB.Add.CLI"></a>

`OLEDB_ORACLE` オプションバージョンを変更するには、使用するオプショングループおよびオプションバージョンを指定して、[https://docs.aws.amazon.com/cli/latest/reference/rds/add-option-to-option-group.html](https://docs.aws.amazon.com/cli/latest/reference/rds/add-option-to-option-group.html) AWS CLI コマンドを使用します。

**OLEDB\$1ORACLE オプションを変更するには**
+   
**Example**  

  Linux、macOS、Unix の場合:

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

  Windows の場合:

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

### オプショングループを DB インスタンスに関連付ける
<a name="LinkedServers_Oracle_OLEDB.Apply"></a>

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

#### コンソール
<a name="LinkedServers_Oracle_OLEDB.Apply.Console"></a>

Oracle のリンクされたサーバーの有効化を完了するには、`OLEDB_ORACLE` オプショングループを新規または既存の DB インスタンスに関連付けます。
+ 新しい DB インスタンスの場合は、インスタンスを起動するときにそれらを関連付けます。詳細については、「[Amazon RDS DB インスタンスの作成](USER_CreateDBInstance.md)」を参照してください。
+ 既存の DB インスタンスの場合は、インスタンスを変更することでそれらを関連付けます。詳細については、「[Amazon RDS DB インスタンスを変更する](Overview.DBInstance.Modifying.md)」を参照してください。

#### CLI
<a name="LinkedServers_Oracle_OLEDB.Apply.CLI"></a>

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

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

  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` オプショングループを関連付けるには**
+ 以下のいずれかのコマンドを実行します。  
**Example**  

  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 プロバイダーのプロパティの変更
<a name="LinkedServers_Oracle_OLEDB.ModifyProviderProperties"></a>

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 = オフ) | Description | 
| --- | --- | --- | 
| `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` | 誤 | 0 以外の場合、SQL Server はプロバイダーのインデックスを使用してデータを取得しようとします。 | 
| `Disallow adhoc access` | 誤 | 設定すると、SQL Server は OLEDB プロバイダーに対するパススルークエリの実行を許可しません。このオプションはチェックできますが、パススルークエリを実行するのが適切な場合もあります。 | 
| `Supports LIKE operator` | 1 | プロバイダーが LIKE キーワードを使用したクエリをサポートしていることを示します。 | 

## OLEDB ドライバープロパティの変更
<a name="LinkedServers_Oracle_OLEDB.ModifyDriverProperties"></a>

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 とリンクされたサーバーの非アクティブ化
<a name="LinkedServers_Oracle_OLEDB.Disable"></a>

Oracle でリンクされた Server を無効にするには、オプショングループから `OLEDB_ORACLE` オプションを削除します。

**重要**  
このオプションを削除しても、DB インスタンス上の既存のリンクされたサーバー設定は削除されません。DB インスタンスから削除するには、手動で削除する必要があります。  
削除後に `OLEDB_ORACLE` オプションを再度有効にすると、DB インスタンスで以前に設定したリンクされたサーバー設定を再利用できます。

### コンソール
<a name="LinkedServers_Oracle_OLEDB.Disable.Console"></a>

以下の手順では、`OLEDB_ORACLE` オプションを削除します。

**OLEDB\$1ORACLE オプションをオプショングループから削除するには**

1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

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

1. `OLEDB_ORACLE` オプションが含まれているオプショングループ (前の例では `oracle-oledb-se-2019`) を選択します。

1. **[オプションを削除]** を選択します。

1. **[Deletion options]** (オプションの削除) で、**[Options to delete]** (削除するオプション) として **[OLEDB\$1ORACLE]** を選択します。

1. **[Apply immediately]** (すぐに適用) で、オプションをすぐに削除する場合は **[Yes]** (はい) を選択し、次のメンテナンスウィンドウで削除する場合は **[No]** (いいえ) を選択します。

1. **[削除]** を選択します。

### CLI
<a name="LinkedServers_Oracle_OLEDB.Disable.CLI"></a>

以下の手順では、`OLEDB_ORACLE` オプションを削除します。

**OLEDB\$1ORACLE オプションをオプショングループから削除するには**
+ 以下のいずれかのコマンドを実行します。  
**Example**  

  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
  ```