Pular para o conteúdo

Visão geral das funcionalidades do Oracle Data Pump: Exportação e importação de dados e metadados.

Oracle Datapump – Conceito e Aplicação

Este artigo fornece uma visão geral das principais funcionalidades do Oracle Data Pump. Conhecido como Data Pump, surgiu a partir do Oracle 10g, permite mover dados e metadados (estrutura dos dados) de um banco de dados para outro com mais agilidade.

O DBA considera que o export é um backup lógico do banco de dados. Definimos backup lógico como a leitura de um conjunto de registros que são escritos para um ou mais arquivos. O import lê os dados contidos no(s) arquivo(s) e insere no banco de dados.

O Data Pump gerencia os seguintes tipos de arquivos: 

  • Dump: Arquivos que contém os dados e metadados que são movidos.
  • Log: Arquivos de log que grava as mensagens associadas ao job em execução.
  • SQL: Todos os comandos DDL gravados em um arquivo SQL.

Os arquivos Log e SQL sobrescrevem arquivos pré-existentes. Os arquivos Dump, utiliza-se o parâmetro REUSE_DUMPFILES=Y para especificar que o arquivo existente será substituído.

Arquitetura do Oracle Data Pump

O data pump é composto de três partes distintas:

  • Os utilitários de linha de comando expdp e impdp. Ao digitar os comandos expdp e impdp na linha de comando do seu sistema operacional, o Oracle chama implicitamente a package DBMS_DATAPUMP.
  • O pacote PL/SQL DBMS_DATAPUMP, também conhecida como Data Pump API. Esta API fornece alta velocidade na execução do export/import. Abaixo um exemplo de utilização da API para fazer export de um esquema:
SET SERVEROUTPUT ON SIZE 1000000

DECLARE

l_dp_handle       NUMBER;

l_last_job_state  VARCHAR2(30) := 'UNDEFINED';

l_job_state       VARCHAR2(30) := 'UNDEFINED';

l_sts             KU$_STATUS;

BEGIN

l_dp_handle := DBMS_DATAPUMP.open(
operation   => 'EXPORT',
job_mode    => 'SCHEMA',
remote_link => NULL,
job_name    => 'EMP_EXPORT',
version     => 'LATEST');

DBMS_DATAPUMP.add_file(
handle    => l_dp_handle,
filename  => 'SCOTT.dmp',
directory => 'TEST_DIR');

DBMS_DATAPUMP.add_file(
handle    => l_dp_handle,
filename  => 'SCOTT.log',
directory => 'TEST_DIR',
filetype  => DBMS_DATAPUMP.KU$_FILE_TYPE_LOG_FILE);

DBMS_DATAPUMP.metadata_filter(
handle => l_dp_handle,
name   => 'SCHEMA_EXPR',
value  => '= ''SCOTT''');

DBMS_DATAPUMP.start_job(l_dp_handle);

DBMS_DATAPUMP.detach(l_dp_handle);

END;
/

Uma vez que o processo foi iniciado, o status dele pode ser verificado através da query:

system@certifbd> select * from dba_datapump_jobs;

  • O pacote PL/SQL DBMS_METADATA, também conhecida como Metadata API. Armazena definições de objetos em XML, é usado por todos os processos de carga e descarga dos metadados.

O Data Pump possui mecanismos para aumentar o desempenho dos jobs, o paralelismo.

O paralelismo é um job de export ou import sendo executado com o máximo de aproveitamento dos recursos do servidor (CPU, Memória, Processador).

Em geral, o grau de paralelismo deve ser definido para não mais que duas vezes o número de CPU em uma instância.

O paralelismo esta disponível apenas na versão Enterprise Edition, na versão Standard Edition o valor do parâmetro PARALLEL é igual a 1.

O usuário executor do expdp e impdp precisa de privilégio nas roles DATAPUMP_EXP_FULL_DATABASE e DATAPUMP_IMP_FULL_DATABASE. As roles são criadas automaticamente na instalação do Oracle e criação do banco de dados, elas permitem que o usuário faça export e import de objetos pertencentes a outros esquemas e permite monitorar os processos iniciados por outro usuário. Essas roles são poderosas, o DBA deve usá-las com muito cuidado e avaliar se um usuário pode ter acesso a elas.

Antes de iniciar um Export, deve-se especificar em qual diretório no servidor de banco de dados será mantido os arquivos de Log, Dump e/ou SQL. No exemplo abaixo, criamos o diretório dpump_dir1 que aponta para o diretório físico /usr/apps/datafiles. Depois indicamos que o usuário HR terá permissão para ler e escrever neste diretório.

Observação: É recomendado que somente o DBA execute os comandos.

SQL> CREATE DIRECTORY dpump_dir1 AS '/usr/apps/datafiles';

SQL> GRANT READ, WRITE ON DIRECTORY dpump_dir1 TO hr;

Consultando a view ALL_DIRECTORIES podemos visualizar os diretórios existentes.

Se o diretório não for criado ou o usuário não tiver privilégio de leitura/gravação, o Oracle emitirá uma mensagem de erro.

O data pump não escreve no diretório local da máquina cliente, pois é uma tecnologia baseada em servidor.

Quando você move os dados do banco de dados, muitas vezes é necessário informar ao Oracle que estes dados serão armazenados em esquemas, tablespaces ou tabelas diferentes. Para isso utilizam-se os parâmetros abaixo:

REMAP_TABLE=[schema.]old_tablename[.partition]:new_tablename

REMAP_DATA=[schema.]tablename.column_name:[schema.]pkg.function

REMAP_TABLESPACE=source_tablespace:target_tablespace

REMAP_SCHEMA=source_schema:target_schema

REMAP_DATAFILE=source_datafile:target_datafile

Você iniciou um export e durante a execução descobriu que o espaço em disco no servidor quase chegou ao fim, logo você adiciona mais arquivos utilizando o comando ADD_FILE. No Import, todos os arquivos devem ser especificados no momento que o job é startado.

Help

O comando HELP=Y mostra todos os parâmetros disponíveis.

C:\Users\Administrator>expdp help=y

Export: Release 11.2.0.1.0 - Production on Sun May 19 11:34:32 2013

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
The Data Pump export utility provides a mechanism for transferring data objects
between Oracle databases. The utility is invoked with the following command:

Example: expdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp

You can control how Export runs by entering the 'expdp' command followed
by various parameters. To specify parameters, you use keywords:

Format:  expdp KEYWORD=value or KEYWORD=(value1,value2,...,valueN)

Example: expdp scott/tiger DUMPFILE=scott.dmp DIRECTORY=dmpdir SCHEMAS=scott
or TABLES=(T1:P1,T1:P2), if T1 is partitioned table

------------------------------------------------------------------------------
ATTACH

Attach to an existing job.

For example, ATTACH=job_name.

COMPRESSION

Reduce the size of a dump file.

Valid keyword values are: ALL, DATA_ONLY, [METADATA_ONLY] and NONE.

CONTENT

Specifies data to unload.

Valid keyword values are: [ALL], DATA_ONLY and METADATA_ONLY.

DIRECTORY

Directory object to be used for dump and log files.

DUMPFILE

Specify list of destination dump file names [expdat.dmp].

For example, DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp.

C:\Users\Administrator>impdp help=y

Import: Release 11.2.0.1.0 - Production on Sun May 19 11:38:06 2013

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
The Data Pump Import utility provides a mechanism for transferring data objects
between Oracle databases. The utility is invoked with the following command:

Example: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp

You can control how Import runs by entering the 'impdp' command followed
by various parameters. To specify parameters, you use keywords:

Format:  impdp KEYWORD=value or KEYWORD=(value1,value2,...,valueN)

Example: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp

------------------------------------------------------------------------------
ATTACH

Attach to an existing job.

For example, ATTACH=job_name.

CONTENT

Specifies data to load.

Valid keywords are: [ALL], DATA_ONLY and METADATA_ONLY.

DATA_OPTIONS

Data layer option flags.

Export/Import de tabelas

Para especificar as tabelas que serão exportadas utilizamos o parâmetro TABLES.

Segue um exemplo da sintaxe.

expdp system/Oracle2013@certifbd tables=EMP,DEPT directory=TEST_DIR dumpfile=EMP_DEPT.dmp logfile=expdpEMP_DEPT.log

impdp system/Oracle2013@certifbd tables=EMP,DEPT directory=TEST_DIR dumpfile=EMP_DEPT.dmp logfile=impdpEMP_DEPT.log

O parâmetro TABLE_EXISTS_ACTION=APPEND permite o import dos dados nas tabelas que já existem.

Exemplo do resultado de um export:

;;;
Export: Release 10.1.0.2.0 - Production on Tuesday, 23 March, 2004 10:34
Copyright (c) 2003, 2007, Oracle.  All rights reserved.
;;;

Connected to: Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

Starting "SCOTT"."SYS_EXPORT_TABLE_01":  scott/******** tables=EMP,DEPT directory=TEST_DIR dumpfile=EMP_DEPT.dmp logfile=expdpEMP_DEPT.log

Estimate in progress using BLOCKS method...

Processing object type TABLE_EXPORT/TABLE/TABLE_DATA

Total estimation using BLOCKS method: 128 KB

Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX
Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS

. . exported "SCOTT"."DEPT"                         5.656 KB       4 rows

. . exported "SCOTT"."EMP"                          7.820 KB      14 rows

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

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

Dump file set for SCOTT.SYS_EXPORT_TABLE_01 is:
/tmp/EMP_DEPT.dmp

Job "SCOTT"."SYS_EXPORT_TABLE_01" successfully completed at 10:35

Exemplo do resultado de um import:
;;;
Import: Release 10.1.0.2.0 - Production on Tuesday, 23 March, 2004 10:34
Copyright (c) 2003, Oracle.  All rights reserved.
;;;

Connected to: Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production
With the Partitioning, OLAP and Data Mining options

Master table "SCOTT"."SYS_IMPORT_TABLE_01" successfully loaded/unloaded

Starting "SCOTT"."SYS_IMPORT_TABLE_01":  scott/********@db10g tables=EMP,DEPT directory=TEST_DIR dumpfile=EMP_DEPT.dmp logfile=impdpEMP_DEPT.log

Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/TBL_TABLE_DATA/TABLE/TABLE_DATA
. . imported "SCOTT"."DEPT"                              5.656 KB       4 rows
. . imported "SCOTT"."EMP"                               7.820 KB      14 rows
Processing object type TABLE_EXPORT/TABLE/INDEX/INDEX
Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT

Job "SCOTT"."SYS_IMPORT_TABLE_01" successfully completed at 10:35

Export/Import de esquemas

O parâmetro OWNER foi substituído pelo parâmetro SCHEMAS que é usado para especificar os esquemas a serem exportados. Segue a sintaxe do comando:

expdp scott/tiger@db10g schemas=SCOTT directory=TEST_DIR dumpfile=SCOTT.dmp logfile=expdpSCOTT.log

impdp scott/tiger@db10g schemas=SCOTT directory=TEST_DIR dumpfile=SCOTT.dmp logfile=impdpSCOTT.log

Exemplo do resultado de um export:

;;;
Export: Release 10.1.0.2.0 - Production on Tuesday, 23 March, 2004 10:34
Copyright (c) 2003, 2007, Oracle.  All rights reserved.
;;;

Connected to: Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

Starting "SCOTT"."SYS_EXPORT_SCHEMA_01":  scott/********@db10g schemas=SCOTT directory=TEST_DIR dumpfile=SCOTT.dmp logfile=expdpSCOTT.log

Estimate in progress using BLOCKS method...

Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA

Total estimation using BLOCKS method: 192 KB

Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/TABLE/TABLE
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/CONSTRAINT/REF_CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. . exported "SCOTT"."DEPT"                              5.656 KB       4 rows
. . exported "SCOTT"."EMP"                               7.820 KB      14 rows
. . exported "SCOTT"."SALGRADE"                          5.585 KB       5 rows
. . exported "SCOTT"."BONUS"                                 0 KB       0 rows

Master table "SCOTT"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded

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

Dump file set for SCOTT.SYS_EXPORT_SCHEMA_01 is:

/tmp/SCOTT.dmp

Job "SCOTT"."SYS_EXPORT_SCHEMA_01" successfully completed at 10:35

Exemplo do resultado de um import:

;;;
Import: Release 10.1.0.2.0 - Production on Tuesday, 23 March, 2004 10:34
Copyright (c) 2003, Oracle.  All rights reserved.
;;;

Connected to: Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production
With the Partitioning, OLAP and Data Mining options

Master table "SCOTT"."SYS_IMPORT_SCHEMA_01" successfully loaded/unloaded

Starting "SCOTT"."SYS_IMPORT_SCHEMA_01":  scott/********@db10g schemas=SCOTT directory=TEST_DIR dumpfile=SCOTT.dmp logfile=impdpSCOTT.log

Processing object type SCHEMA_EXPORT/SE_PRE_SCHEMA_PROCOBJACT/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
. . imported "SCOTT"."DEPT"                              5.656 KB       4 rows
. . imported "SCOTT"."EMP"                               7.820 KB      14 rows
. . imported "SCOTT"."SALGRADE"                          5.585 KB       5 rows
. . imported "SCOTT"."BONUS"                                 0 KB       0 rows
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/STATISTICS/TABLE_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT

Job "SCOTT"."SYS_IMPORT_SCHEMA_01" successfully completed at 10:35

Export/Import de banco de dados

O parâmetro FULL indica que um export completo do banco de dados é solicitado.

Segue a sintaxe do export e import full do banco de dados.

expdp system/password@db10g full=Y directory=TEST_DIR dumpfile=DB10G.dmp logfile=expdpDB10G.log

impdp system/password@db10g full=Y directory=TEST_DIR dumpfile=DB10G.dmp logfile=impdpDB10G.log

Exemplo do resultado do export full:

;;;
Export: Release 10.1.0.2.0 - Production on Tuesday, 23 March, 2004 10:34
Copyright (c) 2003, 2007, Oracle.  All rights reserved.
;;;

Connected to: Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

Starting "SYSTEM"."SYS_EXPORT_FULL_01":  system/********@db10g full=Y directory=TEST_DIR dumpfile=DB10G.dmp logfile=expdpDB10G.log

Estimate in progress using BLOCKS method...

Processing object type DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA

Total estimation using BLOCKS method: 78.62 MB

Processing object type DATABASE_EXPORT/TABLESPACE
Processing object type DATABASE_EXPORT/PROFILE
Processing object type DATABASE_EXPORT/SYS_USER/USER
Processing object type DATABASE_EXPORT/SCHEMA/USER
Processing object type DATABASE_EXPORT/ROLE
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/POST_TABLE_ACTION
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/TRIGGER
Processing object type DATABASE_EXPORT/SCHEMA/VIEW/TRIGGER
Processing object type DATABASE_EXPORT/SCHEMA/JOB
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/POST_INSTANCE/PROCACT_INSTANCE
Processing object type DATABASE_EXPORT/SCHEMA/TABLE/POST_INSTANCE/PROCDEPOBJ
Processing object type DATABASE_EXPORT/SCHEMA/POST_SCHEMA/PROCOBJ
Processing object type DATABASE_EXPORT/SCHEMA/POST_SCHEMA/PROCACT_SCHEMA
. . exported "SYSMAN"."MGMT_SEVERITY"               4.744 MB   15276 rows
. . exported "SYSMAN"."MGMT_METRICS_1HOUR"          2.934 MB   39250 rows
. . exported "SYSMAN"."MGMT_METRICS_RAW"            2.404 MB   41870 rows
. . exported "SYSMAN"."MGMT_METRICS_1DAY"           624.6 KB    7596 rows
. . exported "SYSMAN"."MGMT_METRICS"                534.2 KB    2582 rows
. . exported "SYSMAN"."MGMT_STRING_METRIC_HISTORY"  558.8 KB    5246 rows
. . exported "SYSTEM"."TOOL__LRAW"                      0 KB       0 rows
. . exported "SYSTEM"."TOOL__LTEXT"                     0 KB       0 rows
. . exported "SYSTEM"."TOOL__MODULE"                    0 KB       0 rows
. . exported "SYSTEM"."TOOL__PLSQL"                     0 KB       0 rows
. . exported "TSMSYS"."SRS$"                            0 KB       0 rows

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

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

Dump file set for SYSTEM.SYS_EXPORT_FULL_01 is:

/tmp/DB10G.dmp

Job "SYSTEM"."SYS_EXPORT_FULL_01" successfully completed at 10:35

INCLUDE e EXCLUDE

Usando os parâmetros EXCLUDE e INCLUDE, podemos escolher quais tipos de objetos exportar e importar. O exemplo a seguir exporta todos os objetos do esquema HR exceto views, packages e functions.

expdp hr DIRECTORY=dpump_dir1 DUMPFILE=hr_exclude.dmp EXCLUDE=VIEW,PACKAGE,FUNCTION

O próximo exemplo exporta todas as tabelas (e seus objetos dependentes) do esquema HR.

expdp hr INCLUDE=TABLE DUMPFILE=dpump_dir1:exp_inc.dmp NOLOGFILE=YES

Vários objetos podem ser referenciados em uma instrução usando os operadores LIKE e IN.

EXCLUDE=SCHEMA:"LIKE 'SYS%'"

EXCLUDE=SCHEMA:"IN ('OUTLN','SYSTEM','SYSMAN','FLOWS_FILES','APEX_030200','APEX_PUBLIC_USER','ANONYMOUS')"

Export/Import na Rede (NETWORK_LINK)

O parâmetro NETWORK_LINK indica que um dblink será usado como fonte para um export/import. O seguinte dblink será usado para demonstrar a sua utilização.

CONN / AS SYSDBA

GRANT CREATE DATABASE LINK TO test;

CONN test/test

CREATE DATABASE LINK remote_scott CONNECT TO scott IDENTIFIED BY tiger USING 'DEV';

O valor especificado na cláusula USING precisa estar definido no arquivo TNSNAMES.ORA.

No exemplo a seguir, será executado o export da tabela EMP localizada no banco de dados remoto “DEV”. A conexão com o banco será feito com o usuário “scott” e senha “tiger”.

O arquivo “.dmp” será criado no servidor local ao invés do servidor remoto.

Tanto o usuário “scott” quanto o usuário “test” precisam ter acesso a role EXP_FULL_DATABASE.

expdp test/test@db10g tables=SCOTT.EMP network_link=REMOTE_SCOTT directory=TEST_DIR dumpfile=EMP.dmp logfile=expdpEMP.log

No import também é necessário especificar o parâmetro NETWORK_LINK=REMOTE_SCOTT. A diferença é que a tabela EMP será importada diretamente do servidor remoto para o servidor local.

O parâmetro DUMPFILE não é utilizado porque o import não gera arquivos “.dmp”. A criação do diretório é necessária para que o arquivo log seja gerado durante a operação.

Tanto o usuário “test” quanto o usuário “scott” precisam ter acesso a role IMP_FULL_DATABASE.

impdp test/test@db10g tables=SCOTT.EMP network_link=REMOTE_SCOTT directory=TEST_DIR logfile=impdpSCOTT.log remap_schema=SCOTT:TEST

Tabelas Externas

A Oracle incorporou suporte ao data pump dentro de tabelas externas.

CREATE TABLE emp_xt
ORGANIZATION EXTERNAL
(
TYPE ORACLE_DATAPUMP
DEFAULT DIRECTORY test_dir
LOCATION ('emp_xt.dmp')
)
AS SELECT * FROM emp;
SELECT * FROM emp_xt;
DROP TABLE emp_xt;

CREATE TABLE emp_xt (
EMPNO     NUMBER(4),
ENAME     VARCHAR2(10),
JOB       VARCHAR2(9),
MGR       NUMBER(4),
HIREDATE  DATE,
SAL       NUMBER(7,2),
COMM      NUMBER(7,2),
DEPTNO    NUMBER(2))
ORGANIZATION EXTERNAL (
TYPE ORACLE_DATAPUMP
DEFAULT DIRECTORY test_dir
LOCATION ('emp_xt.dmp')
);

SELECT * FROM emp_xt;

Export utilizando Flashback

O exp utiliza o parâmetro CONSISTENT=Y para indicar que o export deve ser consistente num determinado ponto no tempo. Por default o utilitário expdp é consistente apenas em tabelas.

Se você quer que todas as tabelas no export fiquem consistentes no mesmo ponto no tempo, utilize os parâmetros FLASHBACK_SCN ou FLASHBACK_TIME.

O valor do parâmetro FLASHBACK_TIME é convertido para o SCN mais próximo para o tempo especificado.

expdp ..... flashback_time=systimestamp

# In parameter file.

flashback_time="to_timestamp('09-05-2011 09:00:00', 'DD-MM-YYYY HH24:MI:SS')"

# Escaped on command line.

expdp ..... flashback_time=\"to_timestamp\(\'09-05-2011 09:00:00\', \'DD-MM-YYYY HH24:MI:SS\'\)\"

Para fazer um export consistente especificando um tempo passado ou SCN é necessário possuir espaço suficiente na UNDO para manter a leitura consistente dos dados. Execute a query a seguir para obter o SCN desejado.

SELECT current_scn FROM v$database;

SELECT DBMS_FLASHBACK.get_system_change_number FROM dual;

SELECT TIMESTAMP_TO_SCN(SYSTIMESTAMP) FROM dual;

Utilize o SCN no parâmetro FLASHBACK_SCN.

expdp ..... flashback_scn=5474280

As querys a seguir podem ser úteis para a conversão entre TIMESTAMP e SCN.

SELECT TIMESTAMP_TO_SCN(SYSTIMESTAMP) FROM dual;

SELECT SCN_TO_TIMESTAMP(5474751) FROM dual;

COMPRESSION

Este parâmetro permite comprimir o export. Além disso, o parâmetro de inicialização COMPATIBLE deve ser definido como “11.0.0” ou superior exceto para a opção METADATA_ONLY que esta disponível com COMPATIBLE=10.2.

A sintaxe do comando é:

COMPRESSION={ALL | DATA_ONLY | METADATA_ONLY | NONE}

EXCRYPTION e ENCRYPTION_PASSWORD

Esses parâmetros estão disponíveis somente na versão Enterprise Edition. Além disso, o parâmetro de inicialização da instância COMPATIBLE deve ser definido como “11.0.0” ou superior.

ENCRYPTION = {ALL | DATA_ONLY | ENCRYPTED_COLUMNS_ONLY | METADATA_ONLY | NONE}

ALL: Metadados e dados são criptografados.

DATA_ONLY: Apenas os dados são criptografados.

ENCRYPTED_COLUMNS_ONLY: Apenas colunas criptografadas são escritas para o dump, em um formato de criptografia.

METADATA_ONLY: Somente os metadados são criptografados.

NONE: Nada é criptografado.

expdp test/test schemas=TEST directory=TEST_DIR dumpfile=TEST.dmp logfile=expdpTEST.log encryption=all encryption_password=password

O valor default é NONE.

ENCRYPTION_ALGORITHM

Define o algoritmo de criptografia a ser utilizado durante o export. O valor default é “AES128”. Exemplo:

expdp test/test schemas=TEST directory=TEST_DIR dumpfile=TEST.dmp logfile=expdpTEST.log encryption=all encryption_password=password encryption_algorithm=AES256

ENCRYPTION_MODE

Especifica o tipo de segurança usado durante o export e import.

ENCRYPTION_MODE = { DUAL | PASSWORD | TRANSPARENT }

expdp test/test schemas=TEST directory=TEST_DIR dumpfile=TEST.dmp logfile=expdpTEST.log encryption=all encryption_password=password encryption_mode=password

TRANSPORTABLE

O parâmetro TRANSPORTABLE é similar ao parâmetro TRANSPORT_TABLESPACES da versão 10g.

TRANSPORTABLE = {ALWAYS | NEVER}

Algumas considerações:

  • Este parâmetro é aplicável somente no export de tabelas.
  • O usuário executor do export deve ter o privilégio EXP_FULL_DATABASE.
  • As tablespaces que contém os objetos fonte devem estar em read-only.
  • O parâmetro de inicialização COMPATIBLE deve ser definido como 11.0.0 ou superior.
  • A tablespace default do usuário executor do export não deve ser a mesma que qualquer uma das tablespaces que serão movidas.

PARTITION_OPTIONS

O parâmetro PARTITION_OPTIONS determina como as partições serão tratadas durante o export e import. A sintaxe é mostrada abaixo.

PARTITION_OPTIONS={none | departition | merge}
expdp test/test directory=TEST_DIR dumpfile=TEST.dmp logfile=expdpTEST.log tables=test.tab1  partition_options=merge

NONE: As partições são criadas exatamente como elas foram exportadas.

DEPARTITION: Cada partição e subpartição são criadas como uma tabela separada.

MERGE: Combina todas as partições em uma única tabela.

DATA_OPTIONS

SKIP_CONSTRAINT_ERRORS

Durante o import usando o método de acesso de tabela externa, este parâmetro permite que os erros de violação de constraints sejam ignorados e o import não é abortado. O problema dessa opção é a integridade dos dados ficar prejudicada.

DATA_OPTIONS=SKIP_CONSTRAINT_ERRORS

impdp test/test tables=TAB1 directory=TEST_DIR dumpfile=TEST.dmp logfile=impdpTEST.log data_options=SKIP_CONSTRAINT_ERRORS

XML_CLOBS

Definindo o parâmetro DATA_OPTIONS=XML_CLOBS especifica que todas as colunas XMLTYPE devem ser exportadas como objetos CLOB descompactados.

expdp test/test tables=TAB1 directory=TEST_DIR dumpfile=TEST.dmp logfile=expdpTEST.log  version=11.1 data_options=XML_CLOBS

O Que Acontece Durante A Execução Do Data Pump?

Para todo export e import, um processo master é criado.

O processo master controla o job inteiro, incluindo a comunicação com as máquinas clientes, criando e controlando um pool de processos e executando operações de registro.

Enquanto os dados e metadados são transferidos, uma tabela master é usada para rastrear o progresso do job.

Durante o export, a tabela master grava a localização dos objetos do banco de dados dentro de um conjunto de arquivos (dump files). O Export cria e mantém a tabela master até a execução do job. No final da execução, o conteúdo da tabela é gravado em um arquivo no conjunto de arquivo (dump file). Durante o import, a tabela master é carregada a partir de um conjunto de arquivos e é usada para controlar a sequência das operações, para localizar objetos que precisam ser importados na base de dados de destino.

A tabela master é criada no esquema do usuário que executa o processo. O nome da tabela master é o mesmo do job que a criou, portanto, não é recomendado nomear explicitamente o job do data pump para o mesmo nome de uma tabela ou view que já existe.

A tabela master é mantida ou excluída dependendo as circunstâncias abaixo:

  • Após o job ser finalizado com sucesso, a tabela é excluída.
  • Se um job é interrompido usando o comando STOP_JOB, a tabela é mantida para uso no restart do job.
  • Se um job é abortado usando o comando KILL_JOB, a tabela é excluída e o job não poderá ser reiniciado.
  • Se um job finalizar inesperadamente, a tabela é mantida.

Você poderá excluí-la se não tem intenção de reinicializar o job.

  • Se um job parar antes de começar, ou seja, antes que qualquer objeto do banco de dados seja copiado, a tabela será excluída.
  •  

Como monitorar um job de export/import? 

  1. Consultando as views de dicionário DBA_DATAPUMP_JOBS, USER_DATAPUMP_JOBS, DBA_DATAPUMP_SESSIONS.
system@db10g> select * from dba_datapump_jobs;

OWNER_NAME                     JOB_NAME                       OPERATION
------------------------------ ------------------------------ ------------------------------
JOB_MODE                       STATE                              DEGREE ATTACHED_SESSIONS

------------------------------ ------------------------------ ---------- -----------------
SYSTEM                         SYS_EXPORT_FULL_01             EXPORT
FULL                           EXECUTING

 2. Digitando “status” no prompt de comando.

Export> status

Job: SYS_EXPORT_FULL_01
Operation: EXPORT

Mode: FULL
State: EXECUTING
Bytes Processed: 0
Current Parallelism: 1
Job Error Count: 0
Dump File: D:\TEMP\DB10G.DMP
bytes written: 4,096

Worker 1 Status:
State: EXECUTING
Object Schema: SYSMAN
Object Name: MGMT_CONTAINER_CRED_ARRAY
Object Type: DATABASE_EXPORT/SCHEMA/TYPE/TYPE_SPEC

Completed Objects: 261

Total Objects: 261
  1. Criando um arquivo de log que manterá informações como o nome do job, a descrição dos parâmetros, uma estimativa da quantidade de dados a serem exportados, descrição da operação atual ou item em execução, arquivos utilizados, erros encontrados e o estado final do job (STOPPED ou COMPLETED).

Eu utilizo a terceira opção, pois posso enviar o log por e-mail para usar como evidência.

O Data Pump quando em execução, inclui uma entrada na view V$SESSION_LONGOPS indicando o progresso do job. Esta entrada é periodicamente atualizada para refletir a real quantidade de dados transferidos.

As colunas da view V$SESSION_LONGOPS que são relevantes para o data pump são:

  • USERNAME – job owner
  • OPNAME – job name
  • TARGET_DESC – job operation
  • SOFAR – megabytes transferred thus far during the job

TOTALWORK – estimated number of megabytes in the job

  • UNITS – megabytes (MB)
  • MESSAGE – a formatted status message of the form:

‘job_name: operation_name : nnn out of mmm MB done’

Referências

Até o próximo artigo!

Camilla Constância Ferreira

Camilla Constância Ferreira

DBA Oracle há seis anos, especialista em banco de dados Oracle com conhecimentos em SQL Server. Bacharel em Ciência da Computação pela Universidade São Judas Tadeu, especialização em Banco de Dados Oracle pelo IBTA. Certificações adquiridas: OCA 9i, ITIL v3 Foundation. Trabalhou em empresas como EDS, HP e Ellucian. Participação nos treinamentos “Oracle 11gr2: ADM1” na EN-SOF, “SQL Tuning Para Bancos de Dados Oracle 10g/11g” ministrado pelo nosso amigo e instrutor Fabio Prado.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Marcações:
plugins premium WordPress