N style="mso-spacerun: yes">capaSQL19.jpg

Clique aqui para ler todos os artigos desta edição

Manutenção da disponibilidade em bancos de dados Oracle 9i – Parte 1

por Allyson A. Brito

Leitura obrigatória: SQL Magazine 12 e 13, Introdução ao Oracle 9i (partes 1 e 2).

 

A informação, mais do que nunca, é encarada como diferencial competitivo. Sua disponibilidade e integridade são de suma importância para o desenvolvimento e planejamento estratégico das organizações.

Este artigo visa descrever como o Oracle 9i provê soluções sofisticadas para a manutenção da disponibilidade das informações direcionadas a diversos tipos de falhas. Estaremos citando três tipos de falhas que podem ocorrer em um ambiente de banco de dados, bem como as soluções que a Oracle provê para solucionar cada uma delas. Dentre elas estaremos destacando as soluções de backup e recuperação.

Tipos de falhas

Os tipos mais comuns de falhas são aquelas movidas por erros de usuário (quando ocorre alteração indesejada em registros e/ou atributos de um objeto ou mais objetos), de instância (quando por algum motivo a instância fica indisponível, causando interrupção no funcionamento do banco de dados) e de mídia (quando algum dos arquivos que compõem o banco de dados é corrompido). O Oracle provê soluções para contornar cada uma dessas falhas.

Falhas por erro de usuário

Logminer

É um conjunto de pacotes PL/SQL que executa a leitura dos registros de transações contidas nos redo log files (on-line ou arquivados) possibilitando desfazer alterações feitas erroneamente. Este recurso é largamente utilizado para soluções de recuperação de falhas de usuário e auditoria. O acesso ao logminer se dá através do SQL*Plus, bem como através de uma interface gráfica disponível no Oracle Enterprise Manager. Em geral, utilizamos o pacote DBMS_LOGMNR para iniciar seções do log miner e em seguida checamos o conteúdo da view v$logmnr_contents. Basicamente, para iniciarmos uma seção de análise do logminer adicionamos os arquivos a serem analisados, em seguida, indicamos um arquivo de dicionário, responsável pela tradução dos nomes internos utilizados pelo Oracle para nomes de objetos. A partir daí podemos efetuar consultas na view v$logmnr_contents em busca das informações desejadas, conforme mostrado na Listagem 1.

 

SQL>begin
dbms_logmnr.add_logfile(logfilename=>'/u01/oracle/oradata/db10g/db10g/redo01.log', options=> DBMS_LOGMNR.NEW);
dbms_logmnr.add_logfile(logfilename=>'/u01/oracle/oradata/db10g/db10g/redo02.log', options=> DBMS_LOGMNR.NEW);
dBMS_LOGMNR.START_LOGMNR(OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG);
end;

SQL>Select sql_undo,sql_redo from v$logmnr_contents  where username='SCOTT' and operation='DELETE'

 

SQL_UNDO                                          SQL_REDO

----------------------------------------          ----------------------------------------

insert into "SCOTT"."BONUS"("ENAME","JOB         delete from "SCOTT"."BONUS" where "ENAME

","SAL","COMM") values ('Gustavo','Supor " = 'Gustavo' and "JOB" = 'Suporte' and

te','1200','5');                             "SAL" = '1200' and "COMM" = '5' and ROWI

                                               D = 'AAAL+bAAEAAAAAvAAA';

Listagem 1. Exemplo de recuperação de registro excluído, utilizando o logminer.

 

Export / Import

O par export / import possibilita uma forma simples de transferir objetos entre bancos de dados Oracle, mesmo que estes estejam em hardware e sistemas operacionais diferentes. Quando o export é executado em um banco de dados Oracle, este gera um arquivo binário, inteligível apenas pelo import. É possível exportar os dados de um determinado usuário, tablespace, objeto, todo o banco de dados, dentre outros. O export / import também é utilizado como forma de recuperação contra falhas de usuário pelo fato dela permitir a recuperação de registros alterados ou excluídos acidentalmente. 

Como exemplo, para exportar todos os objetos de um determinado usuário, utilizamos a seguinte sintaxe no prompt do sistema operacional:

 

exp usuário/senha owner=schema file=arquivo.dmp

 

Isto irá gerar um arquivo que quando importado pelo utilitário import irá recriar todos os objetos exportados. A sintaxe do import pode ser vista abaixo:

 

imp usuário/senha file=arquivo.dmp fromuser=schema touser=schema

 

...

Quer ler esse conteúdo completo? Tenha acesso completo