

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Conexión a bases de datos Oracle con AWS Schema Conversion Tool
<a name="CHAP_Source.Oracle"></a>

Puede utilizarlos AWS SCT para convertir esquemas, objetos de código de bases de datos y código de aplicaciones de Oracle Database a los siguientes destinos: 
+ Amazon RDS para MySQL
+ Amazon Aurora MySQL-Compatible Edition
+ Amazon RDS para PostgreSQL
+ Edición de Amazon Aurora compatible con PostgreSQL
+ Amazon RDS para Oracle
+ Amazon RDS para MariaDB

Cuando la fuente es una base de datos Oracle, los comentarios se pueden convertir al formato adecuado, por ejemplo, en una base de datos PostgreSQL. AWS SCT puede convertir comentarios en tablas, vistas y columnas. Los comentarios pueden incluir apóstrofes; AWS SCT duplica los apóstrofes al convertir sentencias SQL, igual que ocurre con las cadenas literales.

Para obtener más información, consulte lo siguiente.

**Topics**
+ [Privilegios para Oracle como origen](#CHAP_Source.Oracle.Permissions)
+ [Conexión a Oracle como origen](#CHAP_Source.Oracle.Connecting)
+ [Migración de Oracle a Amazon RDS para PostgreSQL o Amazon Aurora PostgreSQL con AWS Schema Conversion Tool](CHAP_Source.Oracle.ToPostgreSQL.md)
+ [Migración de Oracle a Amazon RDS para MySQL o Amazon Aurora MySQL con AWS Schema Conversion Tool](CHAP_Source.Oracle.ToMySQL.md)
+ [Migración de Oracle Database a Amazon RDS for Oracle con AWS Schema Conversion Tool](CHAP_Source.Oracle.ToRDSOracle.md)

## Privilegios para Oracle como origen
<a name="CHAP_Source.Oracle.Permissions"></a>

A continuación se enumeran los privilegios necesarios para Oracle como origen: 
+ CONNECT 
+ SELECT\$1CATALOG\$1ROLE 
+ SELECT ANY DICTIONARY 
+ SELECT ON SYS.ARGUMENT\$1

## Conexión a Oracle como origen
<a name="CHAP_Source.Oracle.Connecting"></a>

Utilice el siguiente procedimiento para conectarse a su base de datos de Oracle de origen con la AWS Schema Conversion Tool. 

**Para conectarse a una base de datos de Oracle de origen**

1. **En, selecciona Añadir fuente. AWS Schema Conversion Tool** 

1. Elija **Oracle** y, a continuación, elija **Siguiente**. 

   Se abrirá el cuadro de diálogo **Agregar origen**.

1. En **Nombre de conexión**, escriba un nombre para su base de datos. AWS SCT muestra este nombre en el árbol del panel izquierdo. 

1. Utilice las credenciales de la base de datos de AWS Secrets Manager o introdúzcalas manualmente:
   + Para usar las credenciales de base de datos de Secrets Manager, siga las instrucciones siguientes:

     1. En **Secreto de AWS**, elija el nombre del secreto.

     1. Seleccione **Rellenar** para rellenar automáticamente todos los valores del cuadro de diálogo de conexión a la base de datos de Secrets Manager.

     Para obtener información sobre el uso de las credenciales de bases de datos de Secrets Manager, consulte[Configurando AWS Secrets Manager en el AWS Schema Conversion Tool](CHAP_UserInterface.SecretsManager.md).
   + Para introducir manualmente la información de conexión a la base de datos de origen de Oracle, siga las instrucciones siguientes:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/SchemaConversionTool/latest/userguide/CHAP_Source.Oracle.html)

1. Elija **Probar conexión** para comprobar que AWS SCT puede conectarse a la base de datos de origen. 

1. Seleccione **Conectar** para conectarse a su base de datos de origen.

# Migración de Oracle a Amazon RDS para PostgreSQL o Amazon Aurora PostgreSQL con AWS Schema Conversion Tool
<a name="CHAP_Source.Oracle.ToPostgreSQL"></a>

Al convertir una base de datos de Oracle a RDS para PostgreSQL o Amazon Aurora PostgreSQL, tenga en cuenta lo siguiente.

**Topics**
+ [Privilegios para PostgreSQL como base de datos de destino](#CHAP_Source.Oracle.ToPostgreSQL.ConfigureTarget)
+ [Configuración de conversión de Oracle a PostgreSQL](#CHAP_Source.Oracle.ToPostgreSQL.ConversionSettings)
+ [Conversión de secuencias de Oracle](#CHAP_Source.Oracle.ToPostgreSQL.ConvertSequences)
+ [Conversión de pseudocolumnas ROWID de Oracle](#CHAP_Source.Oracle.ToPostgreSQL.ConvertRowID)
+ [Conversión de SQL dinámico de Oracle](#CHAP_Source.Oracle.ToPostgreSQL.DynamicSQL)
+ [Conversión de particiones de Oracle](#CHAP_Source.Oracle.ToPostgreSQL.PG10Partitioning)

Al convertir objetos del sistema Oracle a PostgreSQL AWS SCT , realiza las conversiones que se muestran en la siguiente tabla.


| Objeto del sistema de Oracle | Description (Descripción) | Objeto de PostgreSQL convertido | 
| --- | --- | --- | 
| V\$1VERSION  | Muestra los números de versión de los componentes de biblioteca principal en la base de datos de Oracle | aws\$1oracle\$1ext.v\$1version | 
| V\$1INSTANCE | Una vista que muestra el estado de la instancia actual. | aws\$1oracle\$1ext.v\$1instance | 

Puede utilizarlos AWS SCT para convertir archivos SQL\$1Plus de Oracle a psql, que es un front-end de PostgreSQL basado en terminales. Para obtener más información, consulte [Convertir el SQL de la aplicación mediante AWS SCT](CHAP_Converting.App.md).

## Privilegios para PostgreSQL como base de datos de destino
<a name="CHAP_Source.Oracle.ToPostgreSQL.ConfigureTarget"></a>

Para usar PostgreSQL como destino AWS SCT , se requiere el privilegio. `CREATE ON DATABASE` Asegúrese de conceder este privilegio a cada base de datos PostgreSQL de destino.

Para usar los sinónimos públicos convertidos, cambie la ruta de búsqueda predeterminada de la base de datos a `"$user", public_synonyms, public`.

Puede usar el siguiente ejemplo de código para crear un usuario de base de datos y conceder los privilegios.

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

En el ejemplo anterior, *user\$1name* sustitúyalo por el nombre de tu usuario. A continuación, *db\$1name* sustitúyalo por el nombre de la base de datos de destino. Por último, *your\$1password* sustitúyala por una contraseña segura.

Para utilizar Amazon RDS for PostgreSQL como destino, se necesita este privilegio. AWS SCT `rds_superuser`

En PostgreSQL, solo el propietario de un esquema o un `superuser` puede anular un esquema. El propietario puede eliminar un esquema y todos los objetos que incluye este esquema, aunque el propietario del esquema no sea propietario de algunos de los objetos.

Si utiliza distintos usuarios para convertir y aplicar diferentes esquemas a la base de datos de destino, puede recibir un mensaje de error cuando no AWS SCT puede eliminar un esquema. Para evitar este mensaje de error, utilice el rol de `superuser`. 

## Configuración de conversión de Oracle a PostgreSQL
<a name="CHAP_Source.Oracle.ToPostgreSQL.ConversionSettings"></a>

**Para editar la configuración de conversión de Oracle a PostgreSQL, seleccione Configuración AWS SCT en y, a continuación, **elija** Configuración de conversión.** En la lista superior, elija **Oracle** y, a continuación, **Oracle — PostgreSQL**. AWS SCT muestra todos los ajustes disponibles para la conversión de Oracle a PostgreSQL.

La configuración AWS SCT de conversión de Oracle a PostgreSQL incluye opciones para lo siguiente:
+ Limitar el número de comentarios con elementos de acción en el código convertido.

  En **Añadir comentarios en el código convertido para los elementos de acción de la gravedad seleccionada o superior**, seleccione la gravedad de los elementos de acción. AWS SCT añade comentarios en el código convertido para los elementos de acción de la gravedad seleccionada o superior.

  Por ejemplo, para minimizar el número de comentarios en el código convertido, seleccione **Solo errores**. Para incluir comentarios para todos los elementos de acción del código convertido, seleccione **Todos los mensajes**.
+ Para permitir AWS SCT convertir las vistas materializadas de Oracle en tablas o vistas materializadas en PostgreSQL. En **conversión de vistas materializadas como**, elija cómo convertir las vistas materializadas de origen.
+ Trabajar con el código fuente de Oracle cuando incluya las funciones `TO_CHAR`, `TO_DATE` y `TO_NUMBER` y con parámetros que PostgreSQL no admite. De forma predeterminada, AWS SCT simula el uso de estos parámetros en el código convertido.

  Si el código fuente de Oracle incluye solo los parámetros compatibles con PostgreSQL, puede utilizar funciones nativas `TO_CHAR`, `TO_DATE` y `TO_NUMBER` de PostgreSQL. En este caso, el código convertido funciona más rápido. Para incluir solo estos parámetros, seleccione los siguientes valores:
  + **La función TO\$1CHAR() no utiliza cadenas de formato específicas de Oracle**
  + **La función TO\$1DATE() no utiliza cadenas de formato específicas de Oracle**
  + **La función TO\$1NUMBER() no utiliza cadenas de formato específicas de Oracle**
+ Determinar cuándo la base de datos Oracle de origen almacena solo valores enteros en las columnas de clave principal o externa del tipo de datos `NUMBER`, AWS SCT puede convertir estas columnas al tipo de datos `BIGINT`. Este enfoque mejora el rendimiento del código convertido. Para adoptar este enfoque, seleccione **Convertir las columnas de clave principal o externa NUMBER en columnas BIGINT.** Asegúrese de que el origen no incluya valores de punto flotante en estas columnas para evitar la pérdida de datos.
+ Hacer caso omiso a los disparadores y restricciones deshabilitados en el código fuente. Para ello, elija **Hacer caso omiso de los disparadores y restricciones deshabilitados**.
+ Se utiliza AWS SCT para convertir variables de cadena que se denominan SQL dinámico. El código de la base de datos puede cambiar los valores de estas variables de cadena. Para asegurarse de que AWS SCT siempre convierte el valor más reciente de esta variable de cadena, seleccione **Convertir el código SQL dinámico que se crea en las rutinas denominadas**.
+ Para solucionar ese problema, la versión 10 y anteriores de PostgreSQL no admiten procedimientos. Si usted o sus usuarios no están familiarizados con el uso de procedimientos en PostgreSQL AWS SCT , pueden convertir los procedimientos de Oracle en funciones de PostgreSQL. Para ello, seleccione **Convertir procedimientos en funciones**.
+ Ver información adicional sobre los elementos de acción ocurridos. Para ello, puede añadir funciones específicas al paquete de extensión. Para ello, seleccione **Agregar un bloqueo de excepciones para los problemas de migración con los siguientes niveles de gravedad**. A continuación, elija los niveles de gravedad para aumentar las excepciones definidas por el usuario.
+ Trabajar con una base de datos de Oracle de origen que pueda incluir restricciones con los nombres generados automáticamente. Si el código fuente utiliza estos nombres, seleccione **Convertir los nombres de restricciones generados por el sistema utilizando los nombres originales del origen**. Si el código fuente utiliza estas restricciones pero no sus nombres, desactive esta opción para aumentar la velocidad de conversión.
+ Determinar si la base de datos y las aplicaciones se ejecutan en zonas horarias diferentes. De forma predeterminada, AWS SCT emula las zonas horarias en el código convertido. Sin embargo, no necesita esta simulación cuando la base de datos y las aplicaciones utilizan la misma zona horaria. En este caso, seleccione **La zona horaria del cliente coincide con la zona horaria del servidor**.
+ Determinar si la base de datos de origen y destino se ejecutan en zonas horarias diferentes. Si es así, la función que simula la función `SYSDATE` integrada de Oracle devuelve valores diferentes a los de la función de origen. Para asegurarse de que las funciones de origen y destino devuelven los mismos valores, elija **Establecer zona horaria predeterminada para la simulación de SYSDATE**.
+ Usar las funciones de la extensión orafce en el código convertido. Para ello, en **Usar implementación orafce**, seleccione las funciones que desee utilizar. [Para obtener más información sobre oracle, consulte orace on.](https://github.com/orafce/orafce) GitHub

## Conversión de secuencias de Oracle
<a name="CHAP_Source.Oracle.ToPostgreSQL.ConvertSequences"></a>

AWS SCT convierte secuencias de Oracle a PostgreSQL. Si utiliza secuencias para mantener las restricciones de integridad, asegúrese de que los nuevos valores de una secuencia migrada no se superpongan a los valores existentes.

**Para rellenar las secuencias convertidas con el último valor de la base de datos de origen**

1. Abra su AWS SCT proyecto con Oracle como fuente.

1. Elija **Configuración** y, a continuación, elija **Configuración de conversión**. 

1. En la lista superior, elija **Oracle** y, a continuación, **Oracle – PostgreSQL**. AWS SCT muestra todos los ajustes disponibles para la conversión de Oracle a PostgreSQL. 

1. Seleccione **Rellenar las secuencias convertidas con el último valor generado en el lado del origen**.

1. Seleccione **Aceptar** para guardar la configuración y cerrar el cuadro de diálogo **Configuración de conversión**. 

## Conversión de pseudocolumnas ROWID de Oracle
<a name="CHAP_Source.Oracle.ToPostgreSQL.ConvertRowID"></a>

 En una base de datos de Oracle, la pseudocolumna ROWID contiene la dirección de la fila de la tabla. La pseudocolumna ROWID es exclusiva de Oracle, por lo que AWS SCT convierte la pseudocolumna ROWID en una columna de datos en PostgreSQL. Al utilizar esta conversión, puede conservar la información de la pseudocolumna ROWID. 

Al convertir la pseudocolumna ROWID, puede crear una columna de datos con el tipo de datos. AWS SCT `bigint` Si no existe una clave principal, AWS SCT establece la columna ROWID como clave principal. Si existe una clave principal, AWS SCT establece la columna ROWID con una restricción única.

Si el código de la base de datos fuente incluye operaciones con ROWID, que no puede ejecutar con un tipo de datos numérico, AWS SCT puede crear una columna de datos con ese tipo de datos. `character varying`

**Para crear una columna de datos para la pseudocolumna ROWID de Oracle en un proyecto**

1. Abra su AWS SCT proyecto con Oracle como fuente.

1. Elija **Configuración** y, a continuación, elija **Configuración de conversión**. 

1. En la lista superior, elija **Oracle** y, a continuación, **Oracle – PostgreSQL**. AWS SCT muestra todos los ajustes disponibles para la conversión de Oracle a PostgreSQL. 

1. En **Generar ID de fila**, realice una de las siguientes acciones: 
   + Seleccione **Generar como identidad** para crear una columna de datos numéricos.
   + Seleccione **Generar como tipo de dominio de caracteres** para crear una columna de datos de caracteres.

1. Seleccione **Aceptar** para guardar la configuración y cerrar el cuadro de diálogo **Configuración de conversión**. 

## Conversión de SQL dinámico de Oracle
<a name="CHAP_Source.Oracle.ToPostgreSQL.DynamicSQL"></a>

 Oracle ofrece dos formas de implementar el SQL dinámico: mediante una instrucción EXECUTE IMMEDIATE o llamando a los procedimientos del paquete DBMS\$1SQL. Si la base de datos Oracle de origen incluye objetos con SQL dinámico, utilícela AWS SCT para convertir sentencias SQL dinámicas de Oracle a PostgreSQL.

**Para convertir instrucciones de SQL dinámico a PostgreSQL**

1. Abra su AWS SCT proyecto con Oracle como fuente.

1. Elija un objeto de base de datos que utilice SQL dinámico en la vista en árbol de origen de Oracle.

1. Abra el menú contextual (clic secundario) para el objeto, seleccione **Convertir esquema** y aceptar reemplazar los objetos si existen. En la siguiente captura de pantalla se muestra el procedimiento convertido bajo el procedimiento de Oracle con SQL dinámico.  
![\[Conversión de SQL dinámico\]](http://docs.aws.amazon.com/es_es/SchemaConversionTool/latest/userguide/images/dynamicsql1.png)

## Conversión de particiones de Oracle
<a name="CHAP_Source.Oracle.ToPostgreSQL.PG10Partitioning"></a>

AWS SCT actualmente admite los siguientes métodos de particionamiento: 
+ Range
+ Enumeración
+ Rango de varias columnas
+ Hash
+ Compuesto (list-list, range-list, list-range, list-hash, range-hash, hash-hash)

# Migración de Oracle a Amazon RDS para MySQL o Amazon Aurora MySQL con AWS Schema Conversion Tool
<a name="CHAP_Source.Oracle.ToMySQL"></a>

Para simular las funciones de la base de datos de Oracle en código MySQL convertido, utilice el paquete de extensión de Oracle a MySQL en AWS SCT. Para obtener más información acerca de los paquetes de extensión , consulte [Uso de paquetes de extensión con AWS Schema Conversion Tool](CHAP_ExtensionPack.md). 

**Topics**
+ [Privilegios para MySQL como base de datos de destino](#CHAP_Source.Oracle.ToMySQL.ConfigureTarget)
+ [Configuración de conversión de Oracle a MySQL](#CHAP_Source.Oracle.ToMySQL.ConversionSettings)
+ [Consideraciones sobre la migración](#CHAP_Source.Oracle.ToMySQL.MigrationConsiderations)
+ [Convertir la instrucción WITH en Oracle a Amazon RDS para MySQL o Amazon Aurora MySQL](#CHAP_Source.Oracle.ToMySQL.With)

## Privilegios para MySQL como base de datos de destino
<a name="CHAP_Source.Oracle.ToMySQL.ConfigureTarget"></a>

Los privilegios necesarios para MySQL como destino se enumeran a continuación:
+ 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\$1ACCESS
+ INSERTAR, ACTUALIZAR EN AWS\$1ORACLE \$1EXT. \$1
+ INSERTAR, ACTUALIZAR Y ELIMINAR EN AWS\$1ORACLE \$1EXT\$1DATA. \$1

Si utiliza como destino una base de datos MySQL 5.7 o inferior, conceda el permiso INVOKE LAMBDA \$1.\$1 en lugar de \$1ACCESS. AWS\$1LAMBDA Para las bases de datos MySQL versión 8.0 y superiores, conceda el AWS\$1LAMBDA\$1ACCESS permiso.

Puede usar el siguiente ejemplo de código para crear un usuario de base de datos y conceder los privilegios.

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

En el ejemplo anterior, *user\$1name* sustitúyalo por el nombre de tu usuario. A continuación, *your\$1password* sustitúyala por una contraseña segura.

Si utiliza como destino una base de datos MySQL 5.7 o anterior, utilice `GRANT INVOKE LAMBDA ON *.* TO 'user_name'` en lugar de `GRANT AWS_LAMBDA_ACCESS TO 'user_name'`.

Para usar Amazon RDS para MySQL o Aurora MySQL como destino, establezca el parámetro `lower_case_table_names` en `1`. Este valor significa que el servidor MySQL gestiona los identificadores de nombres de objetos como tablas, índices, disparadores y bases de datos sin distinguir entre mayúsculas y minúsculas. Si ha activado el registro binario en la instancia de destino, establezca el parámetro `log_bin_trust_function_creators` en `1`. En este caso, no es necesario utilizar las características `DETERMINISTIC`, `READS SQL DATA` o `NO SQL` para crear funciones almacenadas. Para configurar estos parámetros, cree un grupo de parámetros de base de datos nuevo o modifique uno existente.

## Configuración de conversión de Oracle a MySQL
<a name="CHAP_Source.Oracle.ToMySQL.ConversionSettings"></a>

Para editar la configuración de conversión de Oracle a MySQL, seleccione **Configuración** en y AWS SCT, a continuación, elija **Configuración de conversión**. En la lista superior, elija **Oracle** y, a continuación, **Oracle — MySQL**. AWS SCT muestra todos los ajustes disponibles para la conversión de Oracle a MySQL.

La configuración de conversión de Oracle a MySQL AWS SCT incluye opciones para lo siguiente:
+ Limitar el número de comentarios con elementos de acción en el código convertido.

  En **Añadir comentarios en el código convertido para los elementos de acción de la gravedad seleccionada o superior**, selecciona la gravedad de los elementos de acción. AWS SCT añade comentarios en el código convertido para los elementos de acción de la gravedad seleccionada o superior.

  Por ejemplo, para minimizar el número de comentarios en el código convertido, seleccione **Solo errores**. Para incluir comentarios para todos los elementos de acción del código convertido, seleccione **Todos los mensajes**.
+ Para solucionarlo, su base de datos Oracle de origen puede utilizar la `ROWID` pseudocolumna, pero MySQL no admite una funcionalidad similar. AWS SCT puede emular la `ROWID` pseudocolumna en el código convertido. Para ello, elija **Generar como identidad** en **¿Generar ID de fila?**.

  Si el código fuente de Oracle no utiliza la pseudocolumna `ROWID`, seleccione **No generar para generar** en **¿Generar ID de fila?** En este caso, el código convertido funciona más rápido.
+ Trabajar con el código fuente de Oracle cuando incluye las funciones `TO_CHAR`, `TO_DATE` y `TO_NUMBER` con parámetros que MySQL no admite. De forma predeterminada, AWS SCT simula el uso de estos parámetros en el código convertido.

  Si el código fuente de Oracle incluye solo los parámetros compatibles con PostgreSQL, puede utilizar funciones `TO_CHAR`, `TO_DATE` y `TO_NUMBER` de MySQL nativas. En este caso, el código convertido funciona más rápido. Para incluir solo estos parámetros, seleccione los siguientes valores:
  + **La función TO\$1CHAR() no utiliza cadenas de formato específicas de Oracle**
  + **La función TO\$1DATE() no utiliza cadenas de formato específicas de Oracle**
  + **La función TO\$1NUMBER() no utiliza cadenas de formato específicas de Oracle**
+ Determinar si la base de datos y las aplicaciones se ejecutan en zonas horarias diferentes. De forma predeterminada, AWS SCT simula las zonas horarias del código convertido. Sin embargo, no necesita esta simulación cuando la base de datos y las aplicaciones utilizan la misma zona horaria. En este caso, seleccione **La zona horaria del cliente coincide con la zona horaria del servidor**.

## Consideraciones sobre la migración
<a name="CHAP_Source.Oracle.ToMySQL.MigrationConsiderations"></a>

Al convertir Oracle a RDS para MySQL o Aurora MySQL, para cambiar el orden en que se ejecutan las sentencias, puede utilizar una instrucción `GOTO` y una etiqueta. Todas las instrucciones PL/SQL que van detrás de una instrucción `GOTO` se omiten y el procesamiento continúa en la etiqueta. Puede usar las instrucciones `GOTO` y las etiquetas se pueden utilizar en cualquier lugar de un procedimiento, lote o bloque de instrucciones. También puede anidar las instrucciones GOTO.

MySQL no utiliza instrucciones `GOTO`. Cuando AWS SCT convierte el código que contiene una `GOTO` sentencia, convierte la sentencia para usar una sentencia `BEGIN…END` or`LOOP…END LOOP`. 

Puede encontrar ejemplos de cómo se AWS SCT convierten `GOTO` las sentencias en la siguiente tabla.


| Instrucción de Oracle | Instrucción de 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>  | 

## Convertir la instrucción WITH en Oracle a Amazon RDS para MySQL o Amazon Aurora MySQL
<a name="CHAP_Source.Oracle.ToMySQL.With"></a>

Puede utilizar la cláusula WITH (subquery\$1factoring) en Oracle para asignar un nombre (query\$1name) a un bloque subquery. A continuación, puede hacer referencia al bloque subquery en varios lugares de la consulta especificando el valor de query\$1name. Si un bloque de subconsultas no contiene enlaces ni parámetros (local, procedimiento, función, paquete), AWS SCT convierte la cláusula en una vista o una tabla temporal. 

El beneficio de convertir la cláusula en una tabla temporal es que las referencias repetidas a la subconsulta podrían ser más eficientes. La mayor eficiencia se debe a que los datos se recuperan fácilmente de la tabla temporal en lugar de que cada referencia tenga que solicitarlos. Puede emular esto mediante vistas adicionales o una tabla temporal. El nombre de la consulta utiliza el formato `<procedure_name>$<subselect_alias>`.

Puede encontrar ejemplos en la siguiente tabla. 


| Instrucción de Oracle | Instrucción de 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>  | 

# Migración de Oracle Database a Amazon RDS for Oracle con AWS Schema Conversion Tool
<a name="CHAP_Source.Oracle.ToRDSOracle"></a>

Hay algunos aspectos que deben tenerse en cuenta al migrar un esquema y un código de Oracle a Amazon RDS para Oracle: 
+ AWS SCT puede añadir objetos de directorio al árbol de objetos. Los *objetos de directorio* son estructuras lógicas, cada una de las cuales representa un directorio físico del sistema de archivos del servidor. Puede utilizar objetos de directorio con paquetes como DBMS\$1LOB, UTL\$1FILE, DBMS\$1FILE\$1TRANSFER, la utilidad DATAPUMP, etc.
+ AWS SCT admite la conversión de tablespaces de Oracle en una instancia de base de datos de Amazon RDS for Oracle. Oracle almacena los datos de forma lógica en espacios de tabla y físicamente en archivos de datos asociados con el espacio de tabla correspondiente. En Oracle, puede crear un espacio de tabla con nombres de archivos de datos. Amazon RDS solo admite Oracle Managed Files (OMF) para archivos de datos, archivos de registro y archivos de control. AWS SCT crea los archivos de datos necesarios durante la conversión.
+ AWS SCT puede convertir funciones y privilegios a nivel de servidor. El motor de base de datos Oracle utiliza la seguridad basada en roles. Una función es un conjunto de privilegios que se pueden conceder a un usuario o que se pueden revocar. Una función predefinida de Amazon RDS llamada DBA normalmente admite todos los privilegios administrativos de un motor de base de datos de Oracle. Los privilegios siguientes no están disponibles para el rol DBA en una instancia de base de datos de Amazon RDS que utiliza el motor Oracle:
  + Alter database
  + Alter system
  + Create any directory
  + Grant any privilege
  + Grant any role
  + Create external job

  Puede conceder todos los demás privilegios a una función de usuario de Amazon RDS for Oracle, incluidos los de filtrado avanzado y de columnas.
+ AWS SCT admite la conversión de trabajos de Oracle en trabajos que se puedan ejecutar en Amazon RDS for Oracle. Existen algunas limitaciones en la conversión, entre las que se incluyen las siguientes:
  + No se admiten los trabajos ejecutables.
  + No se admiten los trabajos de programación que usan el tipo de datos ANYDATA como un argumento.
+ Oracle Real Application Clusters (RAC) One Node es una opción de Oracle Database Enterprise Edition que se introdujo con Oracle Database 11g versión 2. Amazon RDS for Oracle no admite la característica RAC. Para obtener una alta disponibilidad, utilice Multi-AZ de Amazon RDS. 

  En una implementación multi-AZ, Amazon RDS aprovisiona y mantiene automáticamente una réplica en espera sincrónica dentro de una zona de disponibilidad diferente. La instancia de base de datos principal se replica sincrónicamente en las zonas de disponibilidad en una réplica en espera. Esta funcionalidad proporciona redundancia de datos, elimina los I/O bloqueos y minimiza los picos de latencia durante las copias de seguridad del sistema.
+ Oracle Spatial proporciona un esquema y funciones SQL que facilitan el almacenamiento, la recuperación, la actualización y la consulta de colecciones de datos espaciales en una base de datos de Oracle. Oracle Locator proporciona capacidades que suelen ser necesarias para admitir aplicaciones basadas en servicio de Internet e inalámbricas y soluciones de Sistemas de información geográfica (SIG) basadas en el partner. Oracle Locator es una subred limitada de Oracle Spatial.

  Para utilizar las características de Oracle Spatial u Oracle Locator, agregue la opción SPATIAL o la opción LOCATOR (mutuamente excluyentes) al grupo de opciones de la instancia de base de datos.

  Existen algunas requisitos previos que debe cumplir para poder usar Oracle Spatial u Oracle Locator en una instancia de base de datos de Amazon RDS for Oracle:
  + La instancia debe usar Oracle Enterprise Edition versión 12.1.0.2.v6 o posterior o la versión 11.2.0.4.v10 o posterior.
  + La instancia debe estar dentro de una nube virtual privada (VPC).
  + La instancia debe usar la clase de instancia de base de datos que es compatible con la característica de Oracle. Por ejemplo, Oracle Spatial no se admite para las clases de instancia de base de datos db.m1.small, db.t1.micro, db.t2.micro o db.t2.small. Para obtener más información, consulte [Compatibilidad de clases de instancias de bases de datos con Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html#Oracle.Concepts.InstanceClasses).
  + La instancia debe tener habilitada la opción Auto Minor Version Upgrade (Actualización automática de versiones menores). Amazon RDS actualiza automáticamente su instancia de base de datos a la versión más reciente de Oracle PSU si hay vulnerabilidades de seguridad con una puntuación de CVSS superior a 9 u otras vulnerabilidades de seguridad anunciadas. Para obtener más información, consulte 

    [ Configuración de las instancias de base de datos de Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ModifyInstance.Oracle.html#USER_ModifyInstance.Oracle.Settings).
  + Si la versión de su instancia de base de datos es la 11.2.0.4.v10 o posterior, debe instalar la opción XMLDB. Para obtener más información, consulte 

    [Oracle XML DB](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.Options.XMLDB.html).
  + Debe tener una licencia de Oracle Spatial de Oracle. Para obtener más información, consulte [Oracle Spatial and Graph](https://shop.oracle.com/apex/product?p1=OracleSpatialandGraph) en la documentación de Oracle.
+ Data Guard se incluye con Oracle Database Enterprise Edition. Para obtener una alta disponibilidad, utilice la característica Multi-AZ de Amazon RDS. 

  En una implementación multi-AZ, Amazon RDS aprovisiona y mantiene automáticamente una réplica en espera sincrónica dentro de una zona de disponibilidad diferente. La instancia de base de datos principal se replica sincrónicamente en las zonas de disponibilidad en una réplica en espera. Esta funcionalidad proporciona redundancia de datos, elimina las I/O congelaciones y minimiza los picos de latencia durante las copias de seguridad del sistema.
+ AWS SCT admite la conversión de objetos DBMS\$1SCHEDULER de Oracle al migrar a Amazon RDS for Oracle. El informe de AWS SCT evaluación indica si un objeto de programación se puede convertir. Para obtener más información acerca del uso de objetos de programación con Amazon RDS, consulte la [documentación de Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.System.html#Appendix.Oracle.CommonDBATasks.ModifyScheduler).
+ En el caso de conversiones de Oracle a Amazon RDS for Oracle, se admiten los enlaces de base de datos. Un enlace de base de datos es un objeto de esquema en una base de datos que le permite obtener acceso a los objetos de otra base de datos. No es necesario que la otra base de datos sea de Oracle. Sin embargo, para obtener acceso a las bases de datos que no son de Oracle, debe utilizar Oracle Heterogeneous Services.

  Una vez creado un enlace a una base de datos, puede usarlo en las sentencias SQL para hacer referencia a tablas, vistas y PL/SQL objetos de la otra base de datos. Para usar un enlace de base de datos, `@dblink` añádalo al nombre de la tabla, vista o PL/SQL objeto. Puede consultar una tabla o una vista de la otra base de datos con la instrucción SELECT. Para obtener más información acerca del uso de enlaces de base de datos de Oracle, consulte la [documentación de Oracle](https://docs.oracle.com/cd/B28359_01/server.111/b28310/ds_concepts002.htm#ADMIN12083).

  Para obtener más información acerca del uso de enlaces de base de datos con Amazon RDS, consulte la [documentación de Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.Database.html#Appendix.Oracle.CommonDBATasks.DBLinks).
+ El informe AWS SCT de evaluación proporciona las métricas del servidor para la conversión. Estas métricas acerca de la instancia de Oracle incluyen:
  + Capacidad de memoria y computación de la instancia de base de datos de destino.
  + Características de Oracle, como Real Application Clusters no compatibles que Amazon RDS no admite.
  + Carga de lectura-escritura en disco.
  + Rendimiento de disco medio total
  + Información del servidor, como nombre de servidor, sistema operativo, alojamiento, nombre y conjunto de caracteres.

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

Para migrar a Amazon RDS para Oracle, cree un usuario de base de datos privilegiado. Puede utilizar el siguiente código de ejemplo.

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

En el ejemplo anterior, *user\$1name* sustitúyalo por el nombre de tu usuario. A continuación, *your\$1password* sustitúyala por una contraseña segura.

## Limitaciones al convertir de Oracle a Amazon RDS para Oracle
<a name="CHAP_Source.Oracle.ToRDSOracle.Limitations"></a>

Hay que tener en cuenta algunas limitaciones al migrar un esquema y un código de Oracle a Amazon RDS para Oracle: 
+  Una función predefinida de Amazon RDS llamada DBA normalmente admite todos los privilegios administrativos de un motor de base de datos de Oracle. Los privilegios siguientes no están disponibles para el rol DBA en una instancia de base de datos de Amazon RDS que utiliza el motor Oracle:
  + Alter database
  + Alter system
  + Create any directory
  + Grant any privilege
  + Grant any role
  + Create external job

  Todos los demás privilegios se pueden conceder a una función de usuario de Oracle RDS.
+ Amazon RDS para Oracle admite las auditorías tradicionales y detalladas mediante el paquete DBMS\$1FGA y Oracle Unified Auditing.
+ Amazon RDS para Oracle no admite la captura de datos de cambios (CDC). Para usar la CDC durante y después de la migración de una base de datos, utilice AWS Database Migration Service.