Dois novos recursos do Oracle Data Pump 12c

Por Alex Zaballa
Postado em dezembro 2013

O que é o Oracle Data Pump ?

Oracle Data Pump é uma alternativa nas operações de exportação/importação dos dados, introduzido na versão 10G do banco de dados Oracle, mais rápida e flexível aos tradicionais EXP e IMP, que foram muito utilizados nas versões anteriores do Oracle Database.

Assim como o banco de dados evoluiu com a implementação de diversas melhorias, esta ferramenta também foi aperfeiçoada e segue abaixo a descrição de duas melhorias introduzidas na versão 12c:

Transport view as table

O Data Pump irá exportar uma tabela com os dados obtidos através da view. Para usar este recurso, você deverá utilizar o parâmetro VIEWS_AS_TABLES.

View do esquema HR que será utilizada para os testes:

CREATE OR REPLACE FORCE VIEW HR.EMP_DETAILS_VIEW
AS
   SELECT e.employee_id,
          e.job_id,
          e.manager_id,
          e.department_id,
          d.location_id,
          l.country_id,
          e.first_name,
          e.last_name,
          e.salary,
          e.commission_pct,
          d.department_name,
          j.job_title,
          l.city,
          l.state_province,
          c.country_name,
          r.region_name
     FROM employees e,
          departments d,
          jobs j,
          locations l,
          countries c,
          regions r
    WHERE e.department_id = d.department_id
          AND d.location_id = l.location_id
          AND l.country_id = c.country_id
          AND c.region_id = r.region_id
          AND j.job_id = e.job_id

Criação do diretório que será utilizado para gerar o arquivo:

create directory dpdir as '/home/oracle/data_pump';

Export utilizando o parâmetro novo:

[oracle@oracle01 admin]$ expdp alex_zaballa@pdb1 views_as_tables=HR.EMP_DETAILS_VIEW 
directory=dpdir dumpfile=emp_view.dmp logfile=emp_view_export.log

Export: Release 12.1.0.1.0 - Production on Mon Oct 7 14:39:18 2013

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

Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Advanced Analytics
and Real Application Testing options
Starting "ALEX_ZABALLA"."SYS_EXPORT_TABLE_01":  alex_zaballa/********@pdb1 
views_as_tables=HR.EMP_DETAILS_VIEW 
directory=dpdir dumpfile=emp_view.dmp logfile=emp_view_export.log 
Estimate in progress using BLOCKS method...
Processing object type TABLE_EXPORT/VIEWS_AS_TABLES/TABLE_DATA
Total estimation using BLOCKS method: 16 KB
Processing object type TABLE_EXPORT/VIEWS_AS_TABLES/TABLE
. . exported "HR"."EMP_DETAILS_VIEW"                     24.56 KB     106 rows
Master table "ALEX_ZABALLA"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded
******************************************************************************
Dump file set for ALEX_ZABALLA.SYS_EXPORT_TABLE_01 is:
  /home/oracle/data_pump/emp_view.dmp
Job "ALEX_ZABALLA"."SYS_EXPORT_TABLE_01" successfully completed at Mon Oct 7 14:40:02 2013 
elapsed 0 00:00:33

Como é possível observar, foram exportadas 106 linhas.

Agora vamos importar a tabela gerada para outro owner:

[oracle@oracle01 admin]$ impdp alex_zaballa@pdb1 remap_schema=hr:alex_zaballa directory=dpdir 
dumpfile=emp_view.dmp logfile=emp_view_import.log

Import: Release 12.1.0.1.0 - Production on Mon Oct 7 14:46:44 2013

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

Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Advanced Analytics
and Real Application Testing options
Master table "ALEX_ZABALLA"."SYS_IMPORT_FULL_01" successfully loaded/unloaded
Starting "ALEX_ZABALLA"."SYS_IMPORT_FULL_01":  alex_zaballa/********@pdb1 remap_schema=hr:alex_zaballa 
directory=dpdir dumpfile=emp_view.dmp logfile=emp_view_import.log 
Processing object type TABLE_EXPORT/VIEWS_AS_TABLES/TABLE
Processing object type TABLE_EXPORT/VIEWS_AS_TABLES/TABLE_DATA
. . imported "ALEX_ZABALLA"."EMP_DETAILS_VIEW"           24.56 KB     106 rows
Job "ALEX_ZABALLA"."SYS_IMPORT_FULL_01" successfully completed at Mon Oct 7 14:47:05 2013 
elapsed 0 00:00:11

Verificando os dados:

SQL> show user
USER is "ALEX_ZABALLA"

SQL> select * from tab;

TNAME			   TABTYPE   CLUSTERID
------------------------------ -------   ----------
EMP_DETAILS_VIEW	             TABLE

SQL> select count(*) from emp_details_view;
  COUNT(*)
----------
       106

Turn off redo log generation

No IMPDP, foi introduzida a opção de reduzir a geração de redo durante uma importação através da opção DISABLE_ARCHIVE_LOGGING da cláusula TRANSFORM.

Este parâmetro pode ser setado de forma global, para tabelas ou para índices:

transform=disable_archive_logging:Y
transform=disable_archive_logging:Y:table
transform=disable_archive_logging:Y:index

Obviamente que este parâmetro não surtirá efeito caso o banco esteja no modo FORCE LOGGING.

[oracle@oracle01 admin]$ impdp alex_zaballa@pdb1 remap_schema=hr:alex_zaballa directory=dpdir 
dumpfile=emp_view.dmp logfile=emp_view_import2.log TRANSFORM=DISABLE_ARCHIVE_LOGGING:Y

Import: Release 12.1.0.1.0 - Production on Mon Oct 7 15:16:46 2013

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

Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Advanced Analytics
and Real Application Testing options
Master table "ALEX_ZABALLA"."SYS_IMPORT_FULL_01" successfully loaded/unloaded
Starting "ALEX_ZABALLA"."SYS_IMPORT_FULL_01":  alex_zaballa/********@pdb1 remap_schema=hr:alex_zaballa
 directory=dpdir dumpfile=emp_view.dmp logfile=emp_view_import2.log TRANSFORM=DISABLE_ARCHIVE_LOGGING:Y 
Processing object type TABLE_EXPORT/VIEWS_AS_TABLES/TABLE
Processing object type TABLE_EXPORT/VIEWS_AS_TABLES/TABLE_DATA
. . imported "ALEX_ZABALLA"."EMP_DETAILS_VIEW"           24.56 KB     106 rows
Job "ALEX_ZABALLA"."SYS_IMPORT_FULL_01" successfully completed at Mon Oct 7 15:17:05 2013 
elapsed 0 00:00:12

 


Alex Zaballa é DBA e trabalha com Oracle há 14 anos, especialista em Banco de Dados Oracle e formado em Análise de Sistemas. Com sólidos conhecimentos em Banco de Dados e Sistemas operacionais, é certificado OCM Database 11G, bem como outras 110 certificações em produtos da Oracle.
Trabalha desde 2007 para a Jupiter em Angola, alocado em um projeto no Ministério das Finanças.