

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Conectando-se aos bancos de dados Oracle com o AWS Schema Conversion Tool
<a name="CHAP_Source.Oracle"></a>

Você pode usar AWS SCT para converter esquemas, objetos de código de banco de dados e código de aplicativo do Oracle Database para os seguintes destinos: 
+ Amazon RDS para MySQL
+ Amazon Aurora Edição Compatível com MySQL
+ Amazon RDS para PostgreSQL
+ Amazon Aurora Edição Compatível com PostgreSQL
+ Amazon RDS para Oracle
+ Amazon RDS para MariaDB

Quando a fonte é um banco de dados Oracle, os comentários podem ser convertidos para o formato apropriado, por exemplo, em um banco de dados PostgreSQL. AWS SCT pode converter comentários em tabelas, visualizações e colunas. Os comentários podem incluir apóstrofos; AWS SCT duplica os apóstrofos ao converter instruções SQL, assim como acontece com literais de string.

Para obter mais informações, consulte.

**Topics**
+ [Privilégios do Oracle como origem](#CHAP_Source.Oracle.Permissions)
+ [Conectar-se ao Oracle como origem](#CHAP_Source.Oracle.Connecting)
+ [Migração da Oracle para o Amazon RDS for PostgreSQL ou Amazon Aurora PostgreSQL com AWS Schema Conversion Tool](CHAP_Source.Oracle.ToPostgreSQL.md)
+ [Migração da Oracle para o Amazon RDS for MySQL ou Amazon Aurora MySQL com o AWS Schema Conversion Tool](CHAP_Source.Oracle.ToMySQL.md)
+ [Migração do banco de dados Oracle para o Amazon RDS for Oracle com AWS Schema Conversion Tool](CHAP_Source.Oracle.ToRDSOracle.md)

## Privilégios do Oracle como origem
<a name="CHAP_Source.Oracle.Permissions"></a>

Os privilégios obrigatórios para Oracle como origem são listados a seguir: 
+ CONECTAR 
+ SELECT\$1CATALOG\$1ROLE 
+ SELECT ANY DICTIONARY 
+ SELECT ON SYS.ARGUMENT\$1

## Conectar-se ao Oracle como origem
<a name="CHAP_Source.Oracle.Connecting"></a>

Use o procedimento a seguir para conectar seu banco de dados de origem do Oracle com a AWS Schema Conversion Tool. 

**Para se conectar a um banco de dados de origem do Oracle**

1. No AWS Schema Conversion Tool, escolha **Adicionar fonte**. 

1. Escolha **Oracle** e, em seguida, escolha **Avançar**. 

   A caixa de diálogo **Adicionar origem** é exibida.

1. Em **Nome da conexão**, insira um nome para o banco de dados. A AWS SCT exibe esse nome na árvore no painel esquerdo. 

1. Use as credenciais do banco de dados AWS Secrets Manager ou insira-as manualmente:
   + Para usar as credenciais do banco de dados do Secrets Manager, use as instruções a seguir:

     1. Em **AWS Secret**, escolha o nome do segredo.

     1. Escolha **Preencher** para preencher automaticamente todos os valores na caixa de diálogo de conexão do banco de dados do Secrets Manager.

     Para obter informações sobre o uso de credenciais de banco de dados do Secrets Manager, consulte a [Configurando AWS Secrets Manager no AWS Schema Conversion Tool](CHAP_UserInterface.SecretsManager.md).
   + Para inserir manualmente as informações de conexão do banco de dados do Oracle, use as instruções a seguir:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/SchemaConversionTool/latest/userguide/CHAP_Source.Oracle.html)

1. Escolha **Testar conexão** para verificar se AWS SCT pode se conectar ao seu banco de dados de origem. 

1. Escolha **Conectar** para se conectar ao banco de dados de origem.

# Migração da Oracle para o Amazon RDS for PostgreSQL ou Amazon Aurora PostgreSQL com AWS Schema Conversion Tool
<a name="CHAP_Source.Oracle.ToPostgreSQL"></a>

Ao converter um banco de dados Oracle para RDS para PostgreSQL ou Amazon Aurora PostgreSQL esteja ciente do seguinte.

**Topics**
+ [Privilégios do PostgreSQL como um banco de dados de destino](#CHAP_Source.Oracle.ToPostgreSQL.ConfigureTarget)
+ [Configurações da conversão do Oracle para o PostgreSQL](#CHAP_Source.Oracle.ToPostgreSQL.ConversionSettings)
+ [Converter sequências Oracle](#CHAP_Source.Oracle.ToPostgreSQL.ConvertSequences)
+ [Converter Oracle ROWID](#CHAP_Source.Oracle.ToPostgreSQL.ConvertRowID)
+ [Converter o SQL dinâmico do Oracle](#CHAP_Source.Oracle.ToPostgreSQL.DynamicSQL)
+ [Conversão de partições Oracle](#CHAP_Source.Oracle.ToPostgreSQL.PG10Partitioning)

Ao converter objetos do sistema Oracle em PostgreSQL AWS SCT , realiza conversões conforme mostrado na tabela a seguir.


| Objeto do sistema do Oracle | Description | Objeto PostgreSQL convertido | 
| --- | --- | --- | 
| V\$1VERSION  | Exibe os números de versão dos componentes da biblioteca principal no banco de dados Oracle | aws\$1oracle\$1ext.v\$1version | 
| V\$1INSTANCE | Uma exibição que mostra o estado da instância atual. | aws\$1oracle\$1ext.v\$1instance | 

Você pode usar AWS SCT para converter arquivos Oracle SQL\$1Plus em psql, que é um front-end baseado em terminal para o PostgreSQL. Para obter mais informações, consulte [Convertendo o SQL do aplicativo usando AWS SCT](CHAP_Converting.App.md).

## Privilégios do PostgreSQL como um banco de dados de destino
<a name="CHAP_Source.Oracle.ToPostgreSQL.ConfigureTarget"></a>

Para usar o PostgreSQL como destino AWS SCT , é necessário o privilégio. `CREATE ON DATABASE` Certifique-se de conceder esse privilégio para cada banco de dados PostgreSQL de destino.

Para usar os sinônimos públicos convertidos, altere o caminho de pesquisa padrão do banco de dados para `"$user", public_synonyms, public`.

É possível utilizar o exemplo de código a seguir para criar um usuário do banco de dados e conceder os privilégios.

```
CREATE ROLE user_name LOGIN PASSWORD 'your_password';
GRANT CREATE ON DATABASE db_name TO user_name;
ALTER DATABASE db_name SET SEARCH_PATH = "$user", public_synonyms, public;
```

No exemplo anterior, *user\$1name* substitua pelo nome do seu usuário. Em seguida, *db\$1name* substitua pelo nome do seu banco de dados de destino. Por fim, *your\$1password* substitua por uma senha segura.

Para usar o Amazon RDS for PostgreSQL como destino, é necessário o privilégio. AWS SCT `rds_superuser`

No PostgreSQL, apenas o proprietário do esquema ou um `superuser` pode descartar um esquema. O proprietário pode descartar um esquema e todos os objetos incluídos nesse esquema, mesmo que o proprietário do esquema não possua alguns de seus objetos.

Ao usar usuários diferentes para converter e aplicar esquemas diferentes ao banco de dados de destino, você pode receber uma mensagem de erro quando não AWS SCT consegue descartar um esquema. Para evitar essa mensagem de erro, use o perfil `superuser`. 

## Configurações da conversão do Oracle para o PostgreSQL
<a name="CHAP_Source.Oracle.ToPostgreSQL.ConversionSettings"></a>

**Para editar as configurações de conversão do Oracle para o PostgreSQL, escolha Configurações em e, AWS SCT em seguida, **escolha** Configurações de conversão.** Na lista superior, escolha **Oracle** e, em seguida, escolha **Oracle — PostgreSQL**. AWS SCT exibe todas as configurações disponíveis para conversão de Oracle para PostgreSQL.

As configurações AWS SCT de conversão de Oracle para PostgreSQL incluem opções para o seguinte:
+ Para limitar o número de comentários com itens de ação no código convertido.

  Em **Adicionar comentários no código convertido para os itens de ação de severidade selecionada e superior**, escolha a severidade dos itens de ação. AWS SCT adiciona comentários no código convertido para itens de ação da severidade selecionada e superior.

  Por exemplo, para minimizar o número de comentários em seu código convertido, escolha **Somente erros**. Para incluir comentários para todos os itens de ação em seu código convertido, escolha **Todas as mensagens**.
+ Para permitir AWS SCT a conversão de visualizações materializadas da Oracle em tabelas ou visualizações materializadas no PostgreSQL. Para **Conversão de visão materializada em**, escolha como converter as visões materializadas de origem.
+ Trabalhar com o código do Oracle de origem quando ele incluir os perfis `TO_CHAR`, `TO_DATE` e `TO_NUMBER` com parâmetros que não são compatíveis com o PostgreSQL. Por padrão, a AWS SCT emula a utilização desses parâmetros no código convertido.

  Quando seu código do Oracle de origem inclui somente parâmetros compatíveis com o PostgreSQL, é possível utilizar perfis nativos do PostgreSQL, `TO_CHAR`, `TO_DATE` e `TO_NUMBER`. Nesse caso, o código convertido funciona mais rápido. Para incluir somente esses parâmetros, selecione os seguintes valores:
  + **A função TO\$1CHAR() não usa strings de formatação específicas do Oracle**
  + **A função TO\$1DATE() não usa strings de formatação específicas do Oracle**
  + **A função TO\$1NUMBER() não usa strings de formatação específicas do Oracle**
+ Para resolver quando seu banco de dados Oracle de origem armazena somente valores inteiros nas colunas de chave primária ou estrangeira do tipo de dados `NUMBER`, AWS SCT pode converter essas colunas no tipo de dados `BIGINT`. Essa abordagem melhorará o desempenho do código convertido. Para adotar essa abordagem, selecione **Converter colunas de chave primária/estrangeira NUMBER em colunas BIGINT.** Verifique se a origem não inclui valores de ponto flutuante nessas colunas para evitar perda de dados.
+ Ignorar gatilhos e restrições desativados em seu código-fonte. Para fazer isso, escolha **Ignorar triggers e restrições desabilitados**.
+ Para usar AWS SCT para converter variáveis de string chamadas de SQL dinâmico. O código de banco de dados pode alterar os valores dessas variáveis de string. Para garantir que AWS SCT sempre converta o valor mais recente dessa variável de string, selecione **Converter o código SQL dinâmico criado nas rotinas chamadas**.
+ Para saber se as versões 10 e anteriores do PostgreSQL não são compatíveis com procedimentos. Se você ou seus usuários não estiverem familiarizados com o uso de procedimentos no PostgreSQL AWS SCT , podem converter procedimentos Oracle em funções do PostgreSQL. Para fazer isso, selecione **Converter procedimentos em perfis**.
+ Ver informações adicionais sobre os itens de ação ocorridos. Para fazer isso, você pode adicionar funções específicas ao pacote de extensões selecionando **Adicionar um bloco de aumento de exceções para problemas de migração com os próximos níveis de gravidade**. Escolha os níveis de gravidade para aumentar as exceções definidas pelo usuário.
+ Trabalhar com um banco de dados Oracle de origem que pode incluir restrições com nomes gerados automaticamente. Se o código-fonte utilizar esses nomes, certifique-se de selecionar **Converter os nomes das restrições geradas pelo sistema usando os nomes de origem**. Se o código-fonte utilizar essas restrições, mas não utilizar seus nomes, desmarque essa opção para aumentar a velocidade da conversão.
+ Para saber se o banco de dados e as aplicações são executados em fusos horários diferentes. Por padrão, AWS SCT emula fusos horários no código convertido. No entanto, essa emulação não é necessária quando o banco de dados e as aplicações utilizam o mesmo fuso horário. Nesse caso, selecione **O fuso horário no lado do cliente corresponde ao fuso horário no servidor**.
+ Para saber se o banco de dados da origem e do destino são executados em fusos horários diferentes. Se eles forem executados em fusos horários diferentes, o perfil que emula o perfil do Oracle integrado `SYSDATE` retornará valores diferentes em comparação com o perfil de origem. Para garantir que os perfis de origem e de destino retornem os mesmos valores, escolha **Definir o fuso horário padrão para a emulação SYSDATE**.
+ Utilizar os perfis da extensão orafce no código convertido. Para fazer isso, em **Usar implementação do orafce**, selecione as funções a serem usadas. Para obter mais informações sobre orafce, consulte [orafce](https://github.com/orafce/orafce) on. GitHub

## Converter sequências Oracle
<a name="CHAP_Source.Oracle.ToPostgreSQL.ConvertSequences"></a>

AWS SCT converte sequências do Oracle para o PostgreSQL. Se você usar sequências para manter as restrições de integridade, certifique-se de que os novos valores de uma sequência migrada não se sobreponham aos valores existentes.

**Para preencher sequências convertidas com o último valor do banco de dados de origem**

1. Abra seu AWS SCT projeto com a Oracle como fonte.

1. Selecione **Configurações** e, em seguida, escolha **Configurações de conversão**. 

1. Na lista superior, escolha **Oracle** e, em seguida, escolha **Oracle: PostgreSQL**. A AWS SCT exibe todas as configurações disponíveis para conversão do Oracle para o PostgreSQL. 

1. Escolha **Preencher sequências convertidas com o último valor gerado no lado da fonte**.

1. Escolha **OK** para salvar as configurações e fechar a caixa de diálogo **Configurações de conversão**. 

## Converter Oracle ROWID
<a name="CHAP_Source.Oracle.ToPostgreSQL.ConvertRowID"></a>

 Em um banco de dados da Oracle, a pseudocoluna ROWID contém o endereço da linha da tabela. A pseudocoluna ROWID é exclusiva da Oracle, então AWS SCT converte a pseudocoluna ROWID em uma coluna de dados no PostgreSQL. Ao usar essa conversão, você pode manter as informações do ROWID. 

Ao converter a pseudocoluna ROWID, AWS SCT pode criar uma coluna de dados com o tipo de dados. `bigint` Se não existir uma chave primária, AWS SCT define a coluna ROWID como a chave primária. Se existir uma chave primária, AWS SCT define a coluna ROWID com uma restrição exclusiva.

Se o código-fonte do banco de dados incluir operações com ROWID, que você não pode executar usando um tipo de dados numérico, AWS SCT pode criar uma coluna de dados com o `character varying` tipo de dados.

**Para criar uma coluna de dados para a Oracle ROWID em um projeto**

1. Abra seu AWS SCT projeto com a Oracle como fonte.

1. Selecione **Configurações** e, em seguida, escolha **Configurações de conversão**. 

1. Na lista superior, escolha **Oracle** e, em seguida, escolha **Oracle: PostgreSQL**. A AWS SCT exibe todas as configurações disponíveis para conversão do Oracle para o PostgreSQL. 

1. Em **Gerar ID de linha**, siga um destes procedimentos: 
   + Escolha **Gerar como identidade** para criar uma coluna de dados numéricos.
   + Escolha **Gerar como tipo de domínio de caracteres** para criar uma coluna de dados de caracteres.

1. Escolha **OK** para salvar as configurações e fechar a caixa de diálogo **Configurações de conversão**. 

## Converter o SQL dinâmico do Oracle
<a name="CHAP_Source.Oracle.ToPostgreSQL.DynamicSQL"></a>

 A Oracle fornece duas maneiras de implementar SQL dinâmico: usando uma instrução EXECUTE IMMEDIATE ou chamando procedimentos no pacote DBMS\$1SQL. Se seu banco de dados Oracle de origem incluir objetos com SQL dinâmico, use AWS SCT para converter instruções SQL dinâmicas Oracle em PostgreSQL.

**Para converter SQL dinâmico Oracle para SQL PostgreSQL**

1. Abra seu AWS SCT projeto com a Oracle como fonte.

1. Escolha um objeto de banco de dados que use SQL dinâmico na exibição em árvore de origem da Oracle.

1. Abra o menu de contexto (clique com o botão direito do mouse) do objeto, escolha **Converter esquema** e aceite substituir os objetos se eles existirem. A captura de tela a seguir mostra o procedimento convertido abaixo do procedimento Oracle com SQL dinâmico.  
![\[Conversão de SQL dinâmico\]](http://docs.aws.amazon.com/pt_br/SchemaConversionTool/latest/userguide/images/dynamicsql1.png)

## Conversão de partições Oracle
<a name="CHAP_Source.Oracle.ToPostgreSQL.PG10Partitioning"></a>

AWS SCT atualmente suporta os seguintes métodos de particionamento: 
+ Intervalo
+ Lista
+ Intervalo de várias colunas
+ Hash
+ Composto (lista de lista, lista de intervalos, intervalo de lista, hash de lista, hash de intervalo, hash de hash)

# Migração da Oracle para o Amazon RDS for MySQL ou Amazon Aurora MySQL com o AWS Schema Conversion Tool
<a name="CHAP_Source.Oracle.ToMySQL"></a>

Para emular funções de banco de dados do Oracle em seu código MySQL convertido, use o pacote de extensão Oracle para MySQL em AWS SCT. Para obter mais informações sobre pacotes de extensão, consulte [Usando pacotes de extensão com AWS Schema Conversion Tool](CHAP_ExtensionPack.md). 

**Topics**
+ [Privilégios do MySQL como um banco de dados de destino](#CHAP_Source.Oracle.ToMySQL.ConfigureTarget)
+ [Configurações de conversão do Oracle para MySQL](#CHAP_Source.Oracle.ToMySQL.ConversionSettings)
+ [Considerações sobre a migração](#CHAP_Source.Oracle.ToMySQL.MigrationConsiderations)
+ [Converter a instrução WITH na Oracle para o RDS para MySQL ou para Amazon Aurora MySQL](#CHAP_Source.Oracle.ToMySQL.With)

## Privilégios do MySQL como um banco de dados de destino
<a name="CHAP_Source.Oracle.ToMySQL.ConfigureTarget"></a>

Os privilégios obrigatórios para MySQL como destino são listados a seguir:
+ CREATE ON \$1.\$1
+ ALTER ON \$1.\$1
+ DROP ON \$1.\$1
+ INDEX ON \$1.\$1
+ REFERENCES ON \$1.\$1
+ SELECT ON \$1.\$1
+ CREATE VIEW ON \$1.\$1
+ SHOW VIEW ON \$1.\$1
+ TRIGGER ON \$1.\$1
+ CREATE ROUTINE ON \$1.\$1
+ ALTER ROUTINE ON \$1.\$1
+ EXECUTE ON \$1.\$1
+ CREATE TEMPORARY TABLES ON \$1.\$1
+ AWS\$1LAMBDA\$1ACESSO
+ INSIRA, ATUALIZE EM AWS\$1ORACLE \$1EXT. \$1
+ INSIRA, ATUALIZE E EXCLUA EM AWS\$1ORACLE \$1EXT\$1DATA. \$1

Se você usar um banco de dados MySQL versão 5.7 ou inferior como destino, conceda a permissão INVOKE LAMBDA \$1.\$1 em vez de \$1ACCESS. AWS\$1LAMBDA Para bancos de dados MySQL versão 8.0 e superior, conceda a permissão. AWS\$1LAMBDA\$1ACCESS 

É possível utilizar o exemplo de código a seguir para criar um usuário do banco de dados e conceder os privilégios.

```
CREATE USER 'user_name' IDENTIFIED BY 'your_password';
GRANT CREATE ON *.* TO 'user_name';
GRANT ALTER ON *.* TO 'user_name';
GRANT DROP ON *.* TO 'user_name';
GRANT INDEX ON *.* TO 'user_name';
GRANT REFERENCES ON *.* TO 'user_name';
GRANT SELECT ON *.* TO 'user_name';
GRANT CREATE VIEW ON *.* TO 'user_name';
GRANT SHOW VIEW ON *.* TO 'user_name';
GRANT TRIGGER ON *.* TO 'user_name';
GRANT CREATE ROUTINE ON *.* TO 'user_name';
GRANT ALTER ROUTINE ON *.* TO 'user_name';
GRANT EXECUTE ON *.* TO 'user_name';
GRANT CREATE TEMPORARY TABLES ON *.* TO 'user_name';
GRANT AWS_LAMBDA_ACCESS TO 'user_name';
GRANT INSERT, UPDATE ON AWS_ORACLE_EXT.* TO 'user_name';
GRANT INSERT, UPDATE, DELETE ON AWS_ORACLE_EXT_DATA.* TO 'user_name';
```

No exemplo anterior, *user\$1name* substitua pelo nome do seu usuário. Em seguida, *your\$1password* substitua por uma senha segura.

Se você usar um banco de dados MySQL versão 5.7 ou inferior como destino, use `GRANT INVOKE LAMBDA ON *.* TO 'user_name'` em vez de `GRANT AWS_LAMBDA_ACCESS TO 'user_name'`.

Para usar o Amazon RDS para MySQL ou o Aurora MySQL como destino, defina o parâmetro `lower_case_table_names` como `1`. Esse valor significa que o servidor MySQL manipula identificadores de nomes de objetos como tabelas, índices, acionadores e bancos de dados sem distinção entre maiúsculas e minúsculas. Se você ativou o registro binário em sua instância de destino, defina o parâmetro `log_bin_trust_function_creators` como `1`. Nesse caso, você não precisa usar as características `DETERMINISTIC`, `READS SQL DATA` ou `NO SQL` para criar funções armazenadas. Para configurar esses parâmetros, crie um novo grupo de parâmetros de banco de dados ou modifique um grupo de parâmetros de banco de dados existente.

## Configurações de conversão do Oracle para MySQL
<a name="CHAP_Source.Oracle.ToMySQL.ConversionSettings"></a>

Para editar as configurações de conversão de Oracle para MySQL, escolha **Configurações** em e AWS SCT, em seguida, escolha Configurações **de conversão**. Na lista superior, escolha **Oracle** e, em seguida, escolha **Oracle — MySQL**. AWS SCT exibe todas as configurações disponíveis para conversão de Oracle para MySQL.

As configurações de conversão de Oracle para MySQL AWS SCT incluem opções para o seguinte:
+ Para limitar o número de comentários com itens de ação no código convertido.

  Em **Adicionar comentários no código convertido para os itens de ação de severidade selecionada e superior**, escolha a severidade dos itens de ação. AWS SCT adiciona comentários no código convertido para itens de ação da severidade selecionada e superior.

  Por exemplo, para minimizar o número de comentários em seu código convertido, escolha **Somente erros**. Para incluir comentários para todos os itens de ação em seu código convertido, escolha **Todas as mensagens**.
+ Para resolver isso, seu banco de dados Oracle de origem pode usar a `ROWID` pseudocoluna, mas o MySQL não oferece suporte a funcionalidades semelhantes. AWS SCT pode emular a `ROWID` pseudocoluna no código convertido. Para fazer isso, escolha **Gerar como identidade** em **Gerar ID de linha?**.

  Se o código do Oracle de origem não utilizar a pseudocoluna `ROWID`, escolha **Não gerar** em **Gerar ID de linha?** Nesse caso, o código convertido funciona mais rápido.
+ Trabalhar com o código do Oracle de origem quando ele incluir os perfis `TO_CHAR`, `TO_DATE` e `TO_NUMBER` com parâmetros que não são compatíveis com o MySQL. Por padrão, a AWS SCT emula a utilização desses parâmetros no código convertido.

  Quando seu código do Oracle de origem inclui somente parâmetros compatíveis com o PostgreSQL, é possível utilizar os perfis nativos `TO_CHAR`, `TO_DATE` e `TO_NUMBER` do MySQL. Nesse caso, o código convertido funciona mais rápido. Para incluir somente esses parâmetros, selecione os seguintes valores:
  + **A função TO\$1CHAR() não usa strings de formatação específicas do Oracle**
  + **A função TO\$1DATE() não usa strings de formatação específicas do Oracle**
  + **A função TO\$1NUMBER() não usa strings de formatação específicas do Oracle**
+ Para saber se o banco de dados e as aplicações são executados em fusos horários diferentes. Por padrão, AWS SCT emula os fusos horários no código convertido. No entanto, essa emulação não é necessária quando o banco de dados e as aplicações utilizam o mesmo fuso horário. Nesse caso, selecione **O fuso horário no lado do cliente corresponde ao fuso horário no servidor**.

## Considerações sobre a migração
<a name="CHAP_Source.Oracle.ToMySQL.MigrationConsiderations"></a>

Ao converter Oracle em RDS para MySQL ou para Aurora MySQL, para alterar a ordem em que as instruções são executadas, você pode usar uma instrução `GOTO` e um rótulo. Qualquer instrução PL/SQL que segue uma instrução `GOTO` é ignorada, e o processamento continua no rótulo. As instruções `GOTO` e os rótulos podem ser usados em qualquer lugar em um procedimento, lote ou bloco de instruções. Você também pode usar as instruções GOTO depois.

O MySQL não usa instruções `GOTO`. Quando AWS SCT converte o código que contém uma `GOTO` instrução, ele converte a instrução para usar uma instrução `BEGIN…END` ou`LOOP…END LOOP`. 

Você pode encontrar exemplos de como AWS SCT converte `GOTO` declarações na tabela a seguir.


| Instrução do Oracle | Instrução do MySQL | 
| --- | --- | 
|  <pre>BEGIN<br />   ....<br />   statement1;<br />   ....<br />   GOTO label1;<br />   statement2;<br />   ....<br />   label1:<br />   Statement3;<br />   ....<br />END<br /></pre>  |  <pre>BEGIN<br /> label1:<br /> BEGIN<br />   ....<br />   statement1;<br />   ....<br />   LEAVE label1;<br />   statement2;<br />   ....<br /> END;<br />   Statement3;<br />   ....<br />END<br /></pre>  | 
|  <pre>BEGIN<br />   ....<br />   statement1;<br />   ....<br />   label1:<br />   statement2;<br />   ....<br />   GOTO label1;<br />   statement3;<br />   ....<br />   statement4;<br />   ....<br />END<br /></pre>  |  <pre>BEGIN<br />   ....<br />   statement1;<br />   ....<br />   label1:<br />   LOOP<br />    statement2;<br />    ....<br />    ITERATE label1;<br />    LEAVE label1;<br />   END LOOP; <br />    statement3;<br />    ....<br />    statement4;<br />    ....<br />END<br /></pre>  | 
|  <pre>BEGIN<br />   ....<br />   statement1;<br />   ....<br />   label1:<br />   statement2;<br />   ....<br />   statement3;<br />   ....<br />   statement4;<br />   ....<br />END<br /></pre>  |  <pre>BEGIN<br />   ....<br />   statement1;<br />   ....<br />   label1:<br />   BEGIN<br />    statement2;<br />    ....    <br />    statement3;<br />    ....<br />    statement4;<br />    ....    <br />   END; <br />END<br /></pre>  | 

## Converter a instrução WITH na Oracle para o RDS para MySQL ou para Amazon Aurora MySQL
<a name="CHAP_Source.Oracle.ToMySQL.With"></a>

Use a cláusula WITH (subquery\$1factoring) na Oracle para atribuir um nome (query\$1name) a um bloco de subconsulta. Em seguida, você poderá fazer referência ao bloco de subconsulta em vários lugares na consulta especificando query\$1name. Se um bloco de subconsulta não contiver links ou parâmetros (local, procedimento, função, pacote), AWS SCT converterá a cláusula em uma exibição ou tabela temporária. 

A vantagem de converter a cláusula em uma tabela temporária é que referências repetidas à subconsulta podem ser mais eficientes. A maior eficiência ocorre porque os dados são facilmente recuperados da tabela temporária em vez de serem solicitados por cada referência. Isso pode ser emulado com visualizações adicionais ou uma tabela temporária. O nome da visualização usa o formato `<procedure_name>$<subselect_alias>`.

Você pode encontrar exemplos na tabela a seguir. 


| Instrução do Oracle | Instrução do MySQL | 
| --- | --- | 
|  <pre>CREATE PROCEDURE <br /> TEST_ORA_PG.P_WITH_SELECT_VARIABLE_01<br />     (p_state IN NUMBER)<br />AS<br />  l_dept_id NUMBER := 1; <br />BEGIN<br />FOR cur IN  <br />           (WITH dept_empl(id, name, surname, <br />              lastname, state, dept_id)<br />              AS<br />                  (<br />                    SELECT id, name, surname,  <br />                     lastname, state, dept_id <br />                      FROM test_ora_pg.dept_employees<br />                     WHERE state = p_state AND <br />                       dept_id = l_dept_id)<br />            SELECT id,state   <br />              FROM dept_empl<br />            ORDER BY id)  LOOP<br />  NULL;<br />END LOOP;<br /></pre>  |  <pre>CREATE PROCEDURE test_ora_pg.P_WITH_SELECT_VARIABLE_01(IN par_P_STATE DOUBLE)<br />BEGIN<br />    DECLARE var_l_dept_id DOUBLE DEFAULT 1;<br />    DECLARE var$id VARCHAR (8000);<br />    DECLARE var$state VARCHAR (8000);<br />    DECLARE done INT DEFAULT FALSE;<br />    DECLARE cur CURSOR FOR SELECT<br />        ID, STATE<br />        FROM (SELECT<br />            ID, NAME, SURNAME, LASTNAME, STATE, DEPT_ID<br />            FROM TEST_ORA_PG.DEPT_EMPLOYEES<br />            WHERE STATE = par_p_state AND DEPT_ID = var_l_dept_id) AS dept_empl<br />        ORDER BY ID;<br />    DECLARE CONTINUE HANDLER FOR NOT FOUND<br />        SET done := TRUE;<br />    OPEN cur;<br /><br />    read_label:<br />    LOOP<br />        FETCH cur INTO var$id, var$state;<br /><br />        IF done THEN<br />            LEAVE read_label;<br />        END IF;<br /><br />        BEGIN<br />        END;<br />    END LOOP;<br />    CLOSE cur;<br />END;<br /></pre>  | 
|  <pre>CREATE PROCEDURE <br /> TEST_ORA_PG.P_WITH_SELECT_REGULAR_MULT_01<br />AS    <br />BEGIN<br /><br /> FOR cur IN  (<br />               WITH dept_empl AS<br />                   (<br />                        SELECT id, name, surname, <br />                         lastname, state, dept_id <br />                          FROM test_ora_pg.dept_employees<br />                         WHERE state = 1),<br />                    dept AS <br />                   (SELECT id deptid, parent_id, <br />                      name deptname<br />                      FROM test_ora_pg.department                <br />                   )<br />                SELECT dept_empl.*,dept.*          <br />                 FROM dept_empl, dept<br />                 WHERE dept_empl.dept_id = dept.deptid<br />              ) LOOP<br />              NULL;<br />            END LOOP;<br /></pre>  |  <pre>CREATE VIEW TEST_ORA_PG.`P_WITH_SELECT_REGULAR_MULT_01$dept_empl<br /> `(id, name, surname, lastname, state, dept_id)<br />AS<br />(SELECT id, name, surname, lastname, state, dept_id <br />   FROM test_ora_pg.dept_employees<br />  WHERE state = 1);<br />  <br />CREATE VIEW TEST_ORA_PG.`P_WITH_SELECT_REGULAR_MULT_01$dept<br /> `(deptid, parent_id,deptname)<br />AS<br />(SELECT id deptid, parent_id, name deptname<br />   FROM test_ora_pg.department);  <br /><br /><br />CREATE PROCEDURE test_ora_pg.P_WITH_SELECT_REGULAR_MULT_01()<br />BEGIN<br />    DECLARE var$ID DOUBLE;<br />    DECLARE var$NAME VARCHAR (30);<br />    DECLARE var$SURNAME VARCHAR (30);<br />    DECLARE var$LASTNAME VARCHAR (30);<br />    DECLARE var$STATE DOUBLE;<br />    DECLARE var$DEPT_ID DOUBLE;<br />    DECLARE var$deptid DOUBLE;<br />    DECLARE var$PARENT_ID DOUBLE;<br />    DECLARE var$deptname VARCHAR (200);<br />    DECLARE done INT DEFAULT FALSE;<br />    DECLARE cur CURSOR FOR SELECT<br />        dept_empl.*, dept.*<br />        FROM TEST_ORA_PG.`P_WITH_SELECT_REGULAR_MULT_01$dept_empl<br />          ` AS dept_empl,<br />             TEST_ORA_PG.`P_WITH_SELECT_REGULAR_MULT_01$dept<br />          ` AS dept<br />        WHERE dept_empl.DEPT_ID = dept.DEPTID;<br />    DECLARE CONTINUE HANDLER FOR NOT FOUND<br />        SET done := TRUE;<br />    OPEN cur;<br /><br />    read_label:<br />    LOOP<br />    FETCH cur INTO var$ID, var$NAME, var$SURNAME, <br />     var$LASTNAME, var$STATE, var$DEPT_ID, var$deptid, <br />     var$PARENT_ID, var$deptname;<br /><br />        IF done THEN<br />            LEAVE read_label;<br />        END IF;<br /><br />        BEGIN<br />        END;<br />    END LOOP;<br />    CLOSE cur;<br />END;<br /><br />call test_ora_pg.P_WITH_SELECT_REGULAR_MULT_01()<br /></pre>  | 
|  <pre>CREATE PROCEDURE <br />  TEST_ORA_PG.P_WITH_SELECT_VAR_CROSS_02(p_state IN NUMBER)<br />AS    <br />   l_dept_id NUMBER := 10;<br />BEGIN<br /> FOR cur IN  (<br />               WITH emp AS              <br />                    (SELECT id, name, surname, <br />                      lastname, state, dept_id <br />                       FROM test_ora_pg.dept_employees<br />                      WHERE dept_id > 10                 <br />                    ),<br />                    active_emp AS<br />                    (<br />                      SELECT id<br />                        FROM emp<br />                       WHERE emp.state = p_state <br />                    )<br />                    <br />                SELECT *          <br />                  FROM active_emp                 <br />              ) LOOP<br />         NULL;<br />  END LOOP;<br />  <br />END;<br /></pre>  |  <pre>CREATE VIEW TEST_ORA_PG.`P_WITH_SELECT_VAR_CROSS_01$emp<br />    `(id, name, surname, lastname, state, dept_id)<br />AS<br />(SELECT<br />       id, name, surname, lastname, <br />       state, dept_id<br />  FROM TEST_ORA_PG.DEPT_EMPLOYEES<br />  WHERE DEPT_ID > 10);<br /><br /><br />CREATE PROCEDURE <br />   test_ora_pg.P_WITH_SELECT_VAR_CROSS_02(IN par_P_STATE DOUBLE)<br />BEGIN<br />    DECLARE var_l_dept_id DOUBLE DEFAULT 10;<br />    DECLARE var$ID DOUBLE;<br />    DECLARE done INT DEFAULT FALSE;<br />    DECLARE cur CURSOR FOR SELECT *<br />                             FROM (SELECT<br />                                      ID<br />                                     FROM <br />                             TEST_ORA_PG.<br />                              `P_WITH_SELECT_VAR_CROSS_01$emp` AS emp<br />                                   WHERE emp.STATE = par_p_state) <br />                                    AS active_emp;<br />    DECLARE CONTINUE HANDLER FOR NOT FOUND<br />        SET done := TRUE;<br />    OPEN cur;<br /><br />    read_label:<br />    LOOP<br />        FETCH cur INTO var$ID;<br /><br />        IF done THEN<br />            LEAVE read_label;<br />        END IF;<br /><br />        BEGIN<br />        END;<br />    END LOOP;<br />    CLOSE cur;<br />END;<br /></pre>  | 

# Migração do banco de dados Oracle para o Amazon RDS for Oracle com AWS Schema Conversion Tool
<a name="CHAP_Source.Oracle.ToRDSOracle"></a>

Há alguns aspectos a serem considerados ao migrar o esquema e o código do Oracle para o Amazon RDS para Oracle: 
+ AWS SCT pode adicionar objetos de diretório à árvore de objetos. Os *objetos do diretório* são estruturas lógicas que representam um diretório físico no sistema de arquivos do servidor. Você pode usar objetos de diretório com pacotes, como DBMS\$1LOB, UTL\$1FILE, DBMS\$1FILE\$1TRANSFER, o utilitário DATAPUMP, etc.
+ AWS SCT suporta a conversão de espaços de tabela Oracle em uma instância de banco de dados Amazon RDS for Oracle. O Oracle armazena dados logicamente em tablespaces e fisicamente em arquivos de dados associados ao tablespace correspondente. No Oracle é possível criar tablespace com nomes de arquivo de dados. O Amazon RDS oferece suporte ao Oracle Managed Files (OMF) somente para arquivos de dados, arquivos de log e arquivos de controle. AWS SCT cria os arquivos de dados necessários durante a conversão.
+ AWS SCT pode converter funções e privilégios em nível de servidor. O mecanismo de banco de dados Oracle usa a segurança baseada em funções. Uma função é uma coleção de privilégios que podem ser concedidos ou revogados de um usuário. Uma função predefinida no Amazon RDS, chamada de administrador de banco de dados, normalmente permite todos os privilégios administrativos em um mecanismo de banco de dados Oracle. Os seguintes privilégios não estão disponíveis para a função DBA em uma instância de banco de dados do Amazon RDS usando o mecanismo Oracle:
  + Alter database
  + Alterar o sistema
  + Criar qualquer diretório
  + Conceder qualquer privilégio
  + Conceder qualquer função
  + Criar trabalho externo

  Você pode conceder todos os outros privilégios a uma função de usuário do Amazon RDS para Oracle, incluindo filtragem avançada e privilégios de coluna.
+ AWS SCT suporta a conversão de trabalhos Oracle em trabalhos que podem ser executados no Amazon RDS for Oracle. Há algumas limitações à conversão, incluindo as seguintes:
  + Trabalhos executáveis não são suportados.
  + Trabalhos de programação que usam o tipo de dados ANYDATA como argumento não são suportados.
+ O Oracle Real Application Clusters (RAC) One Node é uma opção ao Oracle Database Enterprise Edition que foi introduzida com o Oracle Database 11g Release 2. O Amazon RDS para Oracle não é compatível com o atributo RAC. Para obter alta disponibilidade, use o Multi-AZ do Amazon RDS. 

  Em uma implantação Multi-AZ, o Amazon RDS automaticamente provisiona e mantém uma réplica em espera síncrona em outra Zona de disponibilidade. A instância de banco de dados primária é sincronicamente replicada ao longo das zonas de disponibilidade para uma réplica em espera. Essa funcionalidade fornece redundância de dados, elimina I/O congelamentos e minimiza os picos de latência durante os backups do sistema.
+ O Oracle Spatial fornece um esquema SQL e funções que facilitam o armazenamento, a recuperação, a atualização e a consulta de coleções de dados espaciais em um banco de dados Oracle. O Oracle Locator oferece recursos normalmente obrigatórios para dar suporte à Internet e a aplicativos baseados em serviço sem fio além de soluções GIS baseadas no parceiro. O Oracle Locator é um subconjunto limitado do Oracle Spatial.

  Para usar os recursos do Oracle Spatial e do Oracle Locator, adicione a opção SPATIAL ou LOCATOR (mutuamente exclusivas) ao grupo de opções da instância de banco de dados.

  Há alguns pré-requisitos para usar o Oracle Spatial e o Oracle Locator em uma instância de banco de dados do Amazon RDS para Oracle:
  + A instância deve usar o Oracle Enterprise Edition versão 12.1.0.2.v6 ou posterior ou 11.2.0.4.v10 ou posterior.
  + A instância deve estar em uma nuvem privada virtual (VPC).
  + A instância deve ser a classe de instância de banco de dados que pode oferecer suporte ao recurso da Oracle. Por exemplo, o Oracle Spatial não é compatível com as classes de instância de banco de dados db.m1.small, db.t1.micro, db.t2.micro ou db.t2.small. Para obter mais informações, consulte [Suporte a classes de instância de banco de dados para Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html#Oracle.Concepts.InstanceClasses).
  + A instância deve ter a opção Atualização de versão do Auto Minor habilitada. O Amazon RDS atualizará a instância de banco de dados para o Oracle PSU mais recente se houver vulnerabilidades de segurança com uma pontuação CVSS de 9 ou mais ou outras vulnerabilidades de segurança anunciadas. Para obter mais informações, consulte . 

    [Configurações para instâncias de banco de dados do Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ModifyInstance.Oracle.html#USER_ModifyInstance.Oracle.Settings).
  + Se a instância de banco de dados for a versão 11.2.0.4 .v10 ou posterior, você deverá instalar a opção XMLDB. Para obter mais informações, consulte .

    [Oracle XML DB](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.Options.XMLDB.html).
  + Você deve ter uma licença do Oracle Spatial da Oracle. Para obter mais informações, consulte [Oracle Spatial and Graph](https://shop.oracle.com/apex/product?p1=OracleSpatialandGraph) na documentação da Oracle.
+ O Data Guard é incluído com o Oracle Database Enterprise Edition. Para obter alta disponibilidade, use o atributo Multi-AZ do Amazon RDS. 

  Em uma implantação Multi-AZ, o Amazon RDS automaticamente provisiona e mantém uma réplica em espera síncrona em outra Zona de disponibilidade. A instância de banco de dados primária é sincronicamente replicada ao longo das zonas de disponibilidade para uma réplica em espera. Essa funcionalidade fornece redundância de dados, elimina I/O congelamentos e minimiza os picos de latência durante os backups do sistema.
+ AWS SCT suporta a conversão de objetos Oracle DBMS\$1SCHEDULER ao migrar para o Amazon RDS for Oracle. O relatório AWS SCT de avaliação indica se um objeto de cronograma pode ser convertido. Para obter mais informações sobre como usar objetos de programação com o Amazon RDS, consulte a [Documentação do Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.System.html#Appendix.Oracle.CommonDBATasks.ModifyScheduler).
+ Para conversões o Oracle para Amazon RDS para Oracle, os links de banco de dados são compatíveis. Um link de banco de dados é um objeto de esquema em um banco de dados que permite acessar objetos em outro banco de dados. O outro banco de dados não precisa ser um banco de dados Oracle. No entanto, para acessar bancos de dados que não sejam Oracle, é necessário usar o Oracle Heterogeneous Services.

  Depois de criar um link de banco de dados, você pode usar o link nas instruções SQL para se referir a tabelas, exibições e PL/SQL objetos no outro banco de dados. Para usar um link de banco de dados, anexe `@dblink` à tabela, exibição ou nome do PL/SQL objeto. Você pode consultar uma tabela ou visualização em outro banco de dados com a instrução SELECT. Para obter mais informações sobre como usar links do banco de dados Oracle, consulte a [Documentação do Oracle](https://docs.oracle.com/cd/B28359_01/server.111/b28310/ds_concepts002.htm#ADMIN12083).

  Para obter mais informações sobre como usar links do banco de dados com o Amazon RDS, consulte a [Documentação do Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.Database.html#Appendix.Oracle.CommonDBATasks.DBLinks).
+ O relatório de AWS SCT avaliação fornece métricas do servidor para a conversão. Essas métricas sobre sua instância da Oracle incluem:
  + Capacidade de computação e memória da instância de banco de dados de destino.
  + Recursos da Oracle sem suporte, como o Real Application Clusters, aos quais o Amazon RDS não oferece suporte.
  + Carga de leitura/gravação de disco
  + Taxa de throughput total
  + Informações do servidor, como nome do servidor, sistema operacional, nome do host e conjunto de caracteres.

## Privilégios para RDS para Oracle como destino
<a name="CHAP_Source.Oracle.ToRDSOracle.ConfigureTarget"></a>

Para migrar para o Amazon RDS para Oracle, crie um usuário de banco de dados privilegiado. Você pode usar o exemplo de código a seguir.

```
CREATE USER user_name IDENTIFIED BY your_password;

-- System privileges
GRANT DROP ANY CUBE BUILD PROCESS TO user_name;
GRANT ALTER ANY CUBE TO user_name;
GRANT CREATE ANY CUBE DIMENSION TO user_name;
GRANT CREATE ANY ASSEMBLY TO user_name;
GRANT ALTER ANY RULE TO user_name;
GRANT SELECT ANY DICTIONARY TO user_name;
GRANT ALTER ANY DIMENSION TO user_name;
GRANT CREATE ANY DIMENSION TO user_name;
GRANT ALTER ANY TYPE TO user_name;
GRANT DROP ANY TRIGGER TO user_name;
GRANT CREATE ANY VIEW TO user_name;
GRANT ALTER ANY CUBE BUILD PROCESS TO user_name;
GRANT CREATE ANY CREDENTIAL TO user_name;
GRANT DROP ANY CUBE DIMENSION TO user_name;
GRANT DROP ANY ASSEMBLY TO user_name;
GRANT DROP ANY PROCEDURE TO user_name;
GRANT ALTER ANY PROCEDURE TO user_name;
GRANT ALTER ANY SQL TRANSLATION PROFILE TO user_name;
GRANT DROP ANY MEASURE FOLDER TO user_name;
GRANT CREATE ANY MEASURE FOLDER TO user_name;
GRANT DROP ANY CUBE TO user_name;
GRANT DROP ANY MINING MODEL TO user_name;
GRANT CREATE ANY MINING MODEL TO user_name;
GRANT DROP ANY EDITION TO user_name;
GRANT CREATE ANY EVALUATION CONTEXT TO user_name;
GRANT DROP ANY DIMENSION TO user_name;
GRANT ALTER ANY INDEXTYPE TO user_name;
GRANT DROP ANY TYPE TO user_name;
GRANT CREATE ANY PROCEDURE TO user_name;
GRANT CREATE ANY SQL TRANSLATION PROFILE TO user_name;
GRANT CREATE ANY CUBE TO user_name;
GRANT COMMENT ANY MINING MODEL TO user_name;
GRANT ALTER ANY MINING MODEL TO user_name;
GRANT DROP ANY SQL PROFILE TO user_name;
GRANT CREATE ANY JOB TO user_name;
GRANT DROP ANY EVALUATION CONTEXT TO user_name;
GRANT ALTER ANY EVALUATION CONTEXT TO user_name;
GRANT CREATE ANY INDEXTYPE TO user_name;
GRANT CREATE ANY OPERATOR TO user_name;
GRANT CREATE ANY TRIGGER TO user_name;
GRANT DROP ANY ROLE TO user_name;
GRANT DROP ANY SEQUENCE TO user_name;
GRANT DROP ANY CLUSTER TO user_name;
GRANT DROP ANY SQL TRANSLATION PROFILE TO user_name;
GRANT ALTER ANY ASSEMBLY TO user_name;
GRANT CREATE ANY RULE SET TO user_name;
GRANT ALTER ANY OUTLINE TO user_name;
GRANT UNDER ANY TYPE TO user_name;
GRANT CREATE ANY TYPE TO user_name;
GRANT DROP ANY MATERIALIZED VIEW TO user_name;
GRANT ALTER ANY ROLE TO user_name;
GRANT DROP ANY VIEW TO user_name;
GRANT ALTER ANY INDEX TO user_name;
GRANT COMMENT ANY TABLE TO user_name;
GRANT CREATE ANY TABLE TO user_name;
GRANT CREATE USER TO user_name;
GRANT DROP ANY RULE SET TO user_name;
GRANT CREATE ANY CONTEXT TO user_name;
GRANT DROP ANY INDEXTYPE TO user_name;
GRANT ALTER ANY OPERATOR TO user_name;
GRANT CREATE ANY MATERIALIZED VIEW TO user_name;
GRANT ALTER ANY SEQUENCE TO user_name;
GRANT DROP ANY SYNONYM TO user_name;
GRANT CREATE ANY SYNONYM TO user_name;
GRANT DROP USER TO user_name;
GRANT ALTER ANY MEASURE FOLDER TO user_name;
GRANT ALTER ANY EDITION TO user_name;
GRANT DROP ANY RULE TO user_name;
GRANT CREATE ANY RULE TO user_name;
GRANT ALTER ANY RULE SET TO user_name;
GRANT CREATE ANY OUTLINE TO user_name;
GRANT UNDER ANY TABLE TO user_name;
GRANT UNDER ANY VIEW TO user_name;
GRANT DROP ANY DIRECTORY TO user_name;
GRANT ALTER ANY CLUSTER TO user_name;
GRANT CREATE ANY CLUSTER TO user_name;
GRANT ALTER ANY TABLE TO user_name;
GRANT CREATE ANY CUBE BUILD PROCESS TO user_name;
GRANT ALTER ANY CUBE DIMENSION TO user_name;
GRANT CREATE ANY EDITION TO user_name;
GRANT CREATE ANY SQL PROFILE TO user_name;
GRANT ALTER ANY SQL PROFILE TO user_name;
GRANT DROP ANY OUTLINE TO user_name;
GRANT DROP ANY CONTEXT TO user_name;
GRANT DROP ANY OPERATOR TO user_name;
GRANT DROP ANY LIBRARY TO user_name;
GRANT ALTER ANY LIBRARY TO user_name;
GRANT CREATE ANY LIBRARY TO user_name;
GRANT ALTER ANY MATERIALIZED VIEW TO user_name;
GRANT ALTER ANY TRIGGER TO user_name;
GRANT CREATE ANY SEQUENCE TO user_name;
GRANT DROP ANY INDEX TO user_name;
GRANT CREATE ANY INDEX TO user_name;
GRANT DROP ANY TABLE TO user_name;
GRANT SELECT_CATALOG_ROLE TO user_name;
GRANT SELECT ANY SEQUENCE TO user_name;

-- Database Links
GRANT CREATE DATABASE LINK TO user_name;
GRANT CREATE PUBLIC DATABASE LINK TO user_name;
GRANT DROP PUBLIC DATABASE LINK TO user_name;


-- Server Level Objects (directory)
GRANT CREATE ANY DIRECTORY TO user_name;
GRANT DROP ANY DIRECTORY TO user_name;
-- (for RDS only)
GRANT EXECUTE ON RDSADMIN.RDSADMIN_UTIL TO user_name;

-- Server Level Objects (tablespace)
GRANT CREATE TABLESPACE TO user_name;
GRANT DROP TABLESPACE TO user_name;

-- Server Level Objects (user roles)
/* (grant source privileges with admin option or convert roles/privs as DBA) */

-- Queues
grant execute on DBMS_AQADM to user_name;
grant aq_administrator_role to user_name;

-- for Materialized View Logs creation
GRANT SELECT ANY TABLE TO user_name;

-- Roles
GRANT RESOURCE TO user_name;
GRANT CONNECT TO user_name;
```

No exemplo anterior, *user\$1name* substitua pelo nome do seu usuário. Em seguida, *your\$1password* substitua por uma senha segura.

## Limitações ao converter Oracle para Amazon RDS para Oracle
<a name="CHAP_Source.Oracle.ToRDSOracle.Limitations"></a>

Você deve considerar algumas limitações ao migrar o esquema e o código da Oracle para o Amazon RDS para Oracle: 
+  Uma função predefinida no Amazon RDS, chamada de administrador de banco de dados, normalmente permite todos os privilégios administrativos em um mecanismo de banco de dados Oracle. Os seguintes privilégios não estão disponíveis para a função DBA em uma instância de banco de dados do Amazon RDS usando o mecanismo Oracle:
  + Alter database
  + Alterar o sistema
  + Criar qualquer diretório
  + Conceder qualquer privilégio
  + Conceder qualquer função
  + Criar trabalho externo

  Você pode conceder todos os outros privilégios a uma função de usuário do Oracle RDS.
+ O Amazon RDS para Oracle oferece suporte a auditoria tradicional, auditoria de acesso refinado usando o pacote DBMS\$1FGA e Oracle Unified Auditing.
+ O Amazon RDS para Oracle não oferece suporte à captura de dados de alterações (CDC). Para fazer o CDC durante e após a migração do banco de dados, use AWS Database Migration Service.