

# Suporte para servidores vinculados ao Oracle OLEDB no Amazon RDS para SQL Server
<a name="Appendix.SQLServer.Options.LinkedServers_Oracle_OLEDB"></a>

Os servidores vinculados ao Oracle Provider para OLEDB no RDS para SQL Server possibilitam que você acesse fontes de dados externas em um banco de dados Oracle. Você pode ler dados de fontes de dados Oracle remotas e executar comandos em servidores de banco de dados Oracle remotos fora de sua instância de banco de dados do RDS para SQL Server. Usando servidores vinculados ao Oracle OLEDB, você pode:
+ Acessar diretamente fontes de dados que não sejam o SQL Server
+ Consultar diversas fontes de dados do Oracle com a mesma consulta sem mover os dados
+ Emitir consultas, atualizações, comandos e transações distribuídos em fontes de dados em um ecossistema corporativo
+ Integrar conexões com um banco de dados Oracle a partir do pacote Microsoft Business Intelligence (SSIS, SSRS, SSAS)
+ Migrar de um banco de dados Oracle para o RDS para SQL Server

Você pode ativar um ou mais servidores vinculados para Oracle em uma instância de banco de dados existente ou nova do RDS para SQL Server. Depois, é possível integrar fontes de dados Oracle externas à sua instância de banco de dados.

**Contents**
+ [Versões e regiões compatíveis](#LinkedServers_Oracle_OLEDB.VersionRegionSupport)
+ [Limitações e recomendações](#LinkedServers_Oracle_OLEDB.Limitations)
+ [Ativar servidores vinculados ao Oracle](#LinkedServers_Oracle_OLEDB.Enabling)
  + [Criar o grupo de opções para OLEDB\$1ORACLE](#LinkedServers_Oracle_OLEDB.OptionGroup)
  + [Adicionar a opção `OLEDB_ORACLE` ao grupo de opções](#LinkedServers_Oracle_OLEDB.Add)
  + [Modificar a opção de versão do `OLEDB_ORACLE` para outra versão](#LinkedServers_Oracle_OLEDB.Modify)
  + [Associar o grupo de opções à instância de banco de dados](#LinkedServers_Oracle_OLEDB.Apply)
+ [Modificar propriedades do provedor do OLEDB](#LinkedServers_Oracle_OLEDB.ModifyProviderProperties)
+ [Modificar propriedades do driver OLEDB](#LinkedServers_Oracle_OLEDB.ModifyDriverProperties)
+ [Desativar servidores vinculados ao Oracle](#LinkedServers_Oracle_OLEDB.Disable)

## Versões e regiões compatíveis
<a name="LinkedServers_Oracle_OLEDB.VersionRegionSupport"></a>

O RDS para SQL Server é compatível com servidores vinculados ao Oracle OLEDB em todas as regiões para as edições SQL Server Standard e Enterprise Edition nas seguintes versões:
+ SQL Server 2022, todas as versões
+ SQL Server 2019, todas as versões
+ SQL Server 2017, todas as versões

Os servidores vinculados ao Oracle OLEDB são compatíveis com as seguintes versões do banco de dados Oracle:
+ Oracle Database 21c, todas as versões
+ Oracle Database 19c, todas as versões
+ Oracle Database 18c, todas as versões

Os servidores vinculados ao Oracle OLEDB são compatíveis com as seguintes versões do driver OLEDB Oracle:
+ 21.7
+ 21.16

## Limitações e recomendações
<a name="LinkedServers_Oracle_OLEDB.Limitations"></a>

Lembre-se das seguintes limitações e recomendações que se aplicam aos servidores vinculados ao Oracle OLEDB:
+ Permita o tráfego de rede adicionando a porta TCP aplicável no grupo de segurança para cada instância de banco de dados do RDS para SQL Server. Por exemplo, se você estiver configurando um servidor vinculado entre uma instância de banco de dados Oracle do EC2 e uma instância de banco de dados do RDS para SQL Server, deverá permitir o tráfego do endereço IP da instância de banco de dados Oracle do EC2. Você também deve permitir o tráfego na porta que o SQL Server está usando para escutar a comunicação do banco de dados. Para obter mais informações sobre grupos de segurança, consulte [Controlar acesso com grupos de segurança](Overview.RDSSecurityGroups.md).
+ Execute uma reinicialização da instância de banco de dados do RDS para SQL Server depois de ativar, desativar ou modificar a opção `OLEDB_ORACLE` em seu grupo de opções. O status do grupo de opções é `pending_reboot` para esses eventos e é obrigatório. Para instâncias multi-AZ do RDS para SQL Server com a opção “Sempre ativa” ou “Espelhamento” habilitada, um failover é esperado quando a instância é reiniciada após a criação ou restauração da nova instância.
+ Somente a autenticação simples é compatível com nome de usuário e senha para a fonte de dados Oracle.
+ Não há suporte aos drivers do Open Database Connectivity (ODBC). Somente as versões do driver OLEDB listadas acima são compatíveis.
+ Transações distribuídas (XA) são compatíveis. Para ativar transações distribuídas, ative a opção `MSDTC` no Grupo de Opções para sua instância de banco de dados e garanta que as transações XA estejam ativadas. Para obter mais informações, consulte [Suporte para o Microsoft Distributed Transaction Coordinator no RDS for SQL Server](Appendix.SQLServer.Options.MSDTC.md).
+ A criação de nomes de fonte de dados (DSNs) para usar como atalho para uma cadeia de conexão não é compatível.
+ O rastreamento do driver OLEDB não é compatível. Você pode usar o SQL Server Extended Events para rastrear eventos do OLEDB. Para obter mais informações, consulte [Set up Extended Events in RDS for SQL Server](https://aws.amazon.com/blogs/database/set-up-extended-events-in-amazon-rds-for-sql-server/) (Configurar eventos estendidos no RDS para SQL Server).
+ O acesso à pasta de catálogos de um servidor vinculado Oracle não é compatível com ouso do SQL Server Management Studio (SSMS).

## Ativar servidores vinculados ao Oracle
<a name="LinkedServers_Oracle_OLEDB.Enabling"></a>

Ative servidores vinculados ao Oracle adicionando a opção `OLEDB_ORACLE` à sua instância de banco de dados do RDS para SQL Server. Use o seguinte processo:

1. Crie um grupo de opções ou selecione um existente.

1. Adicione a opção `OLEDB_ORACLE` ao grupo de opções.

1. Selecione uma versão do driver OLEDB para usar.

1. Associe o grupo de opções à instância de banco de dados.

1. Reinicialize a instância de banco de dados.

### Criar o grupo de opções para OLEDB\$1ORACLE
<a name="LinkedServers_Oracle_OLEDB.OptionGroup"></a>

Para trabalhar com servidores vinculados ao Oracle, crie um grupo de opções ou modifique um grupo de opções que corresponda à edição do SQL Server e à versão da instância de banco de dados que você pretende usar. Para concluir esse procedimento, use o Console de gerenciamento da AWS ou a AWS CLI.

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

O procedimento a seguir cria um grupo de opções para o SQL Server Standard Edition 2019.

**Como criar o grupo de opções**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Option groups (Grupos de opções)**.

1. Escolha **Create group (Criar grupo)**.

1. Na janela **Create option group (Criar grupo de opções)**, faça o seguinte:

   1. Em **Name** (Nome), insira um nome para o grupo de opções que seja exclusivo na sua conta da AWS, como **oracle-oledb-se-2019**. O nome pode conter somente letras, números e hifens.

   1. Em **Descrição**, insira uma breve descrição do grupo de opções, como **OLEDB\$1ORACLE option group for SQL Server SE 2019**. A descrição é usada para fins de exibição.

   1. Em **Engine (Mecanismo)**, selecione **sqlserver-se**.

   1. Em **Major engine version** (Versão do mecanismo principal), selecione **15.00**.

1. Escolha **Criar**.

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

O procedimento a seguir cria um grupo de opções para o SQL Server Standard Edition 2019.

**Como criar o grupo de opções**
+ Execute um dos seguintes comandos:  
**Example**  

  Para Linux, macOS ou 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"
  ```

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

### Adicionar a opção `OLEDB_ORACLE` ao grupo de opções
<a name="LinkedServers_Oracle_OLEDB.Add"></a>

Depois, use o Console de gerenciamento da AWS ou a AWS CLI para adicionar a opção `OLEDB_ORACLE` ao grupo de opções.

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

**Como adicionar a opção OLEDB\$1ORACLE**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Option groups (Grupos de opções)**.

1. Selecione o grupo de opções que você acabou de criar, que é **oracle-oledb-se-2019** neste exemplo.

1. Escolha **Add option (Adicionar opção)**.

1. Em **Option details** (Detalhes da opção), selecione **OLEDB\$1ORACLE** em **Option name** (Nome da opção).

1. Em **Versão**, escolha a versão do driver OLEDB Oracle que você deseja instalar.

1. Em **Scheduling (Programação)**, escolha se deseja adicionar a opção imediatamente ou na próxima janela de manutenção.

1. Escolha **Add option (Adicionar opção)**.

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

**Como adicionar a opção OLEDB\$1ORACLE**
+ Adicione a opção `OLEDB_ORACLE` ao grupo de opções.  
**Example**  

  Para Linux, macOS ou Unix:

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

  Para Windows:

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

### Modificar a opção de versão do `OLEDB_ORACLE` para outra versão
<a name="LinkedServers_Oracle_OLEDB.Modify"></a>

Para modificar a versão da opção `OLEDB_ORACLE` para outra versão, use o Console de gerenciamento da AWS ou a AWS CLI.

#### Console
<a name="LinkedServers_Oracle_OLEDB.Modify.Console"></a>

**Como modificar a opção OLEDB\$1ORACLE**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Option groups (Grupos de opções)**.

1. Selecione o grupo de opções com a opção `OLEDB_ORACLE` (**oracle-oledb-se-2019** no exemplo anterior).

1. Escolha **Modify option** (Modificar opção).

1. Em **Option details** (Detalhes da opção), selecione **OLEDB\$1ORACLE** em **Option name** (Nome da opção).

1. Em **Versão**, escolha a versão do driver OLEDB Oracle que você deseja usar.

1. Em **Programação**, escolha se deseja adicionar a opção imediatamente ou na próxima janela de manutenção.

1. Escolha **Modify option** (Modificar opção).

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

Para modificar a versão da opção `OLEDB_ORACLE`, use o comando [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) da AWS CLI com o grupo de opções e a versão da opção que você deseja usar.

**Como modificar a opção OLEDB\$1ORACLE**
+   
**Example**  

  Para Linux, macOS ou Unix:

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

  Para Windows:

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

### Associar o grupo de opções à instância de banco de dados
<a name="LinkedServers_Oracle_OLEDB.Apply"></a>

Para associar o grupo de opções `OLEDB_ORACLE` e o grupo de parâmetros à sua instância de banco de dados, use o Console de gerenciamento da AWS ou a AWS CLI 

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

Para concluir a ativação de servidores vinculados para Oracle, associe o grupo de opções `OLEDB_ORACLE` a uma instância de banco de dados nova ou existente:
+ Para uma nova instância de banco de dados, associe-os ao executar a instância. Para obter mais informações, consulte [Criar uma instância de banco de dados do Amazon RDS](USER_CreateDBInstance.md).
+ Para uma instância de banco de dados existente, associe-os modificando a instância. Para obter mais informações, consulte [Modificar uma instância de banco de dados do Amazon RDS](Overview.DBInstance.Modifying.md).

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

É possível associar o grupo de opções `OLEDB_ORACLE` e o grupo de parâmetros a uma instância de banco de dados nova ou existente.

**Como criar uma instância com o grupo de opções `OLEDB_ORACLE` e o grupo de parâmetros**
+ Especifique o mesmo tipo de mecanismo de banco de dados e a versão principal que você usou ao criar o grupo de opções.  
**Example**  

  Para Linux, macOS ou 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
  ```

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

**Como modificar uma instância e associar o grupo de opções `OLEDB_ORACLE`**
+ Execute um dos seguintes comandos:  
**Example**  

  Para Linux, macOS ou 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
  ```

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

## Modificar propriedades do provedor do OLEDB
<a name="LinkedServers_Oracle_OLEDB.ModifyProviderProperties"></a>

Você pode visualizar e alterar as propriedades do provedor do OLEDB. Somente o usuário `master` pode realizar essa tarefa. Todos os servidores vinculados para Oracle criados na instância de banco de dados usam as mesmas propriedades desse provedor do OLEDB. Chame o procedimento armazenado `sp_MSset_oledb_prop` para alterar as propriedades do provedor do OLEDB.

Como alterar as propriedades do provedor do 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
```

As seguintes propriedades podem ser modificadas:


****  

| Nome da propriedade | Valor recomendado (1 = ativado, 0 = desativado) | Descrição | 
| --- | --- | --- | 
| `Dynamic parameter` | 1 | Permite espaços reservados para SQL (representados por “?”) em consultas parametrizadas. | 
| `Nested queries` | 1 | Permite declarações `SELECT` aninhadas na cláusula `FROM`, como subconsultas. | 
| `Level zero only` | 0 | Somente interfaces OLEDB de nível básico são chamadas em relação ao provedor. | 
| `Allow inprocess` | 1 | Se ativado, o Microsoft SQL Server permite que o provedor seja instanciado como um servidor em processo. Defina essa propriedade como 1 para usar servidores vinculados Oracle. | 
| `Non transacted updates` | 0 | Se for diferente de zero, o SQL Server permitirá atualizações. | 
| `Index as access path` | Falso | Se for diferente de zero, o SQL Server tentará usar índices do provedor para buscar dados. | 
| `Disallow adhoc access` | Falso | Se definido, o SQL Server não permitirá a execução de consultas de passagem no provedor do OLEDB. Embora essa opção possa ser marcada, às vezes é apropriado executar consultas de passagem. | 
| `Supports LIKE operator` | 1 | Indica que o provedor é compatível com consultas usando a palavra-chave LIKE. | 

## Modificar propriedades do driver OLEDB
<a name="LinkedServers_Oracle_OLEDB.ModifyDriverProperties"></a>

Você pode visualizar e alterar as propriedades do driver OLEDB ao criar um servidor vinculado para Oracle. Somente o usuário `master` pode realizar essa tarefa. As propriedades do driver definem como o driver OLEDB manipula os dados ao trabalhar com uma fonte de dados Oracle remota. As propriedades do driver são específicas de cada servidor vinculado Oracle criado na instância de banco de dados. Chame o procedimento armazenado `master.dbo.sp_addlinkedserver` para alterar as propriedades do driver OLEDB.

Exemplo: Para criar um servidor vinculado e alterar a propriedade `FetchSize` do driver OLEDB

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

**nota**  
Especifique uma senha diferente do prompt mostrado aqui como prática recomendada de segurança.

## Desativar servidores vinculados ao Oracle
<a name="LinkedServers_Oracle_OLEDB.Disable"></a>

Para desabilitar servidores vinculados ao Oracle, remova a opção `OLEDB_ORACLE` do grupo de opções.

**Importante**  
Remover a opção não exclui as configurações de servidor vinculado existentes na instância de banco de dados. Você deve descartá-los manualmente para removê-los da instância de banco de dados.  
Você pode reativar a opção `OLEDB_ORACLE` após a remoção para reutilizar as configurações do servidor vinculado definidas anteriormente na instância de banco de dados.

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

O procedimento a seguir remove a opção `OLEDB_ORACLE`.

**Como remover a opção OLEDB\$1ORACLE do grupo de opções**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Option groups (Grupos de opções)**.

1. Selecione o grupo de opções com a opção `OLEDB_ORACLE` (`oracle-oledb-se-2019` nos exemplos anteriores).

1. Selecione **Delete option (Excluir opção)**.

1. Em **Deletion options** (Opções de exclusão), selecione **OLEDB\$1ORACLE** em **Options to delete** (Opções a serem excluídas).

1. Em **Apply immediately** (Aplicar imediatamente), selecione **Yes** (Sim) para excluí-la imediatamente ou **No** (Não) para excluí-la na próxima janela de manutenção.

1. Escolha **Excluir**.

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

O procedimento a seguir remove a opção `OLEDB_ORACLE`.

**Como remover a opção OLEDB\$1ORACLE do grupo de opções**
+ Execute um dos seguintes comandos:  
**Example**  

  Para Linux, macOS ou Unix:

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

  Para Windows:

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