

# Importación de datos a Oracle en Amazon RDS
<a name="Oracle.Procedural.Importing"></a>

La forma de importar datos a una instancia de base de datos de Amazon RDS para Oracle depende de lo siguiente 
+ La cantidad de datos que tiene
+ El número de objetos de base de datos en la base de datos
+ La variedad de objetos de base de datos en la base de datos

Por ejemplo, puede utilizar las siguientes herramientas, en funcion de sus requisitos:
+ Oracle SQL Developer: importe una base de datos sencilla de 20 MB.
+ Oracle Data Pump: importe bases de datos complejas o con un tamaño de varios cientos de megabytes o varios terabytes. Por ejemplo, puede transportar espacios de tabla desde una base de datos en las instalaciones a su instancia de base de datos de RDS para Oracle. Puede utilizar Amazon S3 o Amazon EFS para transferir los archivos de datos y los metadatos. Para obtener más información, consulte [Migración mediante espacios de tabla transportables de Oracle](oracle-migrating-tts.md), [Integración de Amazon EFS](oracle-efs-integration.md) y [Integración de Amazon S3](oracle-s3-integration.md).
+ AWS Database Migration Service (AWS DMS): migre bases de datos sin tiempo de inactividad. Para obtener más información acerca de AWS DMS, consulte [¿Qué es AWS Database Migration Service](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) y la publicación del blog sobre la [migración de bases de datos de Oracle con tiempo de inactividad casi nulo mediante DMS de AWS](https://aws.amazon.com/blogs/database/migrating-oracle-databases-with-near-zero-downtime-using-aws-dms/).

**importante**  
Antes de utilizar estas técnicas de migración, le recomendamos que realice una copia de seguridad de la base de datos. Después de importar los datos, puede realizar una copia de seguridad de sus instancias de base de datos de RDS para Oracle creando instantáneas. Posteriormente, puede restaurar las instantáneas. Para obtener más información, consulte [Copia de seguridad, restauración y exportación de datos](CHAP_CommonTasks.BackupRestore.md).

Para muchos motores de base de datos, la replicación continua puede continuar hasta que esté listo para cambiar a la base de datos de destino. Puede utilizar AWS DMS para migrar a RDS para Oracle desde el mismo motor de base de datos o desde un motor diferente. Si migra desde un motor de base de datos diferente, puede utilizar AWS Schema Conversion Tool para migrar objetos de esquema que AWS DMS no migra.

**Topics**
+ [Importación mediante Oracle SQL Developer](Oracle.Procedural.Importing.SQLDeveloper.md)
+ [Migración mediante espacios de tabla transportables de Oracle](oracle-migrating-tts.md)
+ [Importación mediante Oracle Data Pump](Oracle.Procedural.Importing.DataPump.md)
+ [Importación mediante exportación/importación de Oracle](Oracle.Procedural.Importing.ExportImport.md)
+ [Importación mediante Oracle SQL\$1Loader](Oracle.Procedural.Importing.SQLLoader.md)
+ [Migración de vistas materializadas de Oracle](Oracle.Procedural.Importing.Materialized.md)

# Importación mediante Oracle SQL Developer
<a name="Oracle.Procedural.Importing.SQLDeveloper"></a>

Oracle SQL Developer es una herramienta gráfica desarrollada en Java y distribuida sin coste por Oracle. SQL Developer proporciona opciones para migrar datos entre dos bases de datos de Oracle o para migrar datos de otras bases de datos, como MySQL, a una base de datos Oracle. Esta herramienta es la opción más adecuada para migrar bases de datos pequeñas. 

Puede instalar esta herramienta en un equipo de escritorio (Windows, Linux o Mac) o en uno de sus servidores. Después de instalar SQL Developer, puede utilizarlo para conectarse a las bases de datos de origen y de destino. Utilice el comando **Copia de base de datos** del menú Herramientas para copiar datos en la instancia de base de datos de RDS para Oracle. 

Para descargar SQL Developer, vaya a [http://www.oracle.com/technetwork/developer-tools/sql-developer](http://www.oracle.com/technetwork/developer-tools/sql-developer). 

Recomendamos que lea la documentación del producto Oracle SQL Developer antes de comenzar a migrar datos. Oracle también tiene documentación acerca de cómo migrar desde otras bases de datos, como MySQL y SQL Server. Para obtener más información, consulte [http://www.oracle.com/technetwork/database/migration](http://www.oracle.com/technetwork/database/migration) en la documentación de Oracle. 

# Migración mediante espacios de tabla transportables de Oracle
<a name="oracle-migrating-tts"></a>

Puede utilizar la característica de espacios de tabla transportables de Oracle para copiar un conjunto de espacios de tabla de una base de datos de Oracle en las instalaciones a una instancia de base de datos de RDS para Oracle. En el nivel físico, los archivos de datos de origen y los archivos de metadatos se transfieren a la instancia de base de datos de destino mediante Amazon EFS o Amazon S3. La característica de espacios de tabla transportables utiliza el paquete `rdsadmin.rdsadmin_transport_util`. Para obtener información sobre la sintaxis y la semántica de este paquete, consulte [Transporte de espacios de tabla](rdsadmin_transport_util.md).

Para ver publicaciones de blog que explican cómo transportar espacios de tabla, consulte [Migrate Oracle Databases to AWS using transportable tablespace](https://aws.amazon.com/blogs/database/migrate-oracle-databases-to-aws-using-transportable-tablespace/) y [Amazon RDS for Oracle Transportable Tablespaces using RMAN](https://aws.amazon.com/blogs/database/amazon-rds-for-oracle-transportable-tablespaces-using-rman/).

**Topics**
+ [Descripción general de los espacios de tabla transportables de Oracle](#oracle-migrating-tts.overview)
+ [Fase 1: Configurar el host de origen](#oracle-migrating-tts.setup-phase)
+ [Fase 2: Preparar la copia de seguridad completa del espacio de tabla](#oracle-migrating-tts.initial-br-phase)
+ [Fase 3: Realizar y transferir copias de seguridad incrementales](#oracle-migrating-tts.roll-forward-phase)
+ [Fase 4: Transportar los espacios de tabla](#oracle-migrating-tts.final-br-phase)
+ [Fase 5: Validar los espacios de tabla transportados](#oracle-migrating-tts.validate)
+ [Fase 6: Limpiar los archivos sobrantes](#oracle-migrating-tts.cleanup)

## Descripción general de los espacios de tabla transportables de Oracle
<a name="oracle-migrating-tts.overview"></a>

Un conjunto de espacios de tabla transportables consta de archivos de datos para el conjunto de espacios de tabla que se transportan y un archivo de volcado de exportación que contiene los metadatos del espacio de tabla. En una solución de migración física, como los espacios de tabla transportables, se transfieren archivos físicos: archivos de datos, archivos de configuración y archivos de volcado de Data Pump.

**Topics**
+ [Ventajas y desventajas de los espacios de tabla transportables](#oracle-migrating-tts.overview.benefits)
+ [Limitaciones de los espacios de tabla transportables](#oracle-migrating-tts.limitations)
+ [Requisitos previos para los espacios de tabla transportables](#oracle-migrating-tts.requirements)

### Ventajas y desventajas de los espacios de tabla transportables
<a name="oracle-migrating-tts.overview.benefits"></a>

Le recomendamos que utilice espacios de tabla transportables cuando tenga que migrar uno o más espacios de tabla grandes a RDS con un tiempo de inactividad mínimo. Los espacios de tabla transportables ofrecen las siguientes ventajas con respecto a la migración lógica:
+ El tiempo de inactividad es inferior al de la mayoría de las demás soluciones de migración de Oracle.
+ Dado que la característica de espacio de tabla transportable solo copia archivos físicos, evita los errores de integridad de los datos y la corrupción lógica que pueden producirse en la migración lógica.
+ No se requiere ninguna licencia adicional.
+ Puede migrar un conjunto de espacios de tabla en diferentes plataformas y tipos de endianness, por ejemplo, de una plataforma Oracle Solaris a Linux. Sin embargo, no se admite el transporte de espacios de tabla hacia y desde servidores Windows.
**nota**  
Linux está totalmente probado y es compatible. No se han probado todas las variantes de UNIX.

Si usa espacios de tabla transportables, puede transportar datos mediante Amazon S3 o Amazon EFS:
+ Si utiliza EFS, las copias de seguridad permanecen en el sistema de archivos EFS durante la importación. Podrá eliminar los archivos después. En esta técnica, no es necesario aprovisionar el almacenamiento de EBS para la instancia de base de datos. Por este motivo, se recomienda utilizar Amazon EFS en lugar de S3. Para obtener más información, consulte [Integración de Amazon EFS](oracle-efs-integration.md).
+ Si usa S3, debe descargar las copias de seguridad de RMAN al almacenamiento de EBS adjunto a su instancia de base de datos. Los archivos permanecerán en su almacenamiento de EBS durante la importación. Tras la importación, puede liberar este espacio, que sigue asignado a la instancia de base de datos.

La principal desventaja de los espacios de tabla transportables es que se necesitan conocimientos relativamente avanzados de Oracle Database. Para obtener más información, consulte el tema sobre cómo [transportar espacios de tabla entre bases de datos](https://docs.oracle.com/en/database/oracle/oracle-database/19/admin/transporting-data.html#GUID-F7B2B591-AA88-4D16-8DCF-712763923FFB) en la *Guía del administrador de bases de datos de Oracle*.

### Limitaciones de los espacios de tabla transportables
<a name="oracle-migrating-tts.limitations"></a>

Las limitaciones de Oracle Database para los espacios de tabla transportables se aplican cuando se utiliza esta característica en RDS para Oracle. Para obtener más información, consulte los apartados sobre [limitaciones de los espacios de tabla transportables]( https://docs.oracle.com/en/database/oracle/oracle-database/19/admin/transporting-data.html#GUID-DAB51E42-9BBC-4001-B5CB-0ECDBE128787) y [limitaciones generales del transporte de datos](https://docs.oracle.com/en/database/oracle/oracle-database/19/admin/transporting-data.html#GUID-28800719-6CB9-4A71-95DD-4B61AA603173) en la *Guía del administrador de bases de datos de Oracle*. Tenga en cuenta las siguientes limitaciones adicionales para los espacios de tabla transportables en RDS para Oracle:
+ Ni la base de datos de origen ni la de destino pueden utilizar Standard Edition 2 (SE2). Solo se admite la edición Enterprise.
+ No puede utilizar una base de datos Oracle Database 11g como origen. La característica de espacios de tablas transportables multiplataforma de RMAN se basa en el mecanismo de transporte RMAN, que Oracle Database 11g no admite.
+ No puede migrar datos de una instancia de base de datos de RDS para Oracle mediante espacios de tabla transportables. Solo puede usar espacios de tabla transportables para migrar datos a una instancia de base de datos de RDS para Oracle.
+ No admite el sistema operativo Windows.
+ No puede transportar espacios de tabla a una base de datos con un nivel de versión inferior. La base de datos de destino debe estar en el mismo nivel de versión o en una versión posterior que la base de datos de origen. Por ejemplo, no puede transportar espacios de tabla de Oracle Database 21c a Oracle Database 19c.
+ No puede transportar espacios de tablas administrativas como `SYSTEM` y `SYSAUX`.
+ No puede transportar objetos que no sean de datos, como paquetes PL/SQL, clases de Java, vistas, desencadenadores, secuencias, usuarios, roles y tablas temporales. Para transportar objetos que no sean de datos, créelos manualmente o utilice la exportación e importación de metadatos de Data Pump. Para obtener más información, consulte [My Oracle Support Note 1454872.1](https://support.oracle.com/knowledge/Oracle%20Cloud/1454872_1.html).
+ No puede transportar espacios de tabla cifrados ni utilizar columnas cifradas.
+ Si transfiere archivos mediante Amazon S3, el tamaño máximo de archivo admitido será de 5 TiB.
+ Si la base de datos de origen utiliza opciones de Oracle, como Spatial, no podrá transportar espacios de tabla a menos que se configuren las mismas opciones en la base de datos de destino.
+ No puede transportar espacios de tabla a una instancia de base de datos de RDS para Oracle en una configuración de réplica de Oracle. Como solución alternativa, puede eliminar todas las réplicas, transportar los espacios de tabla y, a continuación, volver a crear las réplicas.

### Requisitos previos para los espacios de tabla transportables
<a name="oracle-migrating-tts.requirements"></a>

 Antes de empezar, complete las siguientes tareas:
+ Revise los requisitos de los espacios de tabla transportables que se describen en los siguientes documentos de My Oracle Support:
  + [Reduzca el tiempo de inactividad del espacio de tabla transportable mediante la copia de seguridad incremental multiplataforma (ID del documento 2471245.1)](https://support.oracle.com/epmos/faces/DocumentDisplay?id=2471245.1)
  + [Restricciones y limitaciones del espacio de tabla transportable (TTS): detalles, referencia y versión, según corresponda (ID del documento 1454872.1)](https://support.oracle.com/epmos/faces/DocumentDisplay?id=1454872.1)
  + [Nota principal sobre los espacios de tabla transportables (TTS): preguntas y problemas frecuentes (ID del documento 1166564.1)](https://support.oracle.com/epmos/faces/DocumentDisplay?id=1166564.1)
+ Planifique la conversión de endianness. Si especifica el ID de la plataforma de origen, RDS para Oracle convierte el endianness automáticamente. Para obtener información sobre cómo encontrar los ID de plataforma, consulte [Data Guard Support for Heterogeneous Primary and Physical Standbys in Same Data Guard Configuration (Doc ID 413484.1)](https://support.oracle.com/epmos/faces/DocumentDisplay?id=413484.1) (Compatibilidad de Data Guard para instancias en espera principales y físicas heterogéneos en la misma configuración de Data Guard). 
+ Asegúrese de que la característica de espacio de tabla transportable esté habilitada en la instancia de base de datos de destino. La característica solo está habilitada si no reciben ningún error `ORA-20304` al ejecutar la siguiente consulta:

  ```
  SELECT * FROM TABLE(rdsadmin.rdsadmin_transport_util.list_xtts_orphan_files);
  ```

  Si la característica de espacio de tabla transportable no está habilitada, reinicie la instancia de base de datos. Para obtener más información, consulte [Reinicio de una instancia de base de datos ](USER_RebootInstance.md).
+ Compruebe que el archivo de zona horaria sea el mismo en las bases de datos de origen y destino.
+ Compruebe que los juegos de caracteres de las bases de datos de origen y destino cumplen alguno de los siguientes requisitos:
  + Los conjuntos de caracteres son los mismos.
  + Los conjuntos de caracteres son compatibles. Para obtener una lista de los requisitos de compatibilidad, consulte [General Limitations on Transporting Data](https://docs.oracle.com/en/database/oracle/oracle-database/19/spmdu/general-limitations-on-transporting-data.html#GUID-28800719-6CB9-4A71-95DD-4B61AA603173) en la documentación de Oracle Database.
+ Si tiene previsto transferir archivos mediante Amazon S3, haga lo siguiente:
  + Asegúrese de que haya un bucket de Amazon S3 disponible para las transferencias de archivos, y de que el bucket de Amazon S3 esté en la misma región de AWS que la instancia de base de datos. Para ver las instrucciones, consulte [Crear un bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CreatingABucket.html) en la *Guía de introducción de Amazon Simple Storage Service*.
  + Debe preparar el bucket de Amazon S3 para la integración de Amazon RDS siguiendo las instrucciones de [Configuración de permisos IAM para la integración de RDS para Oracle con Amazon S3](oracle-s3-integration.preparing.md).
+ Si tiene previsto transferir archivos mediante Amazon EFS, asegúrese de haber configurado EFS según las instrucciones de [Integración de Amazon EFS](oracle-efs-integration.md).
+ Le recomendamos encarecidamente que active las copias de seguridad automáticas en la instancia de base de datos de destino. Dado que el [paso de importación de metadatos](#oracle-migrating-tts.transport.import-dmp) puede fallar, es importante poder restaurar la instancia de base de datos al estado anterior a la importación, para evitar la necesidad de realizar copias de seguridad, transferir e importar los espacios de tabla de nuevo.

## Fase 1: Configurar el host de origen
<a name="oracle-migrating-tts.setup-phase"></a>

En este paso, se copian los scripts de espacios de tabla transportables proporcionados por My Oracle Support y se configuran los archivos de configuración necesarios. En los siguientes pasos, el *host de origen* ejecuta la base de datos que contiene los espacios de tabla que se transportarán a la *instancia de destino*.

**Para configurar el host de origen**

1. Inicie sesión en su host de origen como propietario de su inicio de Oracle.

1. Asegúrese de que sus variables de entorno `ORACLE_HOME` y `ORACLE_SID` apunten hacia la base de datos de origen.

1. Inicie sesión en la base de datos como administrador y compruebe que la versión de zona horaria, el juego de caracteres de la base de datos y el conjunto de caracteres nacionales sean los mismos que los de la base de datos de destino.

   ```
   SELECT * FROM V$TIMEZONE_FILE;
   SELECT * FROM NLS_DATABASE_PARAMETERS 
     WHERE PARAMETER IN ('NLS_CHARACTERSET','NLS_NCHAR_CHARACTERSET');
   ```

1. Configure la utilidad de espacio de tabla transportable tal como se describe en la [nota de soporte de Oracle 2471245.1](https://support.oracle.com/epmos/faces/DocumentDisplay?id=2471245.1). 

   La configuración incluye la edición del archivo `xtt.properties` en el host de origen. El siguiente archivo `xtt.properties` de ejemplo especifica las copias de seguridad de tres espacios de tabla del directorio `/dsk1/backups`. Estos son los espacios de tabla que pretende transportar a la instancia de base de datos de destino. También especifica el ID de la plataforma de origen para convertir el endianness automáticamente.
**nota**  
Para encontrar los ID de plataforma válidos, consulte [Data Guard Support for Heterogeneous Primary and Physical Standbys in Same Data Guard Configuration (Doc ID 413484.1)](https://support.oracle.com/epmos/faces/DocumentDisplay?id=413484.1) (Compatibilidad de Data Guard para instancias en espera principales y físicas heterogéneos en la misma configuración de Data Guard). 

   ```
   #linux system 
   platformid=13
   #list of tablespaces to transport
   tablespaces=TBS1,TBS2,TBS3
   #location where backup will be generated
   src_scratch_location=/dsk1/backups
   #RMAN command for performing backup
   usermantransport=1
   ```

## Fase 2: Preparar la copia de seguridad completa del espacio de tabla
<a name="oracle-migrating-tts.initial-br-phase"></a>

En esta fase, realiza una copia de seguridad de los espacios de tabla por primera vez, transfiere las copias de seguridad al host de destino y, a continuación, las restaura siguiendo el procedimiento `rdsadmin.rdsadmin_transport_util.import_xtts_tablespaces`. Cuando se complete esta fase, las copias de seguridad iniciales del espacio de tabla estarán en la instancia de base de datos de destino y se podrán actualizar con copias de seguridad incrementales.

**Topics**
+ [Paso 1: realice copias de seguridad de los espacios de tabla en el host de origen](#oracle-migrating-tts.backup-full)
+ [Paso 2: transfiera los archivos de copia de seguridad a la instancia de base de datos de destino](#oracle-migrating-tts.transfer-full)
+ [Paso 3: importe los espacios de tabla en la instancia de base de datos de destino](#oracle-migrating-tts.initial-tts-import)

### Paso 1: realice copias de seguridad de los espacios de tabla en el host de origen
<a name="oracle-migrating-tts.backup-full"></a>

En este paso, utilizará el script `xttdriver.pl` para hacer una copia de seguridad completa de sus espacios de tabla. La salida de `xttdriver.pl` se almacena en la variable de entorno `TMPDIR`.

**Para hacer una copia de seguridad de los espacios de tabla**

1. Si los espacios de tabla están en modo de solo lectura, inicie sesión en la base de datos de origen como usuario con el privilegio `ALTER TABLESPACE` y coloque los espacios de tabla en modo de lectura/escritura. De no ser así, vaya al siguiente paso.

   En el siguiente ejemplo se establecen `tbs1`, `tbs2` y `tbs3` en modo de lectura/escritura.

   ```
   ALTER TABLESPACE tbs1 READ WRITE;
   ALTER TABLESPACE tbs2 READ WRITE;
   ALTER TABLESPACE tbs3 READ WRITE;
   ```

1. Realice una copia de seguridad de los espacios de tabla con el script `xttdriver.pl`. Si lo desea, puede especificar `--debug` para que ejecute el script en modo de depuración.

   ```
   export TMPDIR=location_of_log_files
   cd location_of_xttdriver.pl
   $ORACLE_HOME/perl/bin/perl xttdriver.pl --backup
   ```

### Paso 2: transfiera los archivos de copia de seguridad a la instancia de base de datos de destino
<a name="oracle-migrating-tts.transfer-full"></a>

En este paso, debe copiar los archivos de copia de seguridad y de configuración de la ubicación inicial a la instancia de base de datos de destino. Elija una de las siguientes opciones:
+ Si los hosts de origen y destino comparten un sistema de archivos de Amazon EFS, use una utilidad del sistema operativo, por ejemplo, `cp`, para copiar los archivos de copia de seguridad y el archivo `res.txt` de su ubicación inicial a un directorio compartido. A continuación, diríjase a [Paso 3: importe los espacios de tabla en la instancia de base de datos de destino](#oracle-migrating-tts.initial-tts-import).
+ Si necesita organizar sus copias de seguridad en un bucket de Amazon S3, siga estos pasos.

![\[Transfiera los archivos mediante Amazon EFS o Amazon S3.\]](http://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/images/oracle-tts.png)


#### Paso 2.2: Cargar las copias de seguridad en el bucket de Amazon S3
<a name="oracle-migrating-tts.upload-full"></a>

Cargue las copias de seguridad y el archivo `res.txt` del directorio inicial al bucket de Amazon S3. Para obtener más información, consulte [Carga de objetos](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html) en la *Guía del desarrollador de Amazon Simple Storage Service*.

#### Paso 2.3: Descargar las copias de seguridad desde el bucket de Amazon S3 a la instancia de base de datos de destino
<a name="oracle-migrating-tts.download-full"></a>

En este paso, utilizará el procedimiento `rdsadmin.rdsadmin_s3_tasks.download_from_s3` para descargar las copias de seguridad en la instancia de base de datos de RDS para Oracle.

**Para descargar las copias de seguridad del bucket de Amazon S3**

1. Inicie SQL\$1Plus u Oracle SQL Developer e inicie sesión en la instancia de base de datos de destino de RDS para Oracle.

1. Descargue las copias de seguridad del bucket de Amazon S3 en la instancia de base de datos de destino mediante el procedimiento de Amazon RDS `rdsadmin.rdsadmin_s3_tasks.download_from_s3` para d. En el siguiente ejemplo se descargan todos los archivos de un bucket de Amazon S3 denominado `amzn-s3-demo-bucket` en el directorio `DATA_PUMP_DIR`.

   ```
   EXEC UTL_FILE.FREMOVE ('DATA_PUMP_DIR', 'res.txt');
   SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3(
     p_bucket_name    =>  'amzn-s3-demo-bucket',
     p_directory_name =>  'DATA_PUMP_DIR') 
   AS TASK_ID FROM DUAL;
   ```

   La instrucción `SELECT` devuelve el identificador de la tarea en un tipo de datos `VARCHAR2`. Para obtener más información, consulte [Descarga de archivos desde un bucket de Amazon S3 en una instancia de base de datos de Oracle](oracle-s3-integration.using.md#oracle-s3-integration.using.download).

### Paso 3: importe los espacios de tabla en la instancia de base de datos de destino
<a name="oracle-migrating-tts.initial-tts-import"></a>

Utilice el procedimiento `rdsadmin.rdsadmin_transport_util.import_xtts_tablespaces` para restaurar los espacios de tabla en la instancia de base de datos de destino. Este procedimiento convierte automáticamente los archivos de datos al formato endian correcto.

Si realiza la importación desde una plataforma que no sea Linux, especifique la plataforma de origen mediante el parámetro `p_platform_id` cuando llame a `import_xtts_tablespaces`. Asegúrese de que el id. de plataforma coincida con el especificado en el archivo `xtt.properties` en [Paso 2: exporte los metadatos del espacio de tabla en el host de origen](#oracle-migrating-tts.transport.export).

**Importar los espacios de tabla en la instancia de base de datos de destino**

1. Inicie un cliente de Oracle SQL e inicie sesión como usuario maestro en su instancia de base de datos de destino de RDS para Oracle.

1. Ejecute el procedimiento `rdsadmin.rdsadmin_transport_util.import_xtts_tablespaces` y especifique los espacios de tabla que se van a importar y el directorio que contiene las copias de seguridad.

   En el siguiente ejemplo se importan los espacios de tabla *TBS1*, *TBS2* y *TBS3* del directorio *DATA\$1PUMP\$1DIR*. La plataforma de origen es AIX-Based Systems (64 bits), con el id. de plataforma `6`. Puede encontrar los id. de plataforma consultando `V$TRANSPORTABLE_PLATFORM`.

   ```
   VAR task_id CLOB
   
   BEGIN
     :task_id:=rdsadmin.rdsadmin_transport_util.import_xtts_tablespaces(
           'TBS1,TBS2,TBS3',
           'DATA_PUMP_DIR',
           p_platform_id => 6);
   END;
   /
   
   PRINT task_id
   ```

1. (Opcional) Supervise el progreso consultando la tabla `rdsadmin.rds_xtts_operation_info`. La columna `xtts_operation_state` muestra el valor `EXECUTING`, `COMPLETED` o `FAILED`.

   ```
   SELECT * FROM rdsadmin.rds_xtts_operation_info;
   ```
**nota**  
Para operaciones de larga duración, también puede consultar `V$SESSION_LONGOPS`, `V$RMAN_STATUS` y `V$RMAN_OUTPUT`.

1. Para ver el registro de la importación finalizada, utilice el ID de la tarea del paso anterior.

   ```
   SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||'&task_id'||'.log'));
   ```

   Asegúrese de que se haya completado correctamente la importación antes de continuar con el siguiente paso.

## Fase 3: Realizar y transferir copias de seguridad incrementales
<a name="oracle-migrating-tts.roll-forward-phase"></a>

En esta fase, se realizan y transfieren copias de seguridad incrementales periódicamente mientras la base de datos de origen esté activa. Esta técnica reduce el tamaño de la copia de seguridad final del espacio de tabla. Si realiza varias copias de seguridad incrementales, debe copiar el archivo `res.txt` después de la última copia de seguridad incremental antes de poder aplicarlo en la instancia de destino.

Los pasos son los mismos que en [Fase 2: Preparar la copia de seguridad completa del espacio de tabla](#oracle-migrating-tts.initial-br-phase), excepto que el paso de importación es opcional.

## Fase 4: Transportar los espacios de tabla
<a name="oracle-migrating-tts.final-br-phase"></a>

En esta fase, se realiza una copia de seguridad de los espacios de tabla de solo lectura y se exportan los metadatos de Data Pump, se transfiere estos archivos al host de destino y se importan tanto los espacios de tabla como los metadatos.

**Topics**
+ [Paso 1: realice una copia de seguridad de los espacios de tabla de solo lectura](#oracle-migrating-tts.final-backup)
+ [Paso 2: exporte los metadatos del espacio de tabla en el host de origen](#oracle-migrating-tts.transport.export)
+ [Paso 3: (solo Amazon S3) transfiera los archivos de copia de seguridad y exporte los archivos a la instancia de base de datos de destino](#oracle-migrating-tts.transport)
+ [Paso 4: Importar los espacios de tabla en la instancia de base de datos de destino](#oracle-migrating-tts.restore-full)
+ [Paso 5: Importar los metadatos del espacio de tabla en la instancia de base de datos de destino](#oracle-migrating-tts.transport.import-dmp)

### Paso 1: realice una copia de seguridad de los espacios de tabla de solo lectura
<a name="oracle-migrating-tts.final-backup"></a>

Este paso es idéntico al [Paso 1: realice copias de seguridad de los espacios de tabla en el host de origen](#oracle-migrating-tts.backup-full), salvo que aquí se establecen los espacios de tabla en modo de solo lectura antes de hacer una copia de seguridad de los espacios de tabla por última vez.

En el siguiente ejemplo se establecen `tbs1`, `tbs2` y `tbs3` en modo de solo lectura.

```
ALTER TABLESPACE tbs1 READ ONLY;
ALTER TABLESPACE tbs2 READ ONLY;
ALTER TABLESPACE tbs3 READ ONLY;
```

### Paso 2: exporte los metadatos del espacio de tabla en el host de origen
<a name="oracle-migrating-tts.transport.export"></a>

Para exportar los metadatos del espacio de tabla, ejecute la utilidad `expdb` en el host de origen. En el siguiente ejemplo se exportan los espacios de tabla *TBS1*, *TBS2* y *TBS3* al archivo de volcado *xttdump.dmp* en el directorio *DATA\$1PUMP\$1DIR*.

```
expdp username/pwd \
dumpfile=xttdump.dmp \
directory=DATA_PUMP_DIR \
statistics=NONE \
transport_tablespaces=TBS1,TBS2,TBS3 \
transport_full_check=y \
logfile=tts_export.log
```

Si *DATA\$1PUMP\$1DIR* es un directorio compartido en Amazon EFS, vaya a [Paso 4: Importar los espacios de tabla en la instancia de base de datos de destino](#oracle-migrating-tts.restore-full).

### Paso 3: (solo Amazon S3) transfiera los archivos de copia de seguridad y exporte los archivos a la instancia de base de datos de destino
<a name="oracle-migrating-tts.transport"></a>

Si utiliza Amazon S3 para organizar las copias de seguridad del espacio de tabla y el archivo de exportación de Data Pump, siga estos pasos.

#### Paso 3.1: cargue las copias de seguridad y el archivo de volcado del host de origen en el bucket de Amazon S3
<a name="oracle-migrating-tts.transport.upload-dmp"></a>

Cargue las copias de seguridad y los archivos de volcado del host de origen en el bucket de Amazon S3. Para obtener más información, consulte [Carga de objetos](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html) en la *Guía del desarrollador de Amazon Simple Storage Service*.

#### Paso 3.2: Descargar las copias de seguridad y el archivo de volcado desde el bucket de Amazon S3 a la instancia de base de datos de destino
<a name="oracle-migrating-tts.transport.download-dmp"></a>

En este paso, se utiliza el procedimiento `rdsadmin.rdsadmin_s3_tasks.download_from_s3` para descargar las copias de seguridad y el archivo de volcado en la instancia de base de datos de RDS para Oracle. Siga los pasos de [Paso 2.3: Descargar las copias de seguridad desde el bucket de Amazon S3 a la instancia de base de datos de destino](#oracle-migrating-tts.download-full).

### Paso 4: Importar los espacios de tabla en la instancia de base de datos de destino
<a name="oracle-migrating-tts.restore-full"></a>

Utilice el procedimiento `rdsadmin.rdsadmin_transport_util.import_xtts_tablespaces` para restaurar los espacios de tabla. Para obtener información sobre la semántica de este procedimiento, consulte [Importación de espacios de tabla transportados a su instancia de base de datos](rdsadmin_transport_util_import_xtts_tablespaces.md).

**importante**  
Tras completar la importación final del espacio de tabla, el siguiente paso es [importar los metadatos de Oracle Data Pump](#oracle-migrating-tts.transport.export). Si se produce un error en la importación, es importante que la instancia de base de datos vuelva a su estado anterior al error. Por lo tanto, le recomendamos que cree una instantánea de base de datos de la instancia de base de datos siguiendo las instrucciones de [Creación de una instantánea de base de datos para una instancia de base de datos single-AZ para Amazon RDS](USER_CreateSnapshot.md). La instantánea contendrá todos los espacios de tabla importados, por lo que si se produce un error en la importación, no tendrá que repetir el proceso de copia de seguridad e importación.   
Si la instancia de base de datos de destino tiene activadas las copias de seguridad automáticas y Amazon RDS no detecta que se haya iniciado una instantánea válida antes de importar los metadatos, RDS intentará crear una instantánea. En función de la actividad de la instancia, esta instantánea puede o no funcionar correctamente. Si no se detecta una instantánea válida o no se puede iniciar una instantánea, la importación de metadatos se cerrará con errores.

**Importar los espacios de tabla en la instancia de base de datos de destino**

1. Inicie un cliente de Oracle SQL e inicie sesión como usuario maestro en su instancia de base de datos de destino de RDS para Oracle.

1. Ejecute el procedimiento `rdsadmin.rdsadmin_transport_util.import_xtts_tablespaces` y especifique los espacios de tabla que se van a importar y el directorio que contiene las copias de seguridad.

   En el siguiente ejemplo se importan los espacios de tabla *TBS1*, *TBS2* y *TBS3* del directorio *DATA\$1PUMP\$1DIR*.

   ```
   BEGIN
     :task_id:=rdsadmin.rdsadmin_transport_util.import_xtts_tablespaces('TBS1,TBS2,TBS3','DATA_PUMP_DIR');
   END;
   /
   PRINT task_id
   ```

1. (Opcional) Supervise el progreso consultando la tabla `rdsadmin.rds_xtts_operation_info`. La columna `xtts_operation_state` muestra el valor `EXECUTING`, `COMPLETED` o `FAILED`.

   ```
   SELECT * FROM rdsadmin.rds_xtts_operation_info;
   ```
**nota**  
Para operaciones de larga duración, también puede consultar `V$SESSION_LONGOPS`, `V$RMAN_STATUS` y `V$RMAN_OUTPUT`.

1. Para ver el registro de la importación finalizada, utilice el ID de la tarea del paso anterior.

   ```
   SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||'&task_id'||'.log'));
   ```

   Asegúrese de que se haya completado correctamente la importación antes de continuar con el siguiente paso.

1. Realice una instantánea manual de la base de datos siguiendo las instrucciones de [Creación de una instantánea de base de datos para una instancia de base de datos single-AZ para Amazon RDS](USER_CreateSnapshot.md).

### Paso 5: Importar los metadatos del espacio de tabla en la instancia de base de datos de destino
<a name="oracle-migrating-tts.transport.import-dmp"></a>

En este paso, se importan los metadatos del espacio de tabla transportables a la instancia de base de datos de RDS para Oracle mediante el procedimiento `rdsadmin.rdsadmin_transport_util.import_xtts_metadata`. Para obtener información sobre la sintaxis y la semántica de este procedimiento, consulte [Importación de metadatos de espacios de tabla transportables a su instancia de base de datos](rdsadmin_transport_util_import_xtts_metadata.md). Durante la operación, el estado de la importación se muestra en la tabla `rdsadmin.rds_xtts_operation_info`.

**importante**  
Antes de importar los metadatos, le recomendamos encarecidamente que confirme la creación correcta de la instantánea de base de datos después de importar los espacios de tabla. Si se produce un error en el paso de importación, restaure la instancia de base de datos, corrija los errores de importación y, a continuación, vuelva a intentar la importación.

**Importar los metadatos de Data Pump a la instancia de base de datos de RDS para Oracle**

1. Inicie el cliente de Oracle SQL e inicie sesión como usuario maestro en su instancia de base de datos de destino.

1. Cree los usuarios que posean esquemas en los espacios de tabla transportados, si estos usuarios aún no existen.

   ```
   CREATE USER tbs_owner IDENTIFIED BY password;
   ```

1. Importe los metadatos, especificando el nombre del archivo de volcado y su ubicación en el directorio.

   ```
   BEGIN
     rdsadmin.rdsadmin_transport_util.import_xtts_metadata('xttdump.dmp','DATA_PUMP_DIR');
   END;
   /
   ```

1. (Opcional) Consulte la tabla del historial de espacios de tabla transportables para ver el estado de la importación de los metadatos.

   ```
   SELECT * FROM rdsadmin.rds_xtts_operation_info;
   ```

   Cuando finalice la operación, los espacios de tabla estarán en modo de solo lectura.

1. (Opcional) Vea el archivo de registro.

   En el ejemplo siguiente se muestra el contenido del directorio BDUMP y, a continuación, se consulta el registro de importación.

   ```
   SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir(p_directory => 'BDUMP'));
   
   SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file(
     p_directory => 'BDUMP',
     p_filename => 'rds-xtts-import_xtts_metadata-2023-05-22.01-52-35.560858000.log'));
   ```

## Fase 5: Validar los espacios de tabla transportados
<a name="oracle-migrating-tts.validate"></a>

En este paso opcional, se validan los espacios de tabla transportados mediante el procedimiento `rdsadmin.rdsadmin_rman_util.validate_tablespace` y, a continuación, los espacios de tabla se establecen en modo de lectura/escritura.

**Para validar los datos transportados**

1. Inicie SQL\$1Plus o SQL Developer e inicie sesión como usuario maestro en su instancia de base de datos de destino.

1. Valide los espacios de tabla mediante el procedimiento `rdsadmin.rdsadmin_rman_util.validate_tablespace`.

   ```
   SET SERVEROUTPUT ON
   BEGIN
       rdsadmin.rdsadmin_rman_util.validate_tablespace(
           p_tablespace_name     => 'TBS1',
           p_validation_type     => 'PHYSICAL+LOGICAL',
           p_rman_to_dbms_output => TRUE);
       rdsadmin.rdsadmin_rman_util.validate_tablespace(
           p_tablespace_name     => 'TBS2',
           p_validation_type     => 'PHYSICAL+LOGICAL',
           p_rman_to_dbms_output => TRUE);
       rdsadmin.rdsadmin_rman_util.validate_tablespace(
           p_tablespace_name     => 'TBS3',
           p_validation_type     => 'PHYSICAL+LOGICAL',
           p_rman_to_dbms_output => TRUE);
   END;
   /
   ```

1. Coloque los espacios de tabla en modo de lectura/escritura.

   ```
   ALTER TABLESPACE TBS1 READ WRITE;
   ALTER TABLESPACE TBS2 READ WRITE;
   ALTER TABLESPACE TBS3 READ WRITE;
   ```

## Fase 6: Limpiar los archivos sobrantes
<a name="oracle-migrating-tts.cleanup"></a>

En este paso opcional, se eliminan los archivos innecesarios. Utilice el procedimiento `rdsadmin.rdsadmin_transport_util.list_xtts_orphan_files` para enumerar los archivos de datos que quedaron huérfanos tras la importación de un espacio de tabla y, a continuación, utilice el procedimiento `rdsadmin.rdsadmin_transport_util.list_xtts_orphan_files` para eliminarlos. Para obtener información sobre la sintaxis y la semántica de estos procedimientos, consulte [Enumeración de los archivos huérfanos después de importar un espacio de tabla](rdsadmin_transport_util_list_xtts_orphan_files.md) y [Eliminación de los archivos de datos huérfanos después de importar un espacio de tabla](rdsadmin_transport_util_cleanup_incomplete_xtts_import.md).

**Para limpiar los archivos sobrantes**

1. Elimine las copias de seguridad antiguas en *DATA\$1PUMP\$1DIR* de la siguiente manera:

   1. Para enumerar los archivos de copia de seguridad, ejecute `rdsadmin.rdsadmin_file_util.listdir`.

      ```
      SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir(p_directory => 'DATA_PUMP_DIR'));
      ```

   1. Para eliminar las copias de seguridad una por una, llame a `UTL_FILE.FREMOVE`.

      ```
      EXEC UTL_FILE.FREMOVE ('DATA_PUMP_DIR', 'backup_filename');
      ```

1. Si ha importado espacios de tabla pero no ha importado metadatos para estos espacios de tabla, puede eliminar los archivos de datos huérfanos de la siguiente manera:

   1. Haga una lista de los archivos de datos huérfanos que debe eliminar. En el siguiente ejemplo se ejecuta el procedimiento `rdsadmin.rdsadmin_transport_util.list_xtts_orphan_files`.

      ```
      SQL> SELECT * FROM TABLE(rdsadmin.rdsadmin_transport_util.list_xtts_orphan_files);
      
      FILENAME       FILESIZE
      -------------- ---------
      datafile_7.dbf 104865792
      datafile_8.dbf 104865792
      ```

   1. Para eliminar los archivos huérfanos, ejecute el procedimiento `rdsadmin.rdsadmin_transport_util.cleanup_incomplete_xtts_import`.

      ```
      BEGIN
        rdsadmin.rdsadmin_transport_util.cleanup_incomplete_xtts_import('DATA_PUMP_DIR');
      END;
      /
      ```

      La operación de limpieza genera un archivo de registro que utiliza el formato de nombre `rds-xtts-delete_xtts_orphaned_files-YYYY-MM-DD.HH24-MI-SS.FF.log` del directorio `BDUMP`.

   1. Lea el archivo de registro generado en el paso anterior. En el siguiente ejemplo se lee el registro `rds-xtts-delete_xtts_orphaned_files-2023-06-01.09-33-11.868894000.log`.

      ```
      SELECT * 
      FROM TABLE(rdsadmin.rds_file_util.read_text_file(
             p_directory => 'BDUMP',
             p_filename  => 'rds-xtts-delete_xtts_orphaned_files-2023-06-01.09-33-11.868894000.log'));
      
      TEXT
      --------------------------------------------------------------------------------
      orphan transported datafile datafile_7.dbf deleted.
      orphan transported datafile datafile_8.dbf deleted.
      ```

1. Si ha importado espacios de tabla y metadatos para estos espacios de tabla, pero se ha topado con errores de compatibilidad u otros problemas de Oracle Data Pump, limpie los archivos de datos parcialmente transportados de la siguiente manera:

   1. Enumere los espacios de tabla que contienen archivos de datos parcialmente transportados mediante consultas `DBA_TABLESPACES`.

      ```
      SQL> SELECT TABLESPACE_NAME FROM DBA_TABLESPACES WHERE PLUGGED_IN='YES';
      
      TABLESPACE_NAME
      --------------------------------------------------------------------------------
      TBS_3
      ```

   1. Elimine los espacios de tabla y los archivos de datos parcialmente transportados.

      ```
      DROP TABLESPACE TBS_3 INCLUDING CONTENTS AND DATAFILES;
      ```

# Importación mediante Oracle Data Pump
<a name="Oracle.Procedural.Importing.DataPump"></a>

Oracle Data Pump es una utilidad que le permite exportar datos de Oracle a un archivo de volcado e importarlos a otra base de datos de Oracle. Es un reemplazo a largo plazo de las utilidades de exportación e importación de Oracle. Oracle Data Pump es la forma preferida de trasladar grandes cantidades de datos desde una base de datos Oracle a una instancia de base de datos de Amazon RDS.

Los ejemplos de esta sección muestran una forma de importar datos a una base de datos Oracle, pero Oracle Data Pump admite otras técnicas. Para obtener más información, consulte la [documentación de Oracle Database](https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-data-pump.html#GUID-501A9908-BCC5-434C-8853-9A6096766B5A).

En los ejemplos de esta sección se utiliza el paquete `DBMS_DATAPUMP`. Puede realizar las mismas tareas con las utilidades de línea de comandos de Oracle Data Pump `impdp` y `expdp`. Puede instalar estas utilidades en un host remoto como parte de una instalación de Oracle Client, incluido Oracle Instant Client. Para obtener más información, consulte [How do I use Oracle Instant Client to run Data Pump Import or Export for my Amazon RDS for Oracle DB instance?](https://aws.amazon.com/premiumsupport/knowledge-center/rds-oracle-instant-client-datapump/) (¿Cómo utilizo Oracle Instant Client para ejecutar la importación o exportación de Data Pump para mi instancia de base de datos de Amazon RDS para Oracle?)

**Topics**
+ [Información general sobre Oracle Data Pump](#Oracle.Procedural.Importing.DataPump.Overview)
+ [Importación de datos con Oracle Data Pump y un bucket de Amazon S3](#Oracle.Procedural.Importing.DataPump.S3)
+ [Importación de datos con Oracle Data Pump y un enlace de base de datos](#Oracle.Procedural.Importing.DataPump.DBLink)

## Información general sobre Oracle Data Pump
<a name="Oracle.Procedural.Importing.DataPump.Overview"></a>

Oracle Data Pump consta de los siguientes componentes:
+ Clientes de línea de comandos `expdp` y `impdp`
+ El paquete PL/SQL `DBMS_DATAPUMP`
+ El paquete PL/SQL `DBMS_METADATA`

Puede utilizar Oracle Data Pump en los siguientes casos:
+ Importación de datos desde una base de datos de Oracle (en las instalaciones o en una instancia de Amazon EC2) a una instancia de base de datos de Amazon RDS para Oracle
+ Importación de datos desde una instancia de base de datos de RDS para Oracle a una base de datos Oracle, ya sea en las instalaciones o en una instancia de Amazon EC2
+ Importación de datos entre instancias de base de datos de RDS para Oracle (por ejemplo, para migrar datos desde EC2-Classic a una VPC).

Para descargar utilidades de Oracle Data Pump, consulte [Oracle Database Software Downloads (Descargas de software de base de datos de Oracle)](http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html) en el sitio web de Oracle Technology Network. Para conocer aspectos sobre compatibilidad al migrar entre versiones de Oracle Database, consulte [la documentación de Oracle Database](https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-data-pump-overview.html#GUID-BAA3B679-A758-4D55-9820-432D9EB83C68).

### Flujo de trabajo de Oracle Data Pump
<a name="Oracle.Procedural.Importing.DataPump.Overview.how-it-works"></a>

Por lo general, se utiliza Oracle Data Pump en las siguientes etapas:

1. Exporte sus datos a un archivo de volcado en la base de datos de origen.

1. Cargue el archivo de volcado en la instancia de base de datos de RDS para Oracle Puede transferirlo mediante un bucket de Amazon S3 o mediante un enlace de base de datos entre dos bases de datos.

1. Importe los datos desde el archivo de volcado a la instancia de base de RDS para Oracle.

### Prácticas recomendadas de Oracle Data Pump
<a name="Oracle.Procedural.Importing.DataPump.Overview.best-practices"></a>

Cuando utiliza Oracle Data Pump para importar datos en una instancia de RDS para Oracle, se recomiendan las siguientes prácticas recomendadas:
+ Realice importaciones en el modo `schema` o `table` para importar esquemas y objetos específicos.
+ Limite los esquemas que importe a los que necesita su aplicación.
+ No los importe en el modo `full` ni en esquemas de importación para componentes mantenidos por el sistema.

  Puesto que RDS para Oracle no permite el acceso a usuarios administrativos `SYS` o `SYSDBA`, estas acciones pueden dañar el diccionario de datos de Oracle y afectar a la estabilidad de su base de datos.
+ Al cargar grandes cantidades de datos, haga lo siguiente:

  1. Transfiera el archivo de volcado a la instancia de base de datos de RDS para Oracle.

  1. Cree una instantánea de base de datos de su instancia.

  1. Pruebe la importación para comprobar que se realiza correctamente.

  Si se invalidan los componentes de la base de datos, puede eliminar la instancia de base de datos y volver a crearla a partir de la instantánea de base de datos. La instancia de base de datos restaurada incluye los archivos de volcado preparados en la instancia de base de datos cuando realice una instantánea de base de datos.
+ No importe archivos de volcado creados con parámetros `TRANSPORT_TABLESPACES`, `TRANSPORTABLE` o `TRANSPORT_FULL_CHECK` de exportación de Oracle Data Pump. Las instancias de bases de datos de RDS para Oracle no admiten la importación de estos archivos de volcado.
+ No importe archivos de volcado que contengan objetos del programador de Oracle en `SYS`, `SYSTEM`, `RDSADMIN`, `RDSSEC` y `RDS_DATAGUARD` y que pertenezcan a las categorías siguientes:
  + Tareas
  + Programas
  + Schedules
  + Cadenas
  + Reglas
  + Contextos de evaluación
  + Conjunto de reglas

  Las instancias de bases de datos de RDS para Oracle no admiten la importación de estos archivos de volcado. 
+ Para excluir objetos de Oracle Scheduler no admitidos, utilice directivas adicionales durante la exportación de Data Pump. Si utiliza `DBMS_DATAPUMP`, añada un `METADATA_FILTER` adicional antes de `DBMS_METADATA.START_JOB`:

  ```
  DBMS_DATAPUMP.METADATA_FILTER(
    v_hdnl,
    'EXCLUDE_NAME_EXPR',
    q'[IN (SELECT NAME FROM SYS.OBJ$ 
           WHERE TYPE# IN (66,67,74,79,59,62,46) 
           AND OWNER# IN
             (SELECT USER# FROM SYS.USER$ 
              WHERE NAME IN ('RDSADMIN','SYS','SYSTEM','RDS_DATAGUARD','RDSSEC')
              )
          )
    ]',
    'PROCOBJ'
  );
  ```

  Si utiliza `expdp`, cree un archivo de parámetros que contenga la directiva `exclude` que se muestra en el siguiente ejemplo. Luego `PARFILE=parameter_file` utilícelo con su `expdp` comando.

  ```
  exclude=procobj:"IN 
    (SELECT NAME FROM sys.OBJ$
     WHERE TYPE# IN (66,67,74,79,59,62,46) 
     AND OWNER# IN 
       (SELECT USER# FROM SYS.USER$ 
        WHERE NAME IN ('RDSADMIN','SYS','SYSTEM','RDS_DATAGUARD','RDSSEC')
       )
    )"
  ```

## Importación de datos con Oracle Data Pump y un bucket de Amazon S3
<a name="Oracle.Procedural.Importing.DataPump.S3"></a>

El siguiente proceso de importación utiliza Oracle Data Pump y un bucket de Amazon S3. Los pasos son los siguientes:

1. Exporte datos en la base de datos de origen mediante el paquete [DBMS\$1DATAPUMP](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_DATAPUMP.html) de Oracle.

1. Coloque el archivo de volcado en un bucket de Amazon S3.

1. A continuación, descargue el archivo de volcado del bucket de Amazon S3 al directorio `DATA_PUMP_DIR` en la instancia de base de datos de RDS para Oracle de destino. 

1. Importe los datos del archivo de volcado copiado a la instancia de base de datos de RDS para Oracle utilizando el paquete `DBMS_DATAPUMP`.

**Topics**
+ [Requisitos para la importación de datos con Oracle Data Pump y un bucket de Amazon S3](#Oracle.Procedural.Importing.DataPumpS3.requirements)
+ [Paso 1: Conceda privilegios al usuario de la base de datos en la instancia de base de datos de destino de RDS para Oracle](#Oracle.Procedural.Importing.DataPumpS3.Step1)
+ [Paso 2: Exporte datos a un archivo de volcado mediante DBMS\$1DATAPUMP](#Oracle.Procedural.Importing.DataPumpS3.Step2)
+ [Paso 3: carga del archivo de volcado a su bucket de Amazon S3](#Oracle.Procedural.Importing.DataPumpS3.Step3)
+ [Paso 4: Descargue el archivo de volcado desde su bucket de Amazon S3 a la instancia de base de datos de destino.](#Oracle.Procedural.Importing.DataPumpS3.Step4)
+ [Paso 5: Importe el archivo de volcado a la instancia de base de datos de destino mediante DBMS\$1DATAPUMP](#Oracle.Procedural.Importing.DataPumpS3.Step5)
+ [Paso 6: Limpieza](#Oracle.Procedural.Importing.DataPumpS3.Step6)

### Requisitos para la importación de datos con Oracle Data Pump y un bucket de Amazon S3
<a name="Oracle.Procedural.Importing.DataPumpS3.requirements"></a>

El proceso tiene los siguientes requisitos:
+ Asegúrese de que hay un bucket de Amazon S3 disponible para las transferencias de archivos, y que el bucket de Amazon S3 está en la misma Región de AWS que la instancia de base de datos. Para ver las instrucciones, consulte [Crear un bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CreatingABucket.html) en la *Guía de introducción de Amazon Simple Storage Service*.
+ El objeto que cargue en el bucket de Amazon S3 debe ser de 5 TB o menos. Para obtener más información acerca de cómo trabajar con objetos en Amazon S3, consulte [Guía del usuario de Amazon Simple Storage Service](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingObjects.html).
**nota**  
Si el archivo de volcado supera los 5 TB, puede ejecutar la exportación de Oracle Data Pump con la opción paralela. Esta operación distribuye los datos en varios archivos de volcado para que no supere el límite de 5 TB para archivos individuales.
+ Debe preparar el bucket de Amazon S3 para la integración de Amazon RDS siguiendo las instrucciones en [Configuración de permisos IAM para la integración de RDS para Oracle con Amazon S3](oracle-s3-integration.preparing.md).
+ Debe asegurarse de que tiene suficiente espacio de almacenamiento para almacenar el archivo de volcado en la instancia de origen y en la instancia de base de datos de destino.

**nota**  
Este proceso importa un archivo de volcado en el directorio `DATA_PUMP_DIR`, un directorio preconfigurado en todas las instancias de bases de datos de Oracle. Este directorio se encuentra en el mismo volumen de almacenamiento que los archivos de datos. Cuando importe el archivo de volcado, los archivos de datos de Oracle existentes utilizarán más espacio. Por lo tanto, debe asegurarse de que su instancia de base de datos pueda dar cabida a ese uso de espacio adicional. El archivo de volcado importado no se elimina ni se purga automáticamente del directorio `DATA_PUMP_DIR`. Para quitar el archivo de volcado importado, utilice [UTL\$1FILE.FREMOVE](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/UTL_FILE.html#GUID-09B09C2A-2C21-4F70-BF04-D0EEA7B59CAF), que se encuentra en el sitio web de Oracle. 

### Paso 1: Conceda privilegios al usuario de la base de datos en la instancia de base de datos de destino de RDS para Oracle
<a name="Oracle.Procedural.Importing.DataPumpS3.Step1"></a>

En este paso, debe crear los esquemas en los que tiene pensado importar datos y conceder a los usuarios los privilegios necesarios.

**Para crear usuarios y conceder los privilegios necesarios en la instancia de destino de RDS para Oracle**

1. Utilice SQL\$1Plus u Oracle SQL Developer para iniciar sesión como usuario maestro en la instancia de base de datos de RDS para Oracle en la que se importarán los datos. Para obtener más información acerca de la conexión a una instancia de base de datos, consulte [Conexión a una instancia de base de datos de Oracle](USER_ConnectToOracleInstance.md).

1. Cree el espacio de tabla necesario antes de importar los datos. Para obtener más información, consulte [Creación y redimensionamiento de los espacios de tablas en RDS para Oracle](Appendix.Oracle.CommonDBATasks.TablespacesAndDatafiles.md#Appendix.Oracle.CommonDBATasks.CreatingTablespacesAndDatafiles).

1. Cree la cuenta de usuario y conceda los permisos y roles necesarios si la cuenta de usuario a la que se importan los datos no existe. Si piensa importar datos en varios esquemas de usuario, cree cada cuenta de usuario y otórguele los permisos y roles necesarios.

   Por ejemplo, las siguientes instrucciones SQL crean un nuevo usuario y conceden los permisos y roles necesarios para importar los datos en el esquema propiedad de este usuario. Reemplace `schema_1` por el nombre de su esquema en este paso y en los siguientes.

   ```
   CREATE USER schema_1 IDENTIFIED BY my_password;
   GRANT CREATE SESSION, RESOURCE TO schema_1;
   ALTER USER schema_1 QUOTA 100M ON users;
   ```
**nota**  
Especifique una contraseña distinta de la que se muestra aquí como práctica recomendada de seguridad.

   Las instrucciones anteriores conceden al nuevo usuario el privilegio `CREATE SESSION` y el rol `RESOURCE`. Es probable que necesite más privilegios y roles en función de los objetos de base de datos que importe.

### Paso 2: Exporte datos a un archivo de volcado mediante DBMS\$1DATAPUMP
<a name="Oracle.Procedural.Importing.DataPumpS3.Step2"></a>

Para crear un archivo de volcado, utilice el paquete `DBMS_DATAPUMP`.

**Para exportar datos de Oracle a un archivo de volcado**

1. Utilice SQL Plus u Oracle SQL Developer para conectarse a la instancia de base de datos de RDS para Oracle de origen con un usuario administrativo. Si la base de datos de origen es una instancia de base de datos de RDS para Oracle, conéctese con el usuario maestro de Amazon RDS.

1. Exporte los datos llamando a los procedimientos `DBMS_DATAPUMP`.

   El siguiente script exporta el esquema `SCHEMA_1` a un archivo de volcado denominado `sample.dmp` en el directorio `DATA_PUMP_DIR`. Reemplace `SCHEMA_1` por el nombre del esquema que desea exportar.

   ```
   DECLARE
     v_hdnl NUMBER;
   BEGIN
     v_hdnl := DBMS_DATAPUMP.OPEN(
       operation => 'EXPORT', 
       job_mode  => 'SCHEMA', 
       job_name  => null
     );
     DBMS_DATAPUMP.ADD_FILE( 
       handle    => v_hdnl         , 
       filename  => 'sample.dmp'   , 
       directory => 'DATA_PUMP_DIR', 
       filetype  => dbms_datapump.ku$_file_type_dump_file
     );
     DBMS_DATAPUMP.ADD_FILE( 
       handle    => v_hdnl, 
       filename  => 'sample_exp.log', 
       directory => 'DATA_PUMP_DIR' , 
       filetype  => dbms_datapump.ku$_file_type_log_file
     );
     DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'SCHEMA_EXPR','IN (''SCHEMA_1'')');
     DBMS_DATAPUMP.METADATA_FILTER(
       v_hdnl,
       'EXCLUDE_NAME_EXPR',
       q'[IN (SELECT NAME FROM SYS.OBJ$ 
              WHERE TYPE# IN (66,67,74,79,59,62,46) 
              AND OWNER# IN 
                (SELECT USER# FROM SYS.USER$ 
                 WHERE NAME IN ('RDSADMIN','SYS','SYSTEM','RDS_DATAGUARD','RDSSEC')
                )
             )
       ]',
       'PROCOBJ'
     );
     DBMS_DATAPUMP.START_JOB(v_hdnl);
   END;
   /
   ```
**nota**  
Data Pump inicia los trabajos de forma asíncrona Para obtener información sobre la supervisión de un trabajo de Data Pump, consulte [Monitoring job status](https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-data-pump-overview.html#GUID-E365D74E-12CD-495C-BA23-5A55F679C7E7) (Supervisión del estado del trabajo) en la documentación de Oracle. 

1. (Opcional) Puede ver el contenido del registro de exportación llamando al procedimiento `rdsadmin.rds_file_util.read_text_file`. Para obtener más información, consulte [Lectura de archivos de un directorio de instancia de base de datos](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.ReadingFiles).

### Paso 3: carga del archivo de volcado a su bucket de Amazon S3
<a name="Oracle.Procedural.Importing.DataPumpS3.Step3"></a>

Utilice el procedimiento de Amazon RDS `rdsadmin.rdsadmin_s3_tasks.upload_to_s3` para copiar el archivo de volcado en el bucket de Amazon S3. En el siguiente ejemplo se cargan todos los archivos del directorio `DATA_PUMP_DIR` en un bucket de Amazon S3 denominado `amzn-s3-demo-bucket`.

```
SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3(
  p_bucket_name    =>  'amzn-s3-demo-bucket',       
  p_directory_name =>  'DATA_PUMP_DIR') 
AS TASK_ID FROM DUAL;
```

La instrucción `SELECT` devuelve el identificador de la tarea en un tipo de datos `VARCHAR2`. Para obtener más información, consulte [Carga de archivos desde la instancia de base de datos de RDS para Oracle en un bucket de Amazon S3](oracle-s3-integration.using.md#oracle-s3-integration.using.upload).

### Paso 4: Descargue el archivo de volcado desde su bucket de Amazon S3 a la instancia de base de datos de destino.
<a name="Oracle.Procedural.Importing.DataPumpS3.Step4"></a>

Realice este paso mediante el procedimiento de Amazon RDS `rdsadmin.rdsadmin_s3_tasks.download_from_s3`. Al descargar un archivo en un directorio, el procedimiento `download_from_s3` omite la descarga si ya existe un archivo con el mismo nombre en el directorio. Para quitar el archivo del directorio de descarga, utilice [UTL\$1FILE.FREMOVE](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/UTL_FILE.html#GUID-09B09C2A-2C21-4F70-BF04-D0EEA7B59CAF), que se encuentra en el sitio web de Oracle.

**Para descargar el archivo de volcado**

1. Inicie SQL\$1Plus u Oracle SQL Developer e inicie sesión como usuario maestro en su instancia de base de datos de destino de Amazon RDS

1. Descargue el archivo de volcado mediante el procedimiento de Amazon RDS `rdsadmin.rdsadmin_s3_tasks.download_from_s3`.

   En el siguiente ejemplo, se descargan todos los archivos de un bucket de Amazon S3 denominado `amzn-s3-demo-bucket` en el directorio `DATA_PUMP_DIR`.

   ```
   SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3(
     p_bucket_name    =>  'amzn-s3-demo-bucket',
     p_directory_name =>  'DATA_PUMP_DIR')
   AS TASK_ID FROM DUAL;
   ```

   La instrucción `SELECT` devuelve el identificador de la tarea en un tipo de datos `VARCHAR2`. Para obtener más información, consulte [Descarga de archivos desde un bucket de Amazon S3 en una instancia de base de datos de Oracle](oracle-s3-integration.using.md#oracle-s3-integration.using.download).

### Paso 5: Importe el archivo de volcado a la instancia de base de datos de destino mediante DBMS\$1DATAPUMP
<a name="Oracle.Procedural.Importing.DataPumpS3.Step5"></a>

Utilice `DBMS_DATAPUMP` para importar el esquema a la instancia de base de datos de RDS para Oracle. Podrían ser necesarias opciones adicionales, como `METADATA_REMAP`.

**Para importar datos a la instancia de base de datos de destino**

1. Inicie SQL\$1Plus u Oracle SQL Developer e inicie sesión como usuario maestro en su instancia de base de datos de destino de RDS para Oracle.

1. Importe los datos llamando a los procedimientos `DBMS_DATAPUMP`.

   En el siguiente ejemplo se importan los datos de *SCHEMA\$11* de `sample_copied.dmp` en la instancia de base de datos de destino.

   ```
   DECLARE
     v_hdnl NUMBER;
   BEGIN
     v_hdnl := DBMS_DATAPUMP.OPEN( 
       operation => 'IMPORT', 
       job_mode  => 'SCHEMA', 
       job_name  => null);
     DBMS_DATAPUMP.ADD_FILE( 
       handle    => v_hdnl, 
       filename  => 'sample_copied.dmp', 
       directory => 'DATA_PUMP_DIR', 
       filetype  => dbms_datapump.ku$_file_type_dump_file);
     DBMS_DATAPUMP.ADD_FILE( 
       handle    => v_hdnl, 
       filename  => 'sample_imp.log', 
       directory => 'DATA_PUMP_DIR', 
       filetype  => dbms_datapump.ku$_file_type_log_file);
     DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'SCHEMA_EXPR','IN (''SCHEMA_1'')');
     DBMS_DATAPUMP.START_JOB(v_hdnl);
   END;
   /
   ```
**nota**  
Los trabajos de Data Pump se inician de modo asincrónico. Para obtener información sobre el monitoreo de un trabajo de Data Pump, consulte [Monitorización del estado del trabajo](https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-data-pump-overview.html#GUID-E365D74E-12CD-495C-BA23-5A55F679C7E7) en la documentación de Oracle. Puede ver el contenido del registro de importación mediante el procedimiento `rdsadmin.rds_file_util.read_text_file`. Para obtener más información, consulte [Lectura de archivos de un directorio de instancia de base de datos](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.ReadingFiles).

1. Para comprobar la importación de datos, enumere las tablas de esquemas de la instancia de base de datos de destino.

   Por ejemplo, la siguiente consulta devuelve el número de tablas de `SCHEMA_1`. 

   ```
   SELECT COUNT(*) FROM DBA_TABLES WHERE OWNER='SCHEMA_1';
   ```

### Paso 6: Limpieza
<a name="Oracle.Procedural.Importing.DataPumpS3.Step6"></a>

Después de importar los datos, puede eliminar los archivos que no desee conservar.

**Para eliminar archivos innecesarios**

1. Inicie SQL\$1Plus u Oracle SQL Developer e inicie sesión como usuario maestro en su instancia de base de datos de destino de RDS para Oracle.

1. Enumere los archivos en `DATA_PUMP_DIR` mediante el siguiente comando.

   ```
   SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir('DATA_PUMP_DIR')) ORDER BY MTIME;
   ```

1. Elimine los archivos de `DATA_PUMP_DIR` que ya no sean necesarios con el siguiente comando.

   ```
   EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','filename');
   ```

   Por ejemplo, el siguiente comando elimina el archivo denominado `sample_copied.dmp`.

   ```
   EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','sample_copied.dmp'); 
   ```

## Importación de datos con Oracle Data Pump y un enlace de base de datos
<a name="Oracle.Procedural.Importing.DataPump.DBLink"></a>

El siguiente proceso de importación utiliza Oracle Data Pump y el paquete [DBMS\$1FILE\$1TRANSFER](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_FILE_TRANSFER.html) de Oracle. Los pasos son los siguientes:

1. Conéctese a una base de datos Oracle de origen, que puede ser una base de datos en las instalaciones, una instancia de Amazon EC2 o una instancia de base de datos de RDS para Oracle. 

1. Exporte los datos mediante el paquete [DBMS\$1DATAPUMP](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_DATAPUMP.html).

1. Utilice `DBMS_FILE_TRANSFER.PUT_FILE` para copiar el archivo de volcado desde la base de datos Oracle al directorio `DATA_PUMP_DIR` de la instancia de base de datos de RDS para Oracle de destino que está conectada mediante un enlace de base de datos. 

1. Importe los datos del archivo de volcado copiado a la instancia de base de datos de RDS para Oracle utilizando el paquete ` DBMS_DATAPUMP`.

El proceso de importación mediante Oracle Data Pump y un paquete de `DBMS_FILE_TRANSFER` tiene los siguientes pasos.

**Topics**
+ [Requisitos de importación de datos con Oracle Data Pump y un enlace de base de datos](#Oracle.Procedural.Importing.DataPumpDBLink.requirements)
+ [Paso 1: Conceda privilegios al usuario en la instancia de base de datos de destino de RDS para Oracle](#Oracle.Procedural.Importing.DataPumpDBLink.Step1)
+ [Paso 2: concesión de privilegios al usuario en la base de datos de origen](#Oracle.Procedural.Importing.DataPumpDBLink.Step2)
+ [Paso 3: Cree un archivo de volcado utilizando DBMS\$1DATAPUMP](#Oracle.Procedural.Importing.DataPumpDBLink.Step3)
+ [Paso 4: Crear un enlace de base de datos a la instancia de base de datos de destino](#Oracle.Procedural.Importing.DataPumpDBLink.Step4)
+ [Paso 5: Copie el archivo de volcado exportado a la instancia de base de datos de destino utilizando DBMS\$1FILE\$1TRANSFER](#Oracle.Procedural.Importing.DataPumpDBLink.Step5)
+ [Paso 6: Importe el archivo de datos a la instancia de base de datos de destino utilizando DBMS\$1DATAPUMP](#Oracle.Procedural.Importing.DataPumpDBLink.Step6)
+ [Paso 7: Limpieza](#Oracle.Procedural.Importing.DataPumpDBLink.Step7)

### Requisitos de importación de datos con Oracle Data Pump y un enlace de base de datos
<a name="Oracle.Procedural.Importing.DataPumpDBLink.requirements"></a>

El proceso tiene los siguientes requisitos:
+ Debe tener privilegios de ejecución en los paquetes `DBMS_FILE_TRANSFER` y `DBMS_DATAPUMP`.
+ Debe tener privilegios de escritura en el directorio `DATA_PUMP_DIR` de la instancia de base de datos de origen.
+ Debe asegurarse de que tiene suficiente espacio de almacenamiento para almacenar el archivo de volcado en la instancia de origen y en la instancia de base de datos de destino.

**nota**  
Este proceso importa un archivo de volcado en el directorio `DATA_PUMP_DIR`, un directorio preconfigurado en todas las instancias de bases de datos de Oracle. Este directorio se encuentra en el mismo volumen de almacenamiento que los archivos de datos. Cuando importe el archivo de volcado, los archivos de datos de Oracle existentes utilizarán más espacio. Por lo tanto, debe asegurarse de que su instancia de base de datos pueda dar cabida a ese uso de espacio adicional. El archivo de volcado importado no se elimina ni se purga automáticamente del directorio `DATA_PUMP_DIR`. Para quitar el archivo de volcado importado, utilice [UTL\$1FILE.FREMOVE](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/UTL_FILE.html#GUID-09B09C2A-2C21-4F70-BF04-D0EEA7B59CAF), que se encuentra en el sitio web de Oracle. 

### Paso 1: Conceda privilegios al usuario en la instancia de base de datos de destino de RDS para Oracle
<a name="Oracle.Procedural.Importing.DataPumpDBLink.Step1"></a>

Para conceder privilegios al usuario en la instancia de base de datos de destino de RDS para Oracle, realice los siguientes pasos:

1. Utilice SQL Plus u Oracle SQL Developer para conectarse a la instancia de base de datos de RDS para Oracle a la que desea importar los datos. Conéctese con el usuario maestro de Amazon RDS. Para obtener más información acerca de la conexión a la instancia de base de datos, consulte [Conexión a una instancia de base de datos de Oracle](USER_ConnectToOracleInstance.md).

1. Cree el espacio de tabla necesario antes de importar los datos. Para obtener más información, consulte [Creación y redimensionamiento de los espacios de tablas en RDS para Oracle](Appendix.Oracle.CommonDBATasks.TablespacesAndDatafiles.md#Appendix.Oracle.CommonDBATasks.CreatingTablespacesAndDatafiles).

1. Si la cuenta de usuario a la que se van a importar los datos no existe, cree la cuenta y otórguele los permisos y roles necesarios. Si piensa importar datos en varios esquemas de usuario, cree cada cuenta de usuario y otórguele los permisos y roles necesarios.

   Por ejemplo, los siguientes comandos crean un nuevo usuario denominado *schema\$11* y otorgan los permisos y roles necesarios para importar los datos al esquema de este usuario.

   ```
   CREATE USER schema_1 IDENTIFIED BY my-password;
   GRANT CREATE SESSION, RESOURCE TO schema_1;
   ALTER USER schema_1 QUOTA 100M ON users;
   ```
**nota**  
Especifique una contraseña distinta de la que se muestra aquí como práctica recomendada de seguridad.

   En el ejemplo anterior, se otorga el privilegio `CREATE SESSION` y el rol `RESOURCE` al nuevo usuario. Es probable que necesite más privilegios y roles en función de los objetos de base de datos que importe. 
**nota**  
Reemplace `schema_1` por el nombre de su esquema en este paso y en los siguientes.

### Paso 2: concesión de privilegios al usuario en la base de datos de origen
<a name="Oracle.Procedural.Importing.DataPumpDBLink.Step2"></a>

Utilice SQL\$1Plus u Oracle SQL Developer para conectarse a la instancia de base de datos de RDS para Oracle que contiene los datos que va a importar. Si es necesario, cree una cuenta de usuario con los permisos necesarios. 

**nota**  
Si la base de datos de origen es una instancia de Amazon RDS, puede omitir este paso. Para realizar la exportación utilizará la cuenta de usuario maestra de Amazon RDS.

Los siguientes comandos crean un usuario y le conceden los permisos necesarios.

```
CREATE USER export_user IDENTIFIED BY my-password;
GRANT CREATE SESSION, CREATE TABLE, CREATE DATABASE LINK TO export_user;
ALTER USER export_user QUOTA 100M ON users;
GRANT READ, WRITE ON DIRECTORY data_pump_dir TO export_user;
GRANT SELECT_CATALOG_ROLE TO export_user;
GRANT EXECUTE ON DBMS_DATAPUMP TO export_user;
GRANT EXECUTE ON DBMS_FILE_TRANSFER TO export_user;
```

**nota**  
Especifique una contraseña distinta de la que se muestra aquí como práctica recomendada de seguridad.

### Paso 3: Cree un archivo de volcado utilizando DBMS\$1DATAPUMP
<a name="Oracle.Procedural.Importing.DataPumpDBLink.Step3"></a>

Para crear el archivo de volcado, haga lo siguiente:

1. Utilice SQL\$1Plus u Oracle SQL Developer para conectarse a la instancia de Oracle de origen con un usuario administrativo o con el usuario creado en el paso 2. Si la base de datos de origen es una instancia de base de datos de Amazon RDS for Oracle, conéctese con el usuario maestro de Amazon RDS.

1. Cree un archivo de volcado mediante la utilidad Oracle Data Pump.

   El siguiente script crea un archivo de volcado denominado *sample.dmp* en el directorio `DATA_PUMP_DIR`. 

   ```
   DECLARE
     v_hdnl NUMBER;
   BEGIN
     v_hdnl := DBMS_DATAPUMP.OPEN( 
       operation => 'EXPORT' , 
       job_mode  => 'SCHEMA' , 
       job_name  => null
     );
     DBMS_DATAPUMP.ADD_FILE( 
       handle    => v_hdnl, 
       filename  => 'sample.dmp'    , 
       directory => 'DATA_PUMP_DIR' , 
       filetype  => dbms_datapump.ku$_file_type_dump_file
     );
     DBMS_DATAPUMP.ADD_FILE( 
       handle    => v_hdnl           , 
       filename  => 'sample_exp.log' , 
       directory => 'DATA_PUMP_DIR'  , 
       filetype  => dbms_datapump.ku$_file_type_log_file
     );
     DBMS_DATAPUMP.METADATA_FILTER(
       v_hdnl              ,
       'SCHEMA_EXPR'       ,
       'IN (''SCHEMA_1'')'
     );
     DBMS_DATAPUMP.METADATA_FILTER(
       v_hdnl,
       'EXCLUDE_NAME_EXPR',
       q'[IN (SELECT NAME FROM sys.OBJ$ 
              WHERE TYPE# IN (66,67,74,79,59,62,46) 
              AND OWNER# IN 
                (SELECT USER# FROM SYS.USER$ 
                 WHERE NAME IN ('RDSADMIN','SYS','SYSTEM','RDS_DATAGUARD','RDSSEC')
                )
             )
       ]',
       'PROCOBJ'
     );
     DBMS_DATAPUMP.START_JOB(v_hdnl);
   END;
   /
   ```
**nota**  
Los trabajos de Data Pump se inician de modo asincrónico. Para obtener información sobre la supervisión de un trabajo de Data Pump, consulte [Monitoring job status](https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-data-pump-overview.html#GUID-E365D74E-12CD-495C-BA23-5A55F679C7E7) (Supervisión del estado del trabajo) en la documentación de Oracle. Puede ver el contenido del registro de exportación mediante el procedimiento `rdsadmin.rds_file_util.read_text_file`. Para obtener más información, consulte [Lectura de archivos de un directorio de instancia de base de datos](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.ReadingFiles).

### Paso 4: Crear un enlace de base de datos a la instancia de base de datos de destino
<a name="Oracle.Procedural.Importing.DataPumpDBLink.Step4"></a>

Cree un enlace de base de datos entre la instancia de base de datos de origen y la instancia de base de datos de destino. La instancia local de Oracle debe tener conectividad de red con la instancia de base de datos para poder crear un enlace de base de datos y transferir el archivo de volcado de exportación. 

Para realizar este paso, conéctese con la misma cuenta de usuario del paso anterior.

Si está creando un enlace de base de datos entre dos instancias de bases de datos dentro de la misma VPC o en VPC interconectadas, debe existir una ruta válida entre las dos instancias de bases de datos. El grupo de seguridad de cada instancia de base de datos debe permitir la entrada y la salida desde la otra instancia de base de datos. Las reglas de entrada y salida del grupo de seguridad pueden referirse a grupos de seguridad de la misma VPC o de una VPC interconectada. Para obtener más información, consulte [Ajuste de los enlaces de base de datos para usarlos con las instancias de bases de datos de una VPC](Appendix.Oracle.CommonDBATasks.DBLinks.md). 

El siguiente comando crea un enlace de base de datos denominado `to_rds` que se conecta con un usuario maestro de Amazon RDS de la instancia de base de datos de destino. 

```
CREATE DATABASE LINK to_rds 
  CONNECT TO <master_user_account> IDENTIFIED BY <password>
  USING '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<dns or ip address of remote db>)
         (PORT=<listener port>))(CONNECT_DATA=(SID=<remote SID>)))';
```

### Paso 5: Copie el archivo de volcado exportado a la instancia de base de datos de destino utilizando DBMS\$1FILE\$1TRANSFER
<a name="Oracle.Procedural.Importing.DataPumpDBLink.Step5"></a>

Utilice `DBMS_FILE_TRANSFER` para copiar el archivo de volcado desde la instancia de base de datos de origen en la instancia de base de datos de destino. El siguiente script copia un archivo de volcado denominado sample.dmp desde la instancia de origen en un enlace de la base de datos de destino denominado *to\$1rds* (creado en el paso anterior). 

```
BEGIN
  DBMS_FILE_TRANSFER.PUT_FILE(
    source_directory_object       => 'DATA_PUMP_DIR',
    source_file_name              => 'sample.dmp',
    destination_directory_object  => 'DATA_PUMP_DIR',
    destination_file_name         => 'sample_copied.dmp', 
    destination_database          => 'to_rds' );
END;
/
```

### Paso 6: Importe el archivo de datos a la instancia de base de datos de destino utilizando DBMS\$1DATAPUMP
<a name="Oracle.Procedural.Importing.DataPumpDBLink.Step6"></a>

Utilice Oracle Data Pump para importar el esquema en la instancia de base de datos. Pueden ser necesarias opciones adicionales, como METADATA\$1REMAP. 

 Para llevar a cabo la importación, conéctese a la instancia de base de datos con la cuenta de usuario maestro de Amazon RDS. 

```
DECLARE
  v_hdnl NUMBER;
BEGIN
  v_hdnl := DBMS_DATAPUMP.OPEN( 
    operation => 'IMPORT', 
    job_mode  => 'SCHEMA', 
    job_name  => null);
  DBMS_DATAPUMP.ADD_FILE( 
    handle    => v_hdnl, 
    filename  => 'sample_copied.dmp',
    directory => 'DATA_PUMP_DIR', 
    filetype  => dbms_datapump.ku$_file_type_dump_file );
  DBMS_DATAPUMP.ADD_FILE( 
    handle    => v_hdnl, 
    filename  => 'sample_imp.log', 
    directory => 'DATA_PUMP_DIR', 
    filetype  => dbms_datapump.ku$_file_type_log_file);
  DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'SCHEMA_EXPR','IN (''SCHEMA_1'')');
  DBMS_DATAPUMP.START_JOB(v_hdnl);
END;
/
```

**nota**  
Los trabajos de Data Pump se inician de modo asincrónico. Para obtener información sobre el monitoreo de un trabajo de Data Pump, consulte [Monitorización del estado del trabajo](https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-data-pump-overview.html#GUID-E365D74E-12CD-495C-BA23-5A55F679C7E7) en la documentación de Oracle. Puede ver el contenido del registro de importación mediante el procedimiento `rdsadmin.rds_file_util.read_text_file`. Para obtener más información, consulte [Lectura de archivos de un directorio de instancia de base de datos](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.ReadingFiles).

Puede verificar la importación de datos viendo las tablas de usuario en la instancia de base de datos. Por ejemplo, la siguiente consulta devuelve el número de tablas de `schema_1`. 

```
SELECT COUNT(*) FROM DBA_TABLES WHERE OWNER='SCHEMA_1'; 
```

### Paso 7: Limpieza
<a name="Oracle.Procedural.Importing.DataPumpDBLink.Step7"></a>

Después de importar los datos, puede eliminar los archivos que no desee conservar. Puede enumerar los archivos en `DATA_PUMP_DIR` mediante el siguiente comando.

```
SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir('DATA_PUMP_DIR')) ORDER BY MTIME;
```

Para eliminar archivos de `DATA_PUMP_DIR` que ya no sean necesarios, utilice el siguiente comando. 

```
EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','<file name>');
```

Por ejemplo, el siguiente comando elimina el archivo denominado `"sample_copied.dmp"`. 

```
EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','sample_copied.dmp'); 
```

# Importación mediante exportación/importación de Oracle
<a name="Oracle.Procedural.Importing.ExportImport"></a>

Puede considerar las utilidades de exportación/importación de Oracle para migraciones en las siguientes condiciones:
+ El tamaño de los datos es pequeño.
+ Los tipos de datos, como binario flotante y doble, no son necesarios.

El proceso de importación crea los objetos de esquema necesarios. Por lo tanto, no es necesario ejecutar un script para crear los objetos de antemano. 

La forma más sencilla de instalar las utilidades de exportación e importación de Oracle es instalar Oracle Instant Client. Para descargar el software, vaya a [https://www.oracle.com/database/technologies/instant-client.html](https://www.oracle.com/database/technologies/instant-client.html). Para obtener documentación, consulte [Instant Client for SQL\$1Loader, Export and Import](https://docs.oracle.com/en/database/oracle/oracle-database/21/sutil/instant-client-sql-loader-export-import.html#GUID-FF1B6F75-09F5-4911-9317-9776FAD15965) (Instant Client para SQL\$1Loader, exportación e importación) en el manual de *Oracle Database Utilities*.

**Para exportar tablas y, a continuación, importarlas**

1. Exporte las tablas de la base de datos de origen con el comando `exp`.

   El siguiente comando exporta las tablas denominadas `tab1`, `tab2` y `tab3`. El archivo de volcado es `exp_file.dmp`.

   ```
   exp cust_dba@ORCL FILE=exp_file.dmp TABLES=(tab1,tab2,tab3) LOG=exp_file.log
   ```

   La exportación crea un archivo de volcado binario que contiene el esquema y los datos de las tablas especificadas. 

1. Importe el esquema y los datos a una base de datos de destino utilizando el comando `imp`.

   El siguiente comando importa las tablas `tab1`, `tab2` y`tab3` desde el archivo de volcado `exp_file.dmp`.

   ```
   imp cust_dba@targetdb FROMUSER=cust_schema TOUSER=cust_schema \  
   TABLES=(tab1,tab2,tab3) FILE=exp_file.dmp LOG=imp_file.log
   ```

La utilidad de exportación e importación tiene otras variaciones que podrían adaptarse mejor a sus necesidades. Consulte la documentación de Oracle para obtener toda la información.

# Importación mediante Oracle SQL\$1Loader
<a name="Oracle.Procedural.Importing.SQLLoader"></a>

Puede considerar Oracle SQL\$1Loader para bases de datos de gran tamaño que contienen un número limitado de objetos. Dado que el proceso de exportación desde una base de datos de origen y de carga en una base de datos de destino es específico del esquema, el siguiente ejemplo crea los objetos del esquema de ejemplo, exporta desde un origen y luego carga los datos en una base de datos de destino. 

La forma más sencilla de instalar Oracle SQL\$1Loader es instalar Oracle Instant Client. Para descargar el software, vaya a [https://www.oracle.com/database/technologies/instant-client.html](https://www.oracle.com/database/technologies/instant-client.html). Para obtener documentación, consulte [Instant Client for SQL\$1Loader, Export and Import](https://docs.oracle.com/en/database/oracle/oracle-database/21/sutil/instant-client-sql-loader-export-import.html#GUID-FF1B6F75-09F5-4911-9317-9776FAD15965) (Instant Client para SQL\$1Loader, exportación e importación) en el manual de *Oracle Database Utilities*.

**Para importar datos mediante Oracle SQL\$1Loader**

1. Cree una tabla de origen de ejemplo con la siguiente instrucción SQL.

   ```
   CREATE TABLE customer_0 TABLESPACE users 
      AS (SELECT ROWNUM id, o.* 
          FROM   ALL_OBJECTS o, ALL_OBJECTS x 
          WHERE  ROWNUM <= 1000000);
   ```

1. En la instancia de base de datos de RDS para Oracle de destino, cree una tabla de destino para cargar los datos. La cláusula `WHERE 1=2` garantiza que copia la estructura de `ALL_OBJECTS`, pero no copia ninguna de las filas.

   ```
   CREATE TABLE customer_1 TABLESPACE users 
     AS (SELECT 0 AS ID, OWNER, OBJECT_NAME, CREATED
         FROM   ALL_OBJECTS
         WHERE  1=2);
   ```

1. Exporte los datos desde la base de datos de origen a un archivo de texto. En el siguiente ejemplo se utiliza SQL\$1Plus. Para sus datos, es probable que tenga que generar una script que realice la exportación de todos los objetos de la base de datos. 

   ```
   ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY/MM/DD HH24:MI:SS'
   
   SET LINESIZE 800 HEADING OFF FEEDBACK OFF ARRAY 5000 PAGESIZE 0
   SPOOL customer_0.out 
   SET MARKUP HTML PREFORMAT ON
   SET COLSEP ','
   
   SELECT id, owner, object_name, created 
   FROM   customer_0; 
   
   SPOOL OFF
   ```

1. Cree un archivo de control para describir los datos. Es posible que tenga que escribir un script para realizar este paso. 

   ```
   cat << EOF > sqlldr_1.ctl 
   load data
   infile customer_0.out
   into table customer_1
   APPEND
   fields terminated by "," optionally enclosed by '"'
   (
     id           POSITION(01:10)    INTEGER EXTERNAL,
     owner        POSITION(12:41)    CHAR,
     object_name  POSITION(43:72)    CHAR,
     created      POSITION(74:92)    date "YYYY/MM/DD HH24:MI:SS"
   )
   ```

   Si es necesario, copie los archivos generados por el código anterior en un área de ensayo, como una instancia Amazon EC2.

1. Importe los datos usando SQL\$1Loader con el nombre de usuario y la contraseña apropiados para la base de datos de destino. 

   ```
   sqlldr cust_dba@targetdb CONTROL=sqlldr_1.ctl BINDSIZE=10485760 READSIZE=10485760 ROWS=1000 
   ```

# Migración de vistas materializadas de Oracle
<a name="Oracle.Procedural.Importing.Materialized"></a>

Para migrar grandes conjuntos de datos de forma eficaz, puede utilizar la replicación de vistas materializadas de Oracle. Con la replicación, puede mantener las tablas de destino sincronizadas con las tablas de origen. Por lo tanto, puede cambiar a Amazon RDS más adelante, si es necesario. 

Antes de migrar mediante vistas materializadas, asegúrese de cumplir los siguientes requisitos:
+ Configure el acceso desde la base de datos de destino a la base de datos de origen En el siguiente ejemplo, se han activado reglas de acceso en la base de datos de origen para permitir que la base de datos de destino de RDS para Oracle se conecte a la de origen a través de SQL\$1Net. 
+ Cree un enlace de base de datos desde la instancia de base de datos de RDS para Oracle a la base de datos de origen.

**Para migrar datos mediante vistas materializadas**

1. Cree una cuenta de usuario en las instancias de origen y de destino de RDS para Oracle que pueda autenticarse con la misma contraseña. El siguiente ejemplo crea una usuario denominado `dblink_user`.

   ```
   CREATE USER dblink_user IDENTIFIED BY my-password
     DEFAULT TABLESPACE users
     TEMPORARY TABLESPACE temp;
      
   GRANT CREATE SESSION TO dblink_user;
   
   GRANT SELECT ANY TABLE TO dblink_user;
   
   GRANT SELECT ANY DICTIONARY TO dblink_user;
   ```
**nota**  
Especifique una contraseña distinta de la que se muestra aquí como práctica recomendada de seguridad.

1. Cree un enlace de base de datos desde la instancia de destino de RDS para Oracle a la instancia de origen utilizando el usuario recién creado.

   ```
   CREATE DATABASE LINK remote_site
     CONNECT TO dblink_user IDENTIFIED BY my-password
     USING '(description=(address=(protocol=tcp) (host=my-host) 
       (port=my-listener-port)) (connect_data=(sid=my-source-db-sid)))';
   ```
**nota**  
Especifique una contraseña distinta de la que se muestra aquí como práctica recomendada de seguridad.

1. Pruebe el enlace:

   ```
   SELECT * FROM V$INSTANCE@remote_site;
   ```

1. Cree una tabla de ejemplo con la clave principal y el log de vistas materializadas en la instancia de origen.

   ```
   CREATE TABLE customer_0 TABLESPACE users 
     AS (SELECT ROWNUM id, o.* 
         FROM   ALL_OBJECTS o, ALL_OBJECTS x
         WHERE  ROWNUM <= 1000000);
   
   ALTER TABLE customer_0 ADD CONSTRAINT pk_customer_0 PRIMARY KEY (id) USING INDEX;
   
   CREATE MATERIALIZED VIEW LOG ON customer_0;
   ```

1. En la instancia de base de datos de RDS para Oracle, cree una vista materializada. 

   ```
   CREATE MATERIALIZED VIEW customer_0 
     BUILD IMMEDIATE REFRESH FAST 
     AS (SELECT * 
         FROM   cust_dba.customer_0@remote_site);
   ```

1. En la instancia de base de datos de RDS para Oracle, actualice la vista materializada.

   ```
   EXEC DBMS_MVIEW.REFRESH('CUSTOMER_0', 'f');
   ```

1. Arrastre la vista materializada e incluya la cláusula `PRESERVE TABLE` para retener la tabla del contenedor de la vista materializada y su contenido.

   ```
   DROP MATERIALIZED VIEW customer_0 PRESERVE TABLE;
   ```

   La tabla conservada tiene el mismo nombre que la vista materializada eliminada.