12c 2cpu oracle se_Nuevas funcionalidades de Oracle Datapump 12c Release 1 y 2

本文详细介绍了Oracle 12c Release 1和Release 2中Datapump工具的增强功能,包括禁用IMPDP日志记录、导入时的表压缩、视图转换为表、显示执行时间、数据文件目录重命名等,旨在帮助DBAs更高效地进行数据库管理和迁移任务。
摘要由CSDN通过智能技术生成

Una de las funcionalidades mas usadas en la base de datos Oracle es Oracle Datapump.  La utilizamos para migrar bases de datos, mover bases de datos a diferentes tipos de servidores, desfragmentar tablas con mucha operación, realizar Transport Tablespace e inclusive para realizar Backups de la base de datos; aunque este último no es una práctica recomendada.

Datapump es una herramienta muy útil para los DBAs y, con la nueva versión Oracle 12c, no podía quedarse sin tener mejoras que nos podrían ayudar en diferentes tareas.

A continuación, voy a detallar las mejoras para Oracle 12c Release 1 y reléase 2 por separado.

Oracle 12c Release 1

1. Deshabilitar el Logging en el IMPDP

¿Cuántas veces hemos ejecutado una importación de un esquema grande y nuestro Flash Recovery Area se llena por generación Archivelogs?  En muchas ocasiones debemos poner la base de datos en modo NO ARCHIVE para poder realizar la importación de manera rápida y sin problemas.

En Oracle 12c se utiliza el parámetro TRANSFORM junto a la opción DISABLE_ARCHIVE_LOGGING para deshabilitar la generación de Logging sobre tablas e índices durante la ejecución de una importación.  Muy útil para cargas de gran volumen de datos y de manera más rápida.

Realizamos el exportado de un esquema completo en la base de datos origen.

expdp system@ORCL DUMPFILE=SH_user.dmp LOGFILE=exp_SH.log

DIRECTORY=EXP_DIR SCHEMAS=SH

Realizamos la importación del esquema en la base de datos destino con la opcion de generación de Logging deshabilitada.

impdp system@PRD DUMPFILE=SH_user.dmp LOGFILE=imp_SH.log

DIRECTORY=IMP_DIR SCHEMAS=SH TRANSFORM=DISABLE_ARCHIVE_LOGGING:Y

2. Compresión de tablas durante el IMPDP

Usamos la opción TRANSFORM junto con el parámetro TABLE_COMPRESSION_CLAUSE para definir el tipo de compresión que se le aplica a una tabla durante la ejecución de IMPDP sobre la base de datos destino.

Revisamos el tamaño de una tabla en el origen y luego realizamos una exportación de la misma

SQL> select owner, segment_name, bytes/1024/1204 MBytes from dba_segments where segment_name='CUSTOMERS' and owner='SH';

OWNER SEGMENT_NAME MBYTES

------------- ------------------------------ ----------

SH CUSTOMERS 10.73

[oracle@oracle12c dump]$ expdp system@ORCL DUMPFILE=customer.dmp LOGFILE=exp_customer.log DIRECTORY=EXP_DIR TABLES=SH.CUSTOMERS

Realizamos la importación con la opción de compresión en la base de datos destino. Las opciones para el parámetro TABLE_COMPRESSION_CLAUSE son:

NONE

NOCOMPRESS

COMPRESS

ROW STORE COMPRESS BASIC

ROW STORE COMPRESS ADVANCED

COLUMN STORE COMPRESS FOR QUERY

COLUMN STORE COMPRESS FOR ARCHIVE

Prestar atención a como se define las compresiones con espacios en blanco.

impdp system@PRD DUMPFILE=customer.dmp LOGFILE=imp_customer.log

DIRECTORY=IMP_DIR TRANSFORM=TABLE_COMPRESSION_CLAUSE:\"ROW STORE COMPRESS

ADVANCED\"

Processing object type TABLE_EXPORT/TABLE/TABLE

Processing object type TABLE_EXPORT/TABLE/TABLE_DATA

. . imported "SH"."CUSTOMERS" 10.27 MB 55500 rows

Processing object type TABLE_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT

Finalmente verificamos si la tabla fue importada con la compresión activada.

SQL> select OWNER, TABLE_NAME, COMPRESSION, COMPRESS_FOR from dba_tables where owner='SH' and table_name='CUSTOMERS';

OWNER TABLE_NAME COMPRESS COMPRESS_FOR

-------- --------------- -------- --------------

SH CUSTOMERS ENABLED ADVANCED

SQL> select owner,segment_name, bytes/1024/1204 MBytes from dba_segments where segment_name='CUSTOMERS' and owner='SH';

OWNER SEGMENT_NAME MBYTES

------------- -------------- ----------

SH CUSTOMERS 5.95

3. Convertir Vistas en Tablas

Mediante la opción VIEWS_AS_TABLES podemos exportar una vista como si fuera una tabla.

Datapump guarda la definición de la nueva tabla y los objetos dependientes de la vista original. Los permisos asociados a la vista son replicados en la nueva tabla.

Muy útil para mover información de diferentes tablas relacionadas hacia tablas consolidadas y para importar a tablas Des-normalizadas.

Creamos una vista simple y verificamos el objeto.

SQL> create view hr.EMP_VIEW as select e.EMPLOYEE_ID, e.FIRST_NAME||' '||e.LAST_NAME "NOMBRE",

e.HIRE_DATE, j.JOB_TITLE, d.DEPARTMENT_NAME from hr.EMPLOYEES e, hr.DEPARTMENTS d, hr.JOBS

j where e.JOB_ID = j.JOB_ID and e.DEPARTMENT_ID = d.DEPARTMENT_ID order by e.EMPLOYEE_ID;

View created.

SQL> select OWNER, OBJECT_NAME, OBJECT_TYPE, CREATED, STATUS from dba_objects where OBJECT_NAME='EMP_VIEW';

OWNER OBJECT_NAME OBJECT_TYPE CREATED STATUS

---------- ---------------- ------------- --------- -------

HR EMP_VIEW VIEW 10-FEB-18 VALID

Realizamos la transformación desde la ejecución EXPDP.

expdp system@ORCL DUMPFILE=vista_tabla.dmp LOGFILE=exp_vista.log

DIRECTORY=EXP_DIR VIEWS_AS_TABLES=HR.EMP_VIEW

impdp system@PRD DUMPFILE=vista_tabla.dmp LOGFILE=imp_tabla.log

DIRECTORY=IMP_DIR REMAP_TABLE=EMP_VIEW:EMP_TBL

Verificamos que la vista se ha convertido en tabla y con un nuevo nombre EMP_TBL en la base de datos destino.

SQL> select OWNER, OBJECT_NAME, OBJECT_TYPE, CREATED, STATUS from dba_objects where OBJECT_NAME='EMP_TBL';

OWNER OBJECT_NAME OBJECT_TYPE CREATED STATUS

-------- ------------------ ------------- --------- -------

HR EMP_TBL TABLE 10-FEB-18 VALID

4. Mostrar el tiempo en las ejecuciones Datapump

Usamos la opción LOGTIME durante la exportación o importación para mostrar la fecha y hora de cada registro del Log.  Es una funcionalidad simple, pero nos podría ayudar en toma de tiempos de ejecución.  Los valores que permite esta opción son: NONE, STATUS, LOGFILE, ALL

Ejecutamos el EXPDP y observamos el log.

expdp system@ORCL DUMPFILE=HR_OE.dmp LOGFILE=exp_HR_OE.log

DIRECTORY=EXP_DIR SCHEMAS=HR,OE LOGTIME=ALL

Export: Release 12.2.0.1.0 - Production on Sat Feb 10 17:49:20 2018

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

Password:

Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit

Production

10-FEB-18 17:49:36.337: Starting "SYSTEM"."SYS_EXPORT_SCHEMA_01":

system/********@ORCL DUMPFILE=HR_OE.dmp LOGFILE=exp_HR_OE.log DIRECTORY=EXP_DIR

SCHEMAS=HR,OE LOGTIME=ALL

10-FEB-18 17:49:45.080: Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA

10-FEB-18 17:49:46.289: Processing object type

SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS

10-FEB-18 17:49:46.471: Processing object type

SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/FUNCTIONAL_INDEX/INDEX_STATISTICS

10-FEB-18 17:49:46.868: Processing object type

SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS

10-FEB-18 17:49:55.992: Processing object type SCHEMA_EXPORT/STATISTICS/MARKER

10-FEB-18 17:49:56.866: Processing object type SCHEMA_EXPORT/USER

10-FEB-18 17:49:57.110: Processing object type SCHEMA_EXPORT/SYSTEM_GRANT 10-FEB-18 17:49:57.251: Processing object type SCHEMA_EXPORT/ROLE_GRANT

10-FEB-18 17:49:57.286: Processing object type SCHEMA_EXPORT/DEFAULT_ROLE

10-FEB-18 17:49:57.405: Processing object type SCHEMA_EXPORT/TABLESPACE_QUOTA

10-FEB-18 17:49:58.273: Processing object type

SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA

10-FEB-18 17:49:58.658: Processing object type SCHEMA_EXPORT/SYNONYM/SYNONYM

10-FEB-18 17:49:58.842: Processing object type SCHEMA_EXPORT/TYPE/INC_TYPE

10-FEB-18 17:49:59.663: Processing object type SCHEMA_EXPORT/TYPE/TYPE_SPEC

10-FEB-18 17:50:00.559: Processing object type

SCHEMA_EXPORT/TYPE/GRANT/OWNER_GRANT/OBJECT_GRANT

10-FEB-18 17:50:01.795: Processing object type SCHEMA_EXPORT/SEQUENCE/SEQUENCE

10-FEB-18 17:50:07.960: Processing object type SCHEMA_EXPORT/XMLSCHEMA/XMLSCHEMA

10-FEB-18 17:50:16.997: Processing object type SCHEMA_EXPORT/TABLE/TABLE

10-FEB-18 17:50:27.397: Processing object type

10-FEB-18 17:50:54.307: Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX

5. Encriptación de password

Para poder encriptar los archivos Dump de una operación EXPDP, podemos utilizar la opción de encriptación con password.  Lamentablemente en versiones anteriores es necesario colocar el password como parámetro del comando EXPDP e IMPDP.

Para evitar colocar el password como parámetro se define el parámetro

ENCRYPTION_PWD_PROMPT.  De esta manera el password se solicita mediante un Prompt de manera más segura.

expdp system@ORCL DUMPFILE=encrypt_SH.dmp LOGFILE=exp_SH_encryp.log

DIRECTORY=EXP_DIR SCHEMAS=SH ENCRYPTION_PWD_PROMPT=Y

Export: Release 12.2.0.1.0 - Production on Sat Feb 10 19:03:17 2018

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

Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 -

64bit Production

Encryption Password:

Starting "SYSTEM"."SYS_EXPORT_SCHEMA_01": system/********@ORCL

DUMPFILE=encrypt_SH.dmp LOGFILE=exp_SH_encryp.log DIRECTORY=EXP_DIR

SCHEMAS=SH ENCRYPTION_PWD_PROMPT=Y

6. Compresión de archivos Dump

Podemos elegir el parámetro COMPRESSION_ALGORITHM para comprimir los archivos Dumps generados por el comando EXPDP. Con la opción de base de datos Advanced Compression podemos seleccionar diferentes niveles de compresión.

BASIC

LOW

MEDIUM

HIGH

La opción de compresión es muy efectiva cuando la base de datos es muy grande y no se tiene mucha capacidad para almacenar archivos Dumps.

Mientras mayor sea la compresión, la inversión de recursos de CPU aumenta.

expdp system@ORCL DUMPFILE=FULL_DB.dmp LOGFILE=exp_full.log

DIRECTORY=EXP_DIR FULL=Y COMPRESSION=ALL COMPRESSION_ALGORITHM=HIGH

Export: Release 12.2.0.1.0 - Production on Sat Feb 10 19:34:02 2018

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

Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

Starting "SYSTEM"."SYS_EXPORT_FULL_01": system/********@ORCL

DUMPFILE=FULL_DB.dmp LOGFILE=exp_full.log DIRECTORY=EXP_DIR FULL=Y

COMPRESSION=ALL COMPRESSION_ALGORITHM=HIGH

7. Datapump en Pluggable Database

Con la nueva arquitectura Oracle 12c Multitenant podemos contar con bases de datos Pluggable. El procedimiento para realizar exportaciones e importaciones, con Datapump, no es diferente del procedimiento tradicional.

Por lo que es posible mover información:

Desde una base de datos Non-CDB hacia un Pluggable, o viceversa.

Desde una base de datos Pluggable hacia otro Pluggable.

Oracle 12c Release 2

1. Exportación e importación de la Metadata en paralelo

Hasta la versión Oracle 12c Release 1, por más que uno define la opción PARALLEL a una operación de exportación o importación de Metadata, esta acción se realizaba de manera serial.

En la versión Oracle 12c Release 2, ya es posible realizar la exportación e importación en paralelo.

Si la base de datos contiene información de tablas e índices particionados, la exportación de la Metadata de cada partición puede ejecutarse de manera paralela. Además, durante una importación, es posible realizar la creación de índices y constraint en forma paralela.

expdp system@ORCL DUMPFILE=METADATA_DB_%U.dmp LOGFILE=exp_meta_full.log

DIRECTORY=EXP_DIR FULL=Y CONTENT=METADATA_ONLY PARALLEL=2

Export: Release 12.2.0.1.0 - Production on Sat Feb 10 21:24:01 2018

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

Password:

Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

Starting "SYSTEM"."SYS_EXPORT_FULL_01": system/********@ORCL

DUMPFILE=METADATA_DB_%U.dmp LOGFILE=exp_meta_full.log DIRECTORY=EXP_DIR

FULL=Y CONTENT=METADATA_ONLY PARALLEL=2

Dump file set for SYSTEM.SYS_EXPORT_FULL_01 is:

/u01/dump/METADATA_DB_01.dmp

/u01/dump/METADATA_DB_02.dmp

Job "SYSTEM"."SYS_EXPORT_FULL_01" successfully completed

2. Parfile en el log de Oracle Datapump

Cuando ejecutar el comando EXPDP o IMPDP junto al parámetro PARFILE. El contenido del archive se imprime en el log del comando ejecutado.

Esta funcionalidad es muy útil para poder revisar la ejecución de una operación de exportación cuando no conocemos el procedimiento que se ha utilizado.

Creamos un Parfile de ejemplo

[oracle@oracle12c dump]$ cat parfileDUMP.txt

DUMPFILE=dump_SH_OE%U.dmp

LOGFILE=exp_SH_OE.log

DIRECTORY=EXP_DIR

SCHEMAS=HR,OE PARALLEL=2

Ejecutamos el comando EXPDP y utilizamos el Parfile.

expdp system@ORCL parfile=parfileDUMP.txt

Export: Release 12.2.0.1.0 - Production on Sat Feb 10 21:43:15 2018

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

Password:

Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

Starting "SYSTEM"."SYS_EXPORT_SCHEMA_01": system/********@ORCL parfile=parfileDUMP.txt

Revisamos el log de la ejecución y observamos los parámetros del Parfile definidos.

[oracle@oracle12c dump]$ cat exp_SH_OE.log

;;;

Export: Release 12.2.0.1.0 - Production on Sat Feb 10 21:43:15 2018

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

;;;

Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 -

64bit Production

;;;

*************************************************************************

*

;;; Parfile values:

;;; parfile: parallel=2

;;; parfile: schemas=HR,OE

;;; parfile: directory=EXP_DIR

;;; parfile: logfile=exp_SH_OE.log

;;; parfile: dumpfile=dump_SH_OE%U.dmp

;;;

************************************************************************* *

Starting "SYSTEM"."SYS_EXPORT_SCHEMA_01": system/********@ORCL parfile=parfileDUMP.txt

Processing object type SCHEMA_EXPORT/USER

Processing object type

SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS

Processing object type

SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/FUNCTIONAL_INDEX/INDEX_STATISTICS

...

3. Nuevas opciones para nombrar los archivos Dump.

En versiones anteriores cuando se realiza una operación de exportación en paralelo, se debe colocar la variable %U en el nombre de los archivos Dump.  Es necesario para poder diferenciar los nombres de los diferentes archivos generados. %U utiliza una variable numérica que puede ir de 00 a 99.

En Oracle 12c Release 2 tenemos nuevas opciones para poder nombrar los archivos Dumps. Los más utilizados son:

%T o %t: Define la fecha en formato YYYYMMDD

%L o %l: Realiza la misma operación que la variable %U, pero expande su límite hasta 10 dígitos (valor límite: 2147483646)

También podemos utilizar las variables que identifican solo una porción de la fecha actual.

%D o %d :  Define el día en formato DD

%M o %m: Define el mes en formato MM

%Y o %y: Define el año en formato YYYY

Ejecutamos el comando EXPDP y verificamos el nombre de los archivos generados.

expdp system@ORCL DUMPFILE=FULL_DB_%T_%L.dmp LOGFILE=exp_bd_full.log DIRECTORY=EXP_DIR

FULL=Y PARALLEL=4

Export: Release 12.2.0.1.0 - Production on Sun Feb 11 01:24:55 2018

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

Password:

Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

Starting "SYSTEM"."SYS_EXPORT_FULL_01": system/********@ORCL

DUMPFILE=FULL_DB_%T_%L.dmp LOGFILE=exp_bd_full.log DIRECTORY=EXP_DIR

FULL=Y PARALLEL=4

************************************************************************* *****

Dump file set for SYSTEM.SYS_EXPORT_FULL_01 is:

/u01/dump/FULL_DB_20180211_01.dmp

/u01/dump/FULL_DB_20180211_02.dmp

/u01/dump/FULL_DB_20180211_03.dmp

/u01/dump/FULL_DB_20180211_04.dmp

4. Nuevos valores para el parámetro DATA_OPTION con EXPDP

El parámetro DATA_OPTION tiene nuevas opciones tanto para EXPDP como IMPDP. Detallemos primero las opciones para EXPDP.

4.1 GROUP_PARTITION_TABLE_DATA

Indica al Datapump que cargue la información de una tabla particionada en una sola operación en el Dump, en lugar de cargar las particiones por separado.

La definición de la tabla no se toma en cuenta al momento de hacer el importado, lo que permite realizar la tarea mucho más rápido.

Es importante aclarar que la estructura de la tabla se mantiene sin cambios. Esta opción solo permite acelerar la operación de exportación e importación.

Ejecutamos el comando EXPDP sin la opción GROUP_PARTITION_TABLE_DATA y observamos como exporta las particiones de una tabla.

expdp system@ORCL DUMPFILE=SH_SALES2.dmp LOGFILE=exp_SH_SALES2.log

DIRECTORY=EXP_DIR TABLES=SH.SALES

Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT

Processing object type TABLE_EXPORT/TABLE/INDEX/BITMAP_INDEX/INDEX

. . exported "SH"."SALES":"SALES_Q4_2001" rows 2.258 MB 69749

. . exported "SH"."SALES":"SALES_Q3_1999" rows 2.166 MB 67138

. . exported "SH"."SALES":"SALES_Q3_2001" 2.130 MB 65769 rows

. . exported "SH"."SALES":"SALES_Q2_2001" 2.051 MB 63292 rows

. . exported "SH"."SALES":"SALES_Q1_1999" 2.071 MB 64186 rows

. . exported "SH"."SALES":"SALES_Q1_2001" 1.965 MB 60608 rows

. . exported "SH"."SALES":"SALES_Q4_1999" 2.014 MB 62388 rows

. . exported "SH"."SALES":"SALES_Q1_2000" 2.012 MB 62197 rows

. . exported "SH"."SALES":"SALES_Q3_2000" 1.910 MB 58950 rows

. . exported "SH"."SALES":"SALES_Q4_2000" 1.814 MB 55984 rows

Master table "SYSTEM"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded

.

.

elapsed 0 00:00:37

Ejecutamos nuevamente el comando EXPDP, pero con la opción GROUP_PARTITION_TABLE_DATA y observamos que la tabla se exporta de una sola operación y un poco más rápido.

expdp system@ORCL DUMPFILE=SH_SALES.dmp LOGFILE=exp_SH_SALES.log

DIRECTORY=EXP_DIR TABLES=SH.SALES DATA_OPTIONS=GROUP_PARTITION_TABLE_DATA

Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT

Processing object type TABLE_EXPORT/TABLE/INDEX/BITMAP_INDEX/INDEX

. . exported "SH"."SALES" 29.62 MB 918843 rows

Master table "SYSTEM"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded

.

.

elapsed 0 00:00:35

4.2 VERIFY_STREAM_FORMAT

Valida el formato de la data antes que se escriba en los archivos Dumps.  Esto permite asegurarnos que no hay errores en los archivos Dumps generados.

Puede ser útil para archivos Dumps que serán almacenados en discos externos o Cintas.

expdp system@ORCL DUMPFILE=HR_valid.dmp LOGFILE=exp_HR_valid.log

DIRECTORY=EXP_DIR SCHEMAS=HR DATA_OPTIONS=VERIFY_STREAM_FORMAT

Export: Release 12.2.0.1.0 - Production on Sun Feb 11 03:25:56 2018

Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

Starting "SYSTEM"."SYS_EXPORT_SCHEMA_01": system/********@ORCL

DUMPFILE=HR_valid.dmp LOGFILE=exp_HR_valid.log DIRECTORY=EXP_DIR

SCHEMAS=HR DATA_OPTIONS=VERIFY_STREAM_FORMAT

Dump file set for SYSTEM.SYS_EXPORT_SCHEMA_01 is:

/u01/dump/HR_valid.dmp

Job "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully completed at Sun Feb 11

03:26:52 2018 elapsed 0 00:00:53

5. Nuevos valores para el parámetro DATA_OPTION con IMPDP

Ahora veremos las opciones para IMPDP

5.1 TRUST_EXISTING_TABLE_PARTITIONS

La opción TRUST_EXISTING_TABLE_PARTITIONS le indica al Datapump que la estructura de una tabla particionada ya existe en la base de datos destino y es igual a la base de datos origen.  De tal manera, Datapump puede realizar la importación de datos en paralelo en las diferentes particiones. Si la estructura no es igual podría darse un error de carga.

ORA-31693: Table data object "SH"."SALES ":"SALES_Q3_2001" failed to load/unload and is being

skipped due to error:

ORA-29913: error in executing ODCIEXTTABLEFETCH callout

ORA-14401: inserted partition key is outside specified partition

Para explicarlo mejor, revisamos el siguiente ejemplo.

Cuando realizamos operaciones de exportación y importación sobre una tabla particionada, esta operación se realiza de manera serial, por mas que uno le define paralelismo.  El paralelismo ayuda en diferentes tablas, pero no en particiones de una tabla.

Lo podemos observar en la siguiente tarea de exportación con la opción METRICS=Y (una tarea de importación funciona de igual manera)

expdp system@ORCL DUMPFILE=SH_SALES3_%U.dmp LOGFILE=exp_SH_SALES3.log

DIRECTORY=EXP_DIR TABLES=SH.SALES METRICS=Y PARALLEL=2

Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

Starting "SYSTEM"."SYS_EXPORT_TABLE_01": system/********@ORCL

DUMPFILE=SH_SALES3_%U.dmp LOGFILE=exp_SH_SALES3.log DIRECTORY=EXP_DIR

TABLES=SH.SALES METRICS=Y PARALLEL=2

W-1 Startup took 0 seconds

W-2 Startup took 1 seconds

W-1 . . exported "SH"."SALES":"SALES_Q4_2001" 2.258 MB

69749 rows in 0 seconds using direct_path

W-1 . . exported "SH"."SALES":"SALES_Q3_1999" 2.166 MB

67138 rows in 0 seconds using direct_path

W-1 . . exported "SH"."SALES":"SALES_Q3_2001" 2.130 MB

65769 rows in 1 seconds using direct_path

W-1 . . exported "SH"."SALES":"SALES_Q2_2001" 2.051 MB

63292 rows in 0 seconds using direct_path

W-1 . . exported "SH"."SALES":"SALES_Q1_1999" 2.071 MB

64186 rows in 0 seconds using direct_path

W-1 . . exported "SH"."SALES":"SALES_Q1_2001" 1.965 MB

60608 rows in 0 seconds using direct_path

W-1 . . exported "SH"."SALES":"SALES_Q4_1999" 2.014 MB

62388 rows in 0 seconds using direct_path

Ahora, volvemos a ejecutar la importación en la base de datos pero con la opcion TRUST_EXISTING_TABLE_PARTITIONS, además utilizamos la opción TABLE_EXISTS_ACTION = TRUNCATE. Vamos a observar que tanto el proceso W-1 y W-2 realizan la cargar la datos en cada partición.

impdp system@PRD DUMPFILE=SH_SALES3_%U.dmp LOGFILE=imp_SH_SALES3.log

DIRECTORY=IMP_DIR TABLES=SH.SALES METRICS=Y PARALLEL=2

TABLE_EXISTS_ACTION = TRUNCATE

DATA_OPTIONS=TRUST_EXISTING_TABLE_PARTITIONS

Import: Release 12.2.0.1.0 - Production on Sun Feb 11 03:56:03 2018

W-1 Startup took 0 seconds

W-1 Master table "SYSTEM"."SYS_IMPORT_TABLE_01" successfully loaded/unloaded

Starting "SYSTEM"."SYS_IMPORT_TABLE_01": system/********@PRD

DUMPFILE=SH_SALES3_%U.dmp LOGFILE=imp_SH_SALES3.log DIRECTORY=IMP_DIR

TABLES=SH.SALES METRICS=Y PARALLEL=2 TABLE_EXISTS_ACTION=TRUNCATE

DATA_OPTIONS=TRUST_EXISTING_TABLE_PARTITIONS

W-1 Processing object type TABLE_EXPORT/TABLE/TABLE

W-1 Table "SH"."SALES" exists and has been truncated. Data will be loaded but all

dependent metadata will be skipped due to table_exists_action of truncate

W-1 Completed 1 TABLE objects in 4 seconds

W-1 Completed by worker 1 1 TABLE objects in 4 seconds

W-1 Processing object type TABLE_EXPORT/TABLE/TABLE_DATA

W-2 Startup took 6 seconds

W-1 . . imported "SH"."SALES":"SALES_Q4_2001" 2.258 MB

69749 rows in 5 seconds using external_table

W-2 . . imported "SH"."SALES":"SALES_Q1_1999" 2.071 MB

64186 rows in 4 seconds using external_table

W-2 . . imported "SH"."SALES":"SALES_Q1_2001" 1.965 MB

60608 rows in 3 seconds using external_table

W-1 . . imported "SH"."SALES":"SALES_Q3_1999" 2.166 MB

67138 rows in 5 seconds using external_table

W-2 . . imported "SH"."SALES":"SALES_Q4_1999" 2.014 MB

62388 rows in 4 seconds using external_table

W-1 . . imported "SH"."SALES":"SALES_Q3_2001" 2.130 MB

65769 rows in 3 seconds using external_table

W-2 . . imported "SH"."SALES":"SALES_Q1_2000" 2.012 MB

62197 rows in 2 seconds using external_table

W-2 . . imported "SH"."SALES":"SALES_Q3_2000" 1.910 MB

58950 rows in 3 seconds using external_table

W-1 . . imported "SH"."SALES":"SALES_Q2_2001" 2.051 MB

63292 rows in 5 seconds using external_table

W-2 . . imported "SH"."SALES":"SALES_Q4_2000" 1.814 MB

5.2  VALIDATE_TABLE_DATA

Durante las tareas de importación; Datapump valida los campos de Numero y Fecha de una tabla antes de realizar la carga de datos.  Ante algún error podría devolver un mensaje de error.

ORA-02374: conversion error loading table "HR"."EMPLOYEES"

ORA-12899: value too large for column C1 (actual: 500, maximum: 498)

ORA-02372: data for row: C8 : '

Esta opción podría servir de mucho cuando estamos haciendo migraciones de base de datos con diferente CHARACTER SET.

impdp system@PRD DUMPFILE=HR_schema.dmp LOGFILE=imp_HR1.log

DIRECTORY=IMP_DIR SCHEMAS=HR DATA_OPTIONS=VALIDATE_TABLE_DATA

Import: Release 12.2.0.1.0 - Production on Sun Feb 11 08:31:57 2018

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

6. Nuevas opciones para NETWORK_LINK

El parámetro NETWORK_LINK es un parámetro bastante utilizado porque nos permite realizar operaciones de importación sin necesidad de archivos Dumps.  Lastimosamente, tiene sus limitaciones.   En Oracle 12c reléase 2 algunas de esas limitaciones han sido superadas.  Entre ellas tenemos:

Soporte de Tipos de datos LONG. Una tabla con este tipo de dato, no utiliza el procedimiento común de INSERT AS SELECT sino el procedimiento OCIDirPathUnload.

El parámetro ACCESS_METHOD ya puede ser utilizado junto con NETWORK_LINK

Compresión de datos por la red con los parámetros DATA_OPTIONS = ENABLE_NETWORK_COMPRESSION y ACCESS_METHOD = DIRECT_PATH. La compresión se realiza en la base de datos origen y luego se envía por la red. Finalmente, la data se descomprime al llegar a la base de datos destino.

impdp system@PRD LOGFILE=imp_SH.log SCHEMAS=SH NETWORK_LINK=orcl

DATA_OPTIONS=ENABLE_NETWORK_COMPRESSION ACCESS_METHOD=DIRECT_PATH

Import: Release 12.2.0.1.0 - Production on Sun Feb 11 08:31:57 2018

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

7. Cambio de nombre de directorio para datafiles

Cuando deseamos cambiar el nombre a un Datafile durante una importación, utilizamos la opción REMAP_DATAFILE, pero si es una gran cantidad de archivos, es difícil realizar el cambio de nombre uno a uno.

En Oracle 12c reléase 2 podemos utilizar la opción REMAP_DIRECTORY para poder cambiar el nombre de todo un grupo de datafiles que se encuentran en un directorio especifico. Los parámetros REMAP_DATAFILE y REMAP_DIRECTORY no pueden ser definidos en un mismo comando Datapump

Ejecutamos una exportación del tablespace USERS

expdp system@ORCL DUMPFILE=USER_tbs.dmp LOGFILE=exp_USER_tbs.log

DIRECTORY=EXP_DIR TABLESPACES=USERS

Realizamos la importación en la base de datos destino con las opciones

REMAP_TABLESPACE para cambiar el nombre al tablespace

REMAP_DIRECTORY para crear los datafiles en otro directorio.

impdp system@PRD DUMPFILE=USER_tbs.dmp LOGFILE=imp_USER_tbs.log

DIRECTORY=IMP_DIR REMAP_TABLESPACE=USERS:USERS2

REMAP_DIRECTORY="'+DG_DATA':'+DG_FRA'"

Espero que el artículo sea de agrado y utilidad.

Ing. Jorge Zorrilla. Es un especialista IT en tecnología Oracle e instructor de cursos oficiales de certificación Oracle. Con más de 9 años de experiencia en soluciones con tecnología Oracle como Alta Disponibilidad, Continuidad de negocios y Modernización de la infraestructura. Fue uno de los primeros especialistas en Latinoamérica con

la certificación OCP Oracle12c y Oracle Maximum Availability 12c.

En la actualidad Jorge Zorrilla se dedica a mantener relaciones estratégicas con sus clientes en Perú mediante su empresa IDB consulting.

Este artículo ha sido revisado por el equipo de productos Oracle y se encuentra en cumplimiento de las normas y prácticas para el uso de los productos Oracle.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值