As diferentes sintaxes de um Backup Lógico
- Por Rox Partner
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
A 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!
Conheça a Rox School
Somos especialistas em cuidar dos seus dados, oferecendo soluções inovadoras e parcerias com os maiores nomes da tecnologia para manter você sempre à frente.