Olá,
Este artigo é um complemento ao artigo Utilizando Flashback Query no Oracle 9i publicado em Maio de 2007 na qual o conteúdo do mesmo abordou a utilização do recurso de flashback query que permite visualizar os dados como eles estavam em um determinado tempo no passado. A dica que deixo aqui, apenas para salientar, é que também podemos utilizar a expressão INTERVAL ao utilizar a cláusula AS OF TIMESTAMP, ou sempre que necessário caso precisarmos utilizar funções de data como SYSDATE, SYSTIMESTAMP, CURRENT_TIMESTAMP, etc.
SQL> set time on
09:23:14 SQL> create table t1 (id number);
Tabela criada.
09:23:33 SQL> insert into t1 values (1);
1 linha criada.
09:23:40 SQL> insert into t1 values (2);
1 linha criada.
09:23:42 SQL> insert into t1 values (3);
1 linha criada.
09:23:44 SQL> commit;
Validação completa.
09:23:47 SQL> update t1 set id=id*10;
3 linhas atualizadas.
09:27:17 SQL> commit;
Validação completa.
09:27:23 SQL> update t1 set id=id*20;
3 linhas atualizadas.
09:32:21 SQL> commit;
Validação completa.
-- Visão dos dados atuais armazenados na tabela T1
09:32:26 SQL> select * from t1 order by id;
ID
----------
200
400
600
-- Visão dos dados armazenados na tabela T1 há 5 minutos atrás
09:32:43 SQL> select * from t1
2 as of timestamp (systimestamp - interval '5' minute) order by id;
ID
----------
10
20
30
-- Visão dos dados armazendados na tabela T1 há 7 minutos atrás
09:33:44 SQL> select * from t1
2 as of timestamp (systimestamp - interval '7' minute) order by id;
ID
----------
1
2
3
Em resumo, podemos obter informações de dados de flashbask desejados entre intervalos de tempo utilizando a expressão INTERVAL:
SQL> select interval '1' year from dual;
INTERVAL'1'YEAR
----------------------------------------
+01-00
SQL> select interval '1' month from dual;
INTERVAL'1'MONTH
----------------------------------------
+00-01
SQL> select interval '1' day from dual;
INTERVAL'1'DAY
----------------------------------------
+01 00:00:00
SQL> select interval '1' hour from dual;
INTERVAL'1'HOUR
----------------------------------------
+00 01:00:00
SQL> select interval '1' minute from dual;
INTERVAL'1'MINUTE
----------------------------------------
+00 00:01:00
SQL> select interval '1' second from dual;
INTERVAL'1'SECOND
----------------------------------------
+00 00:00:01.000000
Nenhum comentário:
Postar um comentário