N style="mso-spacerun: yes">
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
...