Backup lógico de banco de dados: Aprenda como gerar dumps usando a API DBMS_DATAPUMP ARTIGO EXCLUSIVO  

Backup Lógico Utilizando DBMS_DATAPUMP

Acredito que a ferramenta para backup lógico do banco de dados, hoje funciona como apoio para diversas tarefas cotidianas do DBA. Sua utilização vai desde um “refresh” de base de dados, schema, objetos ou mesmo para restaurar “erros humanos” de forma que sua infraestrutura não permita a configuração de tecnologia de recuperação mais adequada.

Neste artigo, colocarei uma forma de gerar os famosos dumps, através da API DBMS_DATAPUMP. Com isso, você pode gerar dinamicamente e agendar seus backups através do banco de dados, sem muita interação com sistemas operacionais para utilização da ferramenta EXPDP.

Como premissas, considerem o cenário da seguinte forma:

SCHEMA UTILIZADO: DENILSON

DIRETORIO UTILIZADO:  BKP_DATA_PUMP

Executando Backup de um SCHEMA específico:

declare

h1 NUMBER;

begin

h1 := dbms_datapump.open (operation => 'EXPORT', job_mode => 'SCHEMA', job_name => 'BKP_SCHEMA01', version => 'COMPATIBLE');

dbms_datapump.set_parallel(handle => h1, degree => 1);

dbms_datapump.add_file(handle => h1, filename => 'BKP_SCHEMAS.LOG', directory => 'BKP_DATA_PUMP', filetype => 3);

dbms_datapump.set_parameter(handle => h1, name => 'KEEP_MASTER', value => 0);

dbms_datapump.metadata_filter(handle => h1, name => 'SCHEMA_EXPR', value => 'IN(''DENILSON'')');

dbms_datapump.add_file(handle => h1, filename => 'BKP_SCHEMAS.DMP', directory => 'BKP_DATA_PUMP', filetype => 1);

dbms_datapump.set_parameter(handle => h1, name => 'INCLUDE_METADATA', value => 1);

dbms_datapump.set_parameter(handle => h1, name => 'DATA_ACCESS_METHOD', value => 'AUTOMATIC');

dbms_datapump.set_parameter(handle => h1, name => 'COMPRESSION', value => 'ALL'); 

dbms_datapump.set_parameter(handle => h1, name => 'ESTIMATE', value => 'BLOCKS');

dbms_datapump.start_job(handle => h1, skip_current => 0, abort_step => 0);

dbms_datapump.detach(handle => h1);

end;

/

Executando Backup Completo do Banco de Dados:

declare

h1 NUMBER;

begin

h1 := dbms_datapump.open (operation => 'EXPORT', job_mode => 'FULL', job_name => 'BKP_FULL01', version => 'COMPATIBLE');

dbms_datapump.set_parallel(handle => h1, degree => 1);

dbms_datapump.add_file(handle => h1, filename => 'BKP_FULL.LOG', directory => 'BKP_DATA_PUMP', filetype => 3);

dbms_datapump.set_parameter(handle => h1, name => 'KEEP_MASTER', value => 0);

dbms_datapump.add_file(handle => h1, filename => 'BKP_FULL.DMP', directory => 'BKP_DATA_PUMP', filetype => 1);

dbms_datapump.set_parameter(handle => h1, name => 'INCLUDE_METADATA', value => 1);

dbms_datapump.set_parameter(handle => h1, name => 'DATA_ACCESS_METHOD', value => 'AUTOMATIC');

dbms_datapump.set_parameter(handle => h1, name => 'COMPRESSION', value => 'ALL');

dbms_datapump.set_parameter(handle => h1, name => 'ESTIMATE', value => 'BLOCKS');

dbms_datapump.start_job(handle => h1, skip_current => 0, abort_step => 0);

dbms_datapump.detach(handle => h1);

end;

/

Executando Backup de uma tabela específica do Banco de Dados:

declare

h1 NUMBER;

begin

h1 := dbms_datapump.open (operation => 'EXPORT', job_mode => 'TABLE', job_name => 'EXPORT000048', version => 'COMPATIBLE');

dbms_datapump.set_parallel(handle => h1, degree => 1);

dbms_datapump.add_file(handle => h1, filename => 'BKP_TABLES.LOG', directory => 'BKP_DATA_PUMP', filetype => 3);

dbms_datapump.set_parameter(handle => h1, name => 'KEEP_MASTER', value => 0);

dbms_datapump.metadata_filter(handle => h1, name => 'SCHEMA_EXPR', value => 'IN(''DENILSON'')');

dbms_datapump.metadata_filter(handle => h1, name => 'NAME_EXPR', value => 'IN(''TABELA1'')');

dbms_datapump.add_file(handle => h1, filename => 'BKP_TABLES.DMP', directory => 'BKP_DATA_PUMP', filetype => 1);

dbms_datapump.set_parameter(handle => h1, name => 'INCLUDE_METADATA', value => 1);

dbms_datapump.set_parameter(handle => h1, name => 'DATA_ACCESS_METHOD', value => 'AUTOMATIC');

dbms_datapump.set_parameter(handle => h1, name => 'COMPRESSION', value => 'ALL'); 

dbms_datapump.set_parameter(handle => h1, name => 'ESTIMATE', value => 'BLOCKS');

dbms_datapump.start_job(handle => h1, skip_current => 0, abort_step => 0);

dbms_datapump.detach(handle => h1);

end;

/

Observações:

A linha a qual se refere a compactação, funciona somente a partir da versão 11g, onde foi implementada a ZLIB.

dbms_datapump.set_parameter(handle => h1, name => 'COMPRESSION', value => 'ALL'); 

Referências

http://docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_datpmp.htm#BABHBEHH

Abraço

O que você achou disso?

Clique nas estrelas

Média da classificação / 5. Número de votos:

Nenhum voto até agora! Seja o primeiro a avaliar este post.

Lamentamos que este post não tenha sido útil para você!

Vamos melhorar este post!

Diga-nos, como podemos melhorar este post?

Deixe um comentário

plugins premium WordPress