jueves, 30 de noviembre de 2017

Export DataPump usando INCLUDE para seleccionar solo tablas que tengan la paralabra "T_HIS"

1.    Como exportar con DataPump solo las tablas que contengan la palabra "T_HIS" en Oracle, e importar el archivo .dmp generado a un nuevo schema usando REMAP_SCHEMA y REMAP_TABLESPACE.

 Primer Paso: revisar tipo de servidor arquitectura y versión de base de datos,etc.

Para este caso el servidor donde está la base de datos origen es un servidor  Sun Fire V490, con las siguientes características.

$ isalist
sparcv9+vis2 sparcv9+vis sparcv9 sparcv8plus+vis2 sparcv8plus+vis sparcv8plus sparcv8 
sparcv8-fsmuld sparcv7 sparc
$  uname -a
SunOS alpha 5.10 Generic_150400-07 sun4u sparc SUNW,Sun-Fire-V490
$ cat /etc/*release*
                   Oracle Solaris 10 1/13 s10s_u11wos_24a SPARC
  Copyright (c) 1983, 2013, Oracle and/or its affiliates. All rights reserved.
                            Assembled 17 January 2013

La versión de la base de datos es 10g Enterprise Edition Release 10.2.0.5.0

$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.5.0 - Production on Thu Nov 30 15:19:59 2017
Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

Segundo Paso: Crear el directorio DataPump en la BD.

Tener muy en cuenta que para que funcione export/import DataPump la base de datos debe de tener creado un directorio.

SQL> CREATE OR REPLACE DIRECTORY EXPIMP AS '/backup/EXPIMP';
SQL> GRANT READ, WRITE ON DIRECTORY EXPIMP TO EXP_FULL_DATABASE;
SQL> GRANT READ, WRITE ON DIRECTORY EXPIMP TO IMP_FULL_DATABASE;

 Tercer Paso: Crear del script

Para lo cual se crea el siguiente script, y tener muy en cuenta el parámetro INCLUDE el tipo de objeto que para mi caso lo que quiero escoger es TABLE y el parámetro LIKE que lo que hace es filtrar las tablas que quiero exportar que son todas las que contengan \(\'T_HIS%\'\), a continuación el script:

$ cat expdp_tablas_schema.sh
expdp system/*** DIRECTORY=EXPIMP SCHEMAS=EXAMPLE 
INCLUDE=TABLE:\"LIKE\(\'T_HIS%\'\)\" 
dumpfile=expdp_EXAMPLE_tables_T_HIS_29NOV2017.dmp 
logfile=expdp_EXAMPLE_tables_T_HIS_29NOV2017.log

Cuarto Paso: ejecutar el script

A continuación se ejecuta el script con expdp_tabla_schema.sh, tener en cuenta que se debe tener las variables de entorno ORACLE_HOME, ORACLE_BASE Y ORACLE_SID habilitadas.

$ sh expdp_tabla_schema.sh
Export: Release 10.2.0.5.0 - 64bit Production on Wednesday, 29 November, 2017 10:28:21
Copyright (c) 2003, 2007, Oracle.  All rights reserved.
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Starting "SYSTEM"."SYS_EXPORT_SCHEMA_01":  system/******** DIRECTORY=EXPIMP 
SCHEMAS=EXAMPLE INCLUDE=TABLE:"LIKE('T_HIS%')" 
dumpfile=expdp_EXAMPLE_tables_T_HIS_29NOV2017.dmp 
logfile=expdp_EXAMPLE_tables_T_HIS_29NOV2017.log
Estimate in progress using BLOCKS method...
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 808 MB
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT
Processing object type SCHEMA_EXPORT/TABLE/GRANT/WITH_GRANT_OPTION/OBJECT_GRANT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/COMMENT
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. . exported "EXAMPLE"."T_HIS_SU_REQS_DETAIL"             64.96 MB  325200 rows
. . exported "EXAMPLE"."T_HIS_SU_TRANSAC_STOCK"           64.20 MB  428920 rows
. . exported "EXAMPLE"."T_HIS_SU_REQS_COMPRAS_RESUMEN"    54.39 MB  281637 rows
. . exported "EXAMPLE"."T_HIS_SU_REQS_COMPRAS_RESUMEND"   51.46 MB  281637 rows
. . exported "EXAMPLE"."T_HIS_SU_REQS_HEADER"             39.53 MB  107726 rows
. . exported "EXAMPLE"."T_HIS_SU_TRANSAC_NO_STOCK"        40.11 MB  358547 rows
. . exported "EXAMPLE"."T_HIS_SU_REQS_STOCK_RESUMEN"      28.56 MB  209746 rows
. . exported "EXAMPLE"."T_HIS_SU_FACTURAS"                25.67 MB  259760 rows
. . exported "EXAMPLE"."T_HIS_TT_DESC_EXT_SERVICIOS"          0 KB       0 rows
Master table "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SYSTEM.SYS_EXPORT_SCHEMA_01 is:
  /backup/EXPIMP/expdp_EXAMPLE_tables_T_HIS_29NOV2017.dmp
Job "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully completed at 10:55:50
$

Esto genera dos archivos.

$ ls -ltrh
total 1227086
-rwxrwxrwx   1 oracle  dba          194 Nov 29 10:28 expdp_tabla_schema.sh
-rw-r--r--   1 oracle  dba          13K Nov 29 10:55 expdp_EXAMPLE_tables_T_HIS_29NOV2017.log
-rw-r-----   1 oracle  dba         599M Nov 29 10:55 expdp_EXAMPLE_tables_T_HIS_29NOV2017.dmp
$ pwd
/backup/EXPIMP

Quinto Paso: Copiar .dmp al servidor destino.

Con el commando scp copiamos vía red el archivo .dmp generado en en el paso anterior al el servidor destino:

$scp /backup/EXPIMP/expdp_EXAMPLE_tables_T_HIS_29NOV2017.dmp 
oracle@192.168.XX.XXX:/orabkp/EXPDP/EXPIMP/

Sexto Paso: Generar script de impdp he Importar .dmp en la base de datos destino.

Para el proceso de importación se debe de tener en cuenta los siguientes temas:

·       El nombre del tablespace de la base de datos Origen y el nombre del tablespace de la base de datos destino si son diferentes se debe de hacer un remap_tablespace para que la información quede dentro del tablespace que requerimos.
·         El nombre del schema de la base de datos Origen y el nombre del schema de la base de datos destino si son diferentes se debe de hacer un remap_schema para que la información quede dentro del schema que requerimos.

$cat impdp_tablas_schema.sh
impdp system/*** directory=EXPIMP dumpfile=expdp_EXAMPLE_tables_T_HIS_29NOV2017.dmp 
REMAP_SCHEMA=EXAMPLE:EXAMPLE_AS400 
REMAP_TABLESPACE=EXAMPLE:EXAMPLE_AS400 
logfile=impdp_EXAMPLE_tables_T_HIS_30NOV2017.log

Séptimo Paso: ejecutar el script

$ sh impdp_EXAMPLE_tables_T_HIS_30NOV2017.sh
Import: Release 12.1.0.2.0 - Production on Thu Nov 30 07:48:52 2017
Copyright (c) 1982, 2015, Oracle and/or its affiliates.  All rights reserved.
Connected to: Oracle Database 12c Standard Edition Release 12.1.0.2.0 - 64bit Production
With the Automatic Storage Management option
Master table "SYSTEM"."SYS_IMPORT_FULL_01" successfully loaded/unloaded
import done in WE8ISO8859P15 character set and AL16UTF16 NCHAR character set
export done in WE8ISO8859P1 character set and AL16UTF16 NCHAR character set
WARNING: possible data loss in character set conversions
Starting "SYSTEM"."SYS_IMPORT_FULL_01":  system/******** directory=EXPIMP 
dumpfile=expdp_EXAMPLE_tables_T_HIS_29NOV2017.dmp 
REMAP_SCHEMA=EXAMPLE:EXAMPLE_AS400 
REMAP_TABLESPACE=EXAMPLE:EXAMPLE_AS400 
logfile=impdp_EXAMPLE_tables_T_HIS_30NOV2017.log
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
. . imported "EXAMPLE_AS400"."T_HIS_SU_REQS_DETAIL"         64.96 MB  325200 rows
. . imported "EXAMPLE_AS400"."T_HIS_SU_TRANSAC_STOCK"       64.20 MB  428920 rows
. . imported "EXAMPLE_AS400"."T_HIS_SU_REQS_COMPRAS_RESUMEN"  54.39 MB  281637 rows
. . imported "EXAMPLE_AS400"."T_HIS_SU_REQS_COMPRAS_RESUMEND"  51.46 MB  281637 rows
. . imported "EXAMPLE_AS400"."T_HIS_SU_REQS_HEADER"         39.53 MB  107726 rows
. . imported "EXAMPLE_AS400"."T_HIS_SU_TRANSAC_NO_STOCK"    40.11 MB  358547 rows
. . imported "EXAMPLE_AS400"."T_HIS_SU_REQS_STOCK_RESUMEN"  28.56 MB  209746 rows
. . imported "EXAMPLE_AS400"."T_HIS_SU_FACTURAS"            25.67 MB  259760 rows
. . imported "EXAMPLE_AS400"."T_HIS_TT_DESC_EXT_SERVICIOS"      0 KB       0 rows
Processing object type SCHEMA_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT
GRANT SELECT ON "EXAMPLE_AS400"."T_HISTORICO_ACTIVOS_AS400_A" TO "DISCOVERER_CIAT" WITH GRANT OPTION
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/COMMENT
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Job "SYSTEM"."SYS_IMPORT_FULL_01" completed with 0 error(s) at Thu Nov 30 07:49:36 2017 elapsed 0 00:00:43
$

Conclusion:                                                                                                    
DataPump es una herramienta poderosa y efectiva para la exportacion he importacion de datos, la cual nos permite filtrar la informacion que requerimos con tan solo el parametro INCLUDE, hay que tener encuenta que tambien existe otro parametro EXCLUDE que nos permite filtrar la informacion que no queremos exportar, para revisar mas informacion a este tema les recomiendo la siguiente nota de oracle: 

Export/Import DataPump Parameters INCLUDE and EXCLUDE - How to Load and Unload Specific Objects (Doc ID 341733.1)

Examples: 

expdp ... SCHEMAS=scott EXCLUDE=SEQUENCE, TABLE:\"IN ('EMP', 'DEPT')\" 
impdp ... SCHEMAS=scott INCLUDE=FUNCTION, PACKAGE, TABLE:\"= 'EMP'\"



No hay comentarios.:

Publicar un comentario