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!

Quão útil foi este post ?

Clique em uma estrela para classificar o post

nota média 4.4 / 5. Contagem de votos: 26

Sem votos ! Seja o primeiro a classificar !

Marcações:

Deixe um comentário

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

plugins premium WordPress