Importando una partición de una tabla en una tabla sin particionar

Tenemos un escenario donde queremos importar el contenido de una partición de Oracle en una tabla sin particionar debido a una pérdida puntual de datos.

Para ello nos valemos tanto de la funcionalidad REMAP_TABLE para asignarle un nuevo nombre y la opción PARTITION_OPTIONS. Es importante aclararlo porque la documentación no deja claro el procedimiento,

Detallamos el contenido el fichero de parámetros para la importación.

Importante entender los siguientes puntos:

Tenemos una tabla con una particion que queremos importar

La tabla destino no lo está, vamos a desparticionar.

Cambiamos el nombre de la partición para que resulte más cómodo identificar y tratar los datos importados.

[oracle@servidor01~]$ cat impdp_DEPARTITION.par
logfile=impdp_DEPARTITION.log
dumpfile=expdp_esquemacompleto_%U.dmp
tables=PROPIETARIO.TABLAORIG:PARTICIONORIG
REMAP_TABLE=PROPIETARIO.TABLA_ORIG:PARTICION_ORIG:TABLA_FINAL
PARTITION_OPTIONS=DEPARTITION
directory=DIR_EXPORTS
parallel=4
exclude=index
exclude=grant
exclude=statistics
exclude=constraint

Importante, si no especificamos las opciones de particionado (PARTITION_OPTIONS) obtendremos el siguiente error:

ORA-39004: estado no valido
ORA-39371: no se puede especificar la particion en remap_table sin anular la particion

Una vez hemos creado nuestro fichero con las opciones lanzamos la importación de datos:

[oracle@servidor01~]$ . oraenv <<< bddes
[oracle@servidor01~]$ impdp "'/ as sysdba'" parfile=impdp_DEPARTITION.par

Import: Release 19.0.0.0.0 - Production on Thu Apr 13 13:54:41 2023
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.
Password:

Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
La tabla maestra "SYS"."SYS_IMPORT_TABLE_01" se ha cargado/descargado correctamente

Iniciando "SYS"."SYS_IMPORT_TABLE_01":  "/******** AS SYSDBA" parfile=impdp_DEPARTITION.par
Procesando el tipo de objeto SCHEMA_EXPORT/TABLE/TABLE
Procesando el tipo de objeto SCHEMA_EXPORT/TABLE/TABLE_DATA
. . "PROPIETARIO"."TABLA_FINAL"  2.034 MB  305578 filas importadas
Procesando el tipo de objeto SCHEMA_EXPORT/TABLE/COMMENT
Procesando el tipo de objeto SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT

El trabajo "SYS"."SYS_IMPORT_TABLE_01" ha terminado

Y tenemos nuestra particion importada como una tabla sin particionar.


SYS@bddes> select count(*) from PROPIETARIO.TABLA_FINAL;

  COUNT(*)
----------
    305578