

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 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 資料庫執行個體之外的遠端 Oracle 資料庫伺服器執行命令。搭配 Oracle OLEDB 使用連結的伺服器，您可以
+ 直接存取 SQL Server 以外的資料來源
+ 在沒有移動資料的情況下，使用相同查詢針對各種 Oracle 資料進行查詢
+ 跨企業生態系統對資料來源發出分散式查詢、更新、命令和交易
+ 從 Microsoft Business Intelligence 套件 (SSIS、SSRS、SSAS) 內整合與 Oracle 資料庫的連線
+ 從 Oracle 資料庫遷移到 RDS for SQL Server

在現有或新的 RDS for SQL Server 資料庫執行個體上，您可以針對 Oracle 啟動一或多個連結的伺服器。然後，您可以整合外部 Oracle 資料來源與資料庫執行個體。

**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)
  + [將選項群組關聯至您的資料庫執行個體](#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>

對於下列版本上的 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，所有版本

下列 OLEDB Oracle 驅動程式版本支援連結的伺服器搭配 Oracle OLEDB：
+ 21.7
+ 21.16

## 限制與建議
<a name="LinkedServers_Oracle_OLEDB.Limitations"></a>

請記住，連結的伺服器搭配 Oracle OLEDB 時適用下列限制和建議：
+ 針對每個 RDS for SQL Server 資料庫執行個體，透過在安全群組中新增適用的 TCP 連接埠，以允許網路流量。例如，如果您要在 EC2 Oracle 資料庫執行個體與 RDS for SQL Server 資料庫執行個體之間設定連結的伺服器，則必須允許來自 EC2 Oracle 資料庫執行個體 IP 地址的流量。您也必須在 SQL Server 用來接聽資料庫通訊的連接埠上允許流量。如需安全群組的詳細資訊，請參閱 [使用安全群組控制存取](Overview.RDSSecurityGroups.md)。
+ 在開啟、關閉或修改選項群組中的 `OLEDB_ORACLE` 選項之後，執行 RDS for SQL Server 資料庫執行個體的重新啟動。選項群組狀態會針對這些事件顯示 `pending_reboot`，且為必要項目。對於已啟用 AlwaysOn 或鏡像選項的 RDS for SQL Server 多可用區域執行個體，在建立新執行個體或還原後將執行個體重新開機時，預期會發生容錯移轉。
+ 僅支援使用 Oracle 資料來源的使用者名稱和密碼進行簡易身分驗證。
+ 不支援開放式資料庫連線 (ODBC) 驅動程式。僅支援上述 OLEDB 驅動程式版本。
+ 支援分散式交易 (XA)。若要啟用分散式交易，請在資料庫執行個體的選項群組中開啟 `MSDTC` 選項，並確定 XA 交易已開啟。如需詳細資訊，請參閱[RDS for SQL Server 中的 Microsoft Distributed Transaction Coordinator 支援](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>

將 `OLEDB_ORACLE` 選項新增至 RDS for SQL Server 資料庫執行個體，來啟用連結的伺服器搭配 Oracle。請使用下列程序：

1. 建立新的選項群組或選擇現有的選項群組。

1. 將 `OLEDB_ORACLE` 選項新增至選項群組。

1. 選擇要使用的 OLEDB 驅動程式版本。

1. 將選項群組與資料庫執行個體建立關聯。

1. 重新啟動資料庫執行個體。

### 建立 OLEDB\$1ORACLE 的選項群組
<a name="LinkedServers_Oracle_OLEDB.OptionGroup"></a>

若要搭配 Oracle 使用連結的伺服器，請建立選項群組，或修改對應至 SQL Server 版本和您計劃使用的資料庫執行個體版本的選項群組。若要完成此程序，請使用 AWS 管理主控台 或 AWS CLI。

#### 主控台
<a name="LinkedServers_Oracle_OLEDB.OptionGroup.Console"></a>

下列程序會建立 SQL Server Standard Edition 2019 的選項群組。

**建立選項群組**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Option groups** (選項群組)。

1. 選擇**建立群組**。

1. 在 **Create option group (建立選項群組)** 視窗中，執行下列動作：

   1. 針對**名稱**，輸入您 AWS 帳戶中唯一的選項群組名稱，例如 **oracle-oledb-se-2019**。名稱僅可包含字母、數字與連字號。

   1. 對於 **Description (描述)**，請輸入選項群組的簡短描述，例如 **OLEDB\$1ORACLE option group for SQL Server SE 2019**。用於顯示用途的說明。

   1. 對於 **Engine (引擎)**，請選擇 **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 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Option groups** (選項群組)。

1. 選擇您剛剛建立的選項群組，亦即這個範例中的 **oracle-oledb-se-2019**。

1. 選擇 **Add option (新增選項)**。

1. 在 **Option details** (選項詳細資訊) 下，選擇 **OLEDB\$1ORACLE** 作為 **Option name** (選項名稱)。

1. 在**版本**下，選擇您要安裝的 OLEDB Oracle 驅動程式版本。

1. 在 **Scheduling (排程)** 下，選擇要立即新增選項或是在下一個維護時段新增選項。

1. 選擇 **Add option (新增選項)**。

#### 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 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Option groups** (選項群組)。

1. 選擇具有 `OLEDB_ORACLE` 選項的選項群組 (上述範例中的 **oracle-oledb-se-2019**)。

1. 選擇 **Modify option** (修改選項)。

1. 在 **Option details** (選項詳細資訊) 下，選擇 **OLEDB\$1ORACLE** 作為 **Option name** (選項名稱)。

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

### 將選項群組關聯至您的資料庫執行個體
<a name="LinkedServers_Oracle_OLEDB.Apply"></a>

若要將`OLEDB_ORACLE`選項群組和參數群組與您的資料庫執行個體建立關聯，請使用 AWS 管理主控台 或 AWS CLI 

#### 主控台
<a name="LinkedServers_Oracle_OLEDB.Apply.Console"></a>

若要完成啟用 Oracle 連結伺服器，請將您的 `OLEDB_ORACLE` 選項群組與新的或現有的資料庫執行個體建立關聯
+ 對於新的資料庫執行個體，請在啟動執行個體時將它們相關聯。如需更多詳細資訊，請參閱 [建立 Amazon RDS 資料庫執行個體](USER_CreateDBInstance.md)。
+ 對於現有的資料庫執行個體，請透過修改執行個體來建立關聯。如需詳細資訊，請參閱[修改 Amazon RDS 資料庫執行個體](Overview.DBInstance.Modifying.md)。

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

您可以將 `OLEDB_ORACLE` 選項群組和參數群組與新的或現有的資料庫執行個體產生關聯。

**使用 `OLEDB_ORACLE` 選項群組和參數群組建立執行個體**
+ 指定建立選項群組時所使用的相同資料庫引擎類型和主要版本。  
**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` 使用者可以執行此任務。在資料庫執行個體上建立的所有 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 | 允許 `SELECT` 子句中的巢狀 `FROM` 陳述式，例如子查詢。 | 
| `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 驅動程式屬性
<a name="LinkedServers_Oracle_OLEDB.ModifyDriverProperties"></a>

建立 Oracle 連結伺服器時，您可以檢視和變更 OLEDB 驅動程式的屬性。只有 `master` 使用者可以執行此任務。驅動程式屬性定義 OLEDB 驅動程式在使用遠端 Oracle 資料來源時處理資料的方式。驅動程式屬性專用於在資料庫執行個體上建立的每個 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，請將 `OLEDB_ORACLE` 選項從其選項群組中移除。

**重要**  
移除選項並不會刪除資料庫執行個體上現有的連結伺服器組態。您必須手動捨棄它們，才能將它們從資料庫執行個體中移除。  
您可以在移除後重新啟用 `OLEDB_ORACLE` 選項，以重複使用先前在資料庫執行個體上設定的連結伺服器組態。

### 主控台
<a name="LinkedServers_Oracle_OLEDB.Disable.Console"></a>

下列程序會移除 `OLEDB_ORACLE` 選項。

**從選項群組中移除 OLEDB\$1ORACLE 選項**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在導覽窗格中，選擇 **Option groups** (選項群組)。

1. 選擇具有 `OLEDB_ORACLE` 選項的選項群組 (上述範例中的 `oracle-oledb-se-2019`)。

1. 選擇 **Delete option (刪除選項)**。

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