P>

minha

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

Flashback Drop no Oracle 10g

Rodrigo Salviatto

Você já deve ter utilizado o flashback na versão do Oracle 9i. Ainda assim irá ficar fascinado com a versão do Oracle 10g.

Neste artigo, além de apresentar funcionalidades presente no Oracle 9i, iremos apresentar um importante recurso que foi estendido na versão 10g, onde é possível restaurar uma tabela do banco de dados (com todos os registros intactos) após um comando DROP TABLE executado acidentalmente, por exemplo. Não está acreditando? Vamos lá!

O que é o Oracle Flashback Table

O Oracle Flashback Table lhe permite recuperar tabelas num ponto específico do passado através de uma simples query.

Você poderá restaurar os dados de uma tabela juntamente com seus índices, triggers e constraints, mesmo com banco de dados on-line, desfazendo as alterações feitas em apenas uma tabela, por exemplo. Vale lembrar que o Oracle Flashback Table não é capaz de recuperar dados quando há uma corrupção física (por exemplo, um problema de disco ou segmentos de dados ou índices inconsistentes).

Através do Flashback Table, será possível recuperar uma tabela e seus dados de acordo com uma determinada janela de tempo, por exemplo, quero recuperar a tabela CLIENTES e seus dados conforme ela estava na data de 06/02/2006 às 13h20’, ou ainda, a um determinado número de alterações do sistema (SCN – System Change Number). Este é um número gerado pelo próprio Oracle para determinar a sincronização de cada datafile juntamente com o controlfile, ou seja, a cada momento que ocorre um evento Check Point, o Oracle sincroniza todos os datafiles e controlfile gerando um número. Este identificará que todos os dados estão íntegros e devidamente gravados nos datafiles até aquele determinado instante. É possível utilizar este número como argumento para definir o momento do tempo que se quer a tabela recuperada.

Versão Oracle 9i x Oracle 10g

Na versão 9i existe apenas o recurso de FLASHBACK QUERY. Este é utilizado para restaurar dados (registros) em um determinado ponto do passado, porém não é possível restaurar operações DDL (Data Definition Language) como a exclusão de uma tabela importante.

Desta forma, se precisamos visualizar dados em um determinado tempo do passado, utilizamos o FLASHBACK QUERY. Com esta feature é possível:

·         Recuperar dados perdidos ou desfazer alterações em tabelas efetuadas de maneira incorreta. Por exemplo, um usuário executou um UPDATE onde alterou todos os registros do sistema de estoque; esta ação pode ser reparada com o FLASHBACK QUERY;

·         Comparar registros atuais com um determinado momento no passado. Por exemplo, uma relação de peças vendidas diariamente, comparada com o dia anterior.

 

O FLASHBACK QUERY trabalha com a opção de gerenciamento de UNDO automático, ou seja, o parâmetro UNDO_MANAGEMENT deve estar definido para AUTO (é interessante que se tenha como funciona o UNDO_MANAGEMENT=AUTO bem definido em sua cabeça - Nota 1). Essa é uma recomendação da própria Oracle, trabalhar com o auto gerenciamento de Undo. Dessa forma, para ativar o FLASHBACK QUERY devemos configurar os seguintes itens:

·         Adicionar o parâmetro de inicialização no arquivo init.ora denominado UNDO_RETENTION. Este parâmetro representa o tempo em que o registro alterado deverá ser mantido na área de UNDO. Ele é dinâmico, ou seja, pode ser alterado com o banco de dados “no ar” sem necessidade de shut down, e é especificado em segundos. Não há limite de tempo, mas é bom lembrar que, quanto maior o tempo de retenção, maior o espaço em disco necessário para armazenar a área de UNDO, ou seja, o tempo está limitado ao tamanho da área de UNDO presente no banco de dados e é esse tempo de retenção que irá definir por quanto tempo a tabela estará nesta área;

 

SQL> ALTER SYSTEM SET UNDO_RETENTION=10800;

Sistema alterado.

 

·         Adicionar o parâmetro de inicialização no arquivo init.ora denominado UNDO_MANAGEMENT=AUTO. Este parâmetro deve ser configurado para AUTO de forma que todos os dados alterados ou excluídos serão automaticamente gerenciados e armazenados na tablespace de UNDO;

...

Quer ler esse conteúdo completo? Tenha acesso completo