FlashBack Data Archive – menos Log Miner

Antes do Oracle 11g para recuperar a imagem de qualquer registo, seria necessário usar os archived redo logo (se fosse possível) e o Log Miner, ou então utilizar um mecanismo qualquer de replicação (por ex usando triggers). A partir do 11g a tarefa do DBA fica bastante mais simples usando o Flashback Data Archive (FBDA) que possibilita que seja criado um rasto de todas as modificações feitas à tabela.
O seu propósito é simples: cria um registo de todas as modificações feitas a uma determinada tabela num determinado espaço temporal.
É necessário como é obvio determinadas permissões, mas darei aqui o exemplo do que deve ser feito:

Criar um utilizador para testes:

SQL> create user lmarques_fb identified by 12345;
User created.

Depois atribuir as permissões (GRANTs necessárias):

SQL> grant connect, resource, flashback archive administer to lmarques_fb;
Grant succeeded.

 

Como boa prática, será importante criar um tablespace novo para guardar todo o rasto das alterações feitas. O tablespace criado terá apenas 15MB, sendo suficiente para o exemplo que queremos mostrar:


SQL> CREATE TABLESPACE tbs_lmarques DATAFILE '/home/oracle/app/oracle/oradata/testSID/flashback_arch.dbf' size 15m;

Tablespace created.

 

Como é do vosso conhecimento será necessário indicar que o tablespace criado vai ser um flashback archive durante um determinado periodo de tempo, tempo esse em que as alterações ficarão retidas:


SQL> create flashback archive fl_arch tablespace tbs_lmarques retention 1 year;

Flashback archive created.

A partir deste ponto, temos um flashback archive de nome fl_arch criado que está no tablespace tbs_lmarques que vai reter  informação durante 1 ano. Vamos agora ao teste:

Criamos uma tabela com 1 registo e temos:


SQL> create table t_fback as select dbms_random.value(1,10) N1 from dual;

Table created.

SQL> select * from t_fback;

N1
----------
9.00332872

 

Como devem imaginar é necessário indicar quais são as tabelas que vão fazer uso do flasback archive, portanto basta-nos alterar uma propriedade da tabela. É obviamente necessário dizer a que flashback archive nos referimos.

SQL> alter table t_fback flashback archive fl_Arch;

Table altered.

A partir deste momento todas as alterações efectuadas à tabela em questão serão registadas no flashback archive fl_arch. Para testar basta apagar o registo que inserimos e tentar reave-lo:


SQL> delete from t_fback;

1 row deleted.

SQL> select * from t_fback;

no rows selected

SQL> commit;

Commit complete.

Agora é necessário verificar se o flashback archive guardou as nossas alterações. Para isso é simples e transparente, basta fazer uma query (Flashback Query) usando o timestamp anterior à remoção do registo e aqui temos:

SQL> select * from t_fback as of timestamp to_timestamp('28062011 18:49:50', 'ddmmyyyy hh24:mi:ss');

N1
----------
9.00332872

SQL> select * from t_fback;

no rows selected

 

Simples, fácil e eficaz!
De notar que o Oracle não faz qualquer uso do tablespace UNDO para reter as informações das modificações efectuadas. Podem comprovar isso se quiserem 🙂
Para completar o artigo, é interessante ainda verificar as views que são usadas para nos mostrar toda a informação referente ao FlashBack Archive. São elas:

* dba_flashback_archive

Contêm informação referente aos ficheiros usados pelo FlashBack Data Archive.

* dba_flashback_archive_ts

Contêm informação referente aos tablespaces usados pelo FlasBack Data Archive

dba_flashback_archive_tables

Contêm informação relativa às tabelas que usam FlashBack Data Archive

Por fim, gostaria de concluir que esta nova adição no Oracle do FlashBack Data Archive vem de alguma forma, facilitar a vida ao DBA, disponibilizando uma conjunto de features da maior importância, já que falamos dos nossos dados e da possibilidade de por algum motivo, seja ele erro humano ou não, recuperarmos tal e qual, apenas aquilo que queremos, evitando assim processos morosos de restore.
Por outro lado, e como contrapartida, apesar da informação relativa ao FlashBack Data Archive ficar num ficheiro comprimido, esta nova funcionalidade é pouco poupada no espaço, e percebe-se bem porquê. Sugiro assim o uso com cautela, em determinadas circunstâncias senão podem ter que aumentar o vosso “storage” rapidamente.

Advertisements

One thought on “FlashBack Data Archive – menos Log Miner

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s