Skip to main content

Command Palette

Search for a command to run...

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

Updated
2 min readView as Markdown
Importando una partición de una tabla en una tabla sin particionar
C

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

More from this blog

Carla Muñoz López

65 posts

Soy DBA senior de bases de datos Oracle y me defino como una persona alegre y creativa. Apasionada por conocer, compartir ideas, divertirme y seguir aprendiendo todo lo relacionado con Oracle.