Área do cliente

As diferentes sintaxes de um Backup Lógico

banco de dados
Conheça as diferentes sintaxes de um backup lógico

Se você presa por segurança, o backup lógico é uma das maneiras mais seguras de copiar seus dados.

Na era em que vivemos, sabemos da importância de proteger muito bem seus dados, afinal, essas informações são peças essenciais para que as empresas possam adequar seus negócios às demandas da atualidade.

Para que seu banco de dados esteja em plena segurança em caso de riscos, é preciso realizar, frequentemente, o backup dos arquivos existentes, garantindo sua restauração em caso de falha. Esse tipo de falha pode ser decorrente de diversos fatores, sejam eles a corrupção de arquivos, defeitos no hardware, sinistros ou erros de usuários, mas ainda assim, é possível prevenir grandes danos com uma estratégia de backup eficiente. 

Nós, da Rox Partner, conhecemos as soluções mais adequadas para escalar o seu ambiente e proteger os seus dados. Existem muitas soluções com as quais podemos trabalhar, cada uma com suas próprias peculiaridades e vantagens. Neste artigo, vamos apresentar as diferenças entre as opções de backup lógico no Oracle e quais as situações adequadas para cada caso. 

O que é um backup lógico?

Antes de tudo, é preciso ressaltar que o Oracle trabalha com dois diferentes tipos de backups: os backups lógicos e os backups físicos. Diferente dos backups físicos, que contém arquivos físicos do banco de dados, como datafiles, archive logs ou controlfiles, os backups lógicos são uma alternativa mais rápida, simples e que ocupa menos espaço do que um backup completo, contando com dados e definições de objetos. Neste caso, o Oracle conta com o termo “Datapump”, que gera um arquivo binário com as definições de estrutura, índices, grants e muito mais, trazendo, por si só, várias formas de realizar a importação e exportação dos dados, de modo a atender às diversas necessidades do dia a dia do cliente.

EXP e IMP vs. EXPDP e IMPDP

Tanto o EXP, usado para exportar dados, quanto o IMP, seu “parceiro” que auxilia na importação dos dados, são alternativas mais antigas para realizar o backup e, hoje em dia, são bem pouco usadas, tendo se tornado obsoletas. No entanto, o EXPDP e o IMPDP são versões mais atualizadas, tendo sido incluídos na versão 10G, com mais funcionalidades e com uma forma de compactação mais eficaz. 

Para que seu backup seja eficiente, o recomendado é trabalhar com a versão mais atual, porém, a melhor opção sempre será aquela que atende a sua necessidade. O EXPDP é atualmente a melhor forma de realizar o backup lógico, devido a sua forma de compreensão mais precisa e suas variadas funcionalidades, além de ser mais performático e contar com validações que impossibilitam a divergência de dados durante a execução do backup e da importação. 

Exemplos de sintaxe em cada opção

EXP 

  • Exportar um usuário completo

exp userid=Usuario/Senha owner=Schema  file=Nome_do_Arquivo.dmp log=nomearquivo.log

  • Exportar o Banco completo 

exp userid=Usuario/Senha FULL=y   file=Nome_do_Arquivo.dmp log=nomedoarquivo.log

  • Exportar uma ou mais tabelas

exp Usuario/Senha TABLES=(schema.emp,schema.sales) file=Nome_do_Arquivo.dmp

IMP 

  • Importar uma Tabela

 Imp Usuário/Senha   FILE=Nome_do_Arquivo.dmp   FROMUSER=schema TABLES=(emp,sales)

  • Importar renomeando o usuário

imp Usuário/Senha  FILE= Nome_do_arquivo.dmp    FROMUSER=schema TOUSER=schema_new

  • Importar o backup completo

imp Usuário/Senha  FULL=y IGNORE=y FILE=myfullexp.dmp buffer=104.857.600  feedback=100000

A cláusula  Ignore=Y ignora os erros durante a execução da importação, acrescentando um buffer de 100 MB para deixar o import mais rápido.

buffer=104.857.600 

feedback=100000 

Este parâmetro é importante para acompanhar sua execução, neste exemplo, a cada 100.000 linear, um ponto “.” é acrescentado ao terminal.

EXPDP

Para trabalhar com EXPDP e IMPDP, é necessário criar um “diretório” no banco para informar onde os dados serão salvos:

CREATE OR REPLACE DIRECTORY test_dir AS ‘/u01/app/oracle/oradata/’;

  • Exportando tabelas de um usuário

expdp Usuário/Senha  tables=schema.EMP,schema.DEPT directory=TEST_DIR dumpfile=EMP_DEPT.dmp logfile=expdpEMP_DEPT.log

  • Exportando o Backup Completo

expdp Usuário/Senha full=Y directory=TEST_DIR dumpfile=DB10G.dmp logfile=expdpDB10G.log

  • Exportando Incluindo ou excluindo dados do export

Com essa cláusula podemos, por exemplo, incluir as tabelas EMP e DEPT ou mesmo excluir a tabela BÔNUS, como nos modelos abaixo:

expdp Usuário/Senha schemas=SCOTT include=TABLE:”IN (‘EMP’, ‘DEPT’)” directory=TEST_DIR dumpfile=SCOTT.dmp logfile=expdpSCOTT.log

expdp Usuário/Senha schemas=SCOTT exclude=TABLE:”= ‘BONUS'” directory=TEST_DIR dumpfile=SCOTT.dmp logfile=expdpSCOTT.log

  • Contents

Com os contents, podemos exportar somente os metadados do banco ou de uma tabela. No exemplo abaixo, estamos exportado somente os metadados do schema scott:

expdp Usuário/Senha schemas=SCOTT directory=TEST_DIR dumpfile=scott_meta.dmp logfile=expdp.log content=METADATA_ONLY

No exemplo abaixo, estamos exportando o banco completo. Porém, as tabelas EMP e DEPT do schema scott estão levando apenas seus metadados

expdp Usuário/Senha full=Y directory=TEST_DIR dumpfile=full.dmp logfile=expdp_full.log query=’SCOTT.EMP:”WHERE deptno=0″,SCOTT.DEPT:”WHERE deptno=0″‘

IMPDP

  • Importando as tabelas 

impdp Usuário/Senha tables=schema.EMP,schema.DEPT directory=TEST_DIR dumpfile=EMP_DEPT.dmp logfile=impdpEMP_DEPT.log

  • Importando o backup completo 

impdp Usuário/Senha full=Y directory=TEST_DIR dumpfile=DB10G.dmp logfile=impdpDB10G.log  

De forma a garantir a integridade dos dados, os exports sempre devem ser feitos com a cláusula FLASHBACK_SCN. De forma crua, essa cláusula pega uma “foto” do banco para usar como modelo ao final do export, com o objetivo de comparar se houve alguma mudança durante a execução do backup, garantindo assim que o banco sempre vai estar íntegro.

expdp Usuário/Senha full=Y directory=TEST_DIR dumpfile=full.dmp logfile=expdp_full.log flashback_time=systimestamp

  • Como usar no arquivo de parâmetros.

flashback_time=”to_timestamp(’09-05-2011 09:00:00′, ‘DD-MM-YYYY HH24:MI:SS’)”

  • Usando na linha de comando escapando caracteres especiais.

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

  • Capturando o SCN dentro do banco

SELECT TIMESTAMP_TO_SCN(SYSTIMESTAMP) FROM dual;

SELECT SCN_TO_TIMESTAMP(5474751) FROM dual;

Nós cuidamos dos seus dados: Rox Partner

Rox Partner é uma integradora de soluções e serviços com especialização em consultoria, sustentação e projetos de TI; com foco na entrega de soluções mais adequadas às necessidades de seus clientes.

Vamos conversar sobre a proteção da sua empresa? Entre em contato!