Oracle Data Pump Export: exportar únicamente metadata de un esquema

Como ya he comentado en alguna otra ocasión, a partir de Oracle Database 10g, está disponible la utilidad Data Pump Export, que al igual que Export utility, permite exportar datos y metadatos a un archivo binario que podrá contener tanto la información completa de una base de datos como únicamente ciertos esquemas o tablas.

Hace un tiempo expliqué cómo calcular el tamaño estimado del backup/export, en esta ocasión vamos a ver cómo exportar únicamente los metadatos del esquema, obviando los datos. Esto permite exportar/importar únicamente la estructura del esquema.

La herramienta expdp, a través del parámetro CONTENT=METADATA_ONLY nos va a permitir hacer uso de esta funcionalidad. A continuación un ejemplo de export del esquema FOO, únicamente de la estructura:

$ expdp SYSTEM/XXXXX@BBDD DIRECTORY=DATA_PUMP_DIR DUMPFILE=FOO_METADATA_20181019.dmp \
LOGFILE=FOO_METADATA_20181019.log SCHEMAS=foo CONTENT=METADATA_ONLY JOB_NAME=NOJOB01

Además del parámetro de CONTENT, donde especificamos que sólo queremos la estructura, vemos lo siguiente:

* DIRECTORY: directorio específico para almacenar todo lo relacionado con la tarea.

En este caso he escogido «DATA_PUMP_DIR», podéis crear uno específico o utilizar alguno de los ya definidos en la base de datos:

SYS.FOO1> select directory_name,directory_path from dba_directories;

DIRECTORY_NAME                   DIRECTORY_PATH
---------------------------------------------------
BACKUP_DIR               /export/backup
XMLDIR                   /u01/app/oracle/product/11.2.0/dbhome_1/rdbms/xml
ORACLE_OCM_CONFIG_DIR   /u01/app/oracle/product/11.2.0/dbhome_1/ccr/state
DATA_PUMP_DIR           /u01/app/oracle/product/11.2.0/dbhome_1/rdbms/log/
[...]

Para crear uno específico:

SQL> create directory backup_dir as '/backup';

El resto de parámetros requieren poca explicación. Nombre del fichero para el export, el log y los SCHEMAS a exportar. Toda la información del proceso quedará registrada en el archivo de log que hemos especificado en el job y en el log de $ALERT_DIR.