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

Mi nombre es Carla y me defino como una apasionada de conocer, compartir ideas, divertirme y aprender todo lo relacionado con Oracle.
Alegre y creativa, con un alto grado de autoexigencia, que busca, incluso sin querer, una forma diferente de ver un mismo problema o solución. Defensora del trabajo en equipo en todas las facetas de la vida y de disfrutar todo lo que haces, siempre con humildad.
Actualmente cuento con más de 15 años de experiencia como administradora de Oracle, habiendo ocupado previamente posiciones como desarrolladora en la rama de Inteligencia de Negocios. Fue en ese momento que me di cuenta de que no quería centrarme en el desarrollo, sino participar en todas las capas que involucraban los datos, desde el despliegue de la base de datos hasta su explotación final.
Siempre estoy dispuesta a ayudar y compartir conocimientos. Creo firmemente que con la tecnología hay que divertirse y no verla como una competencia. La persona con la que tienes que ser el mejor es contigo mismo.
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



