Data

2 out, 2013

Definindo uma data fixa para o Sysdate no Oracle

Publicidade

Olá, pessoal! Estava eu dando uma espionada no tópico de parâmetros do banco de dados na documentação da Oracle e encontrei algo muito interessante e nem tanto difundido entre os profissionais da área. O parâmetro FIXED_DATE é utilizado para “congelar” o tempo do sysdate. Isso mesmo: congelar! Podemos definir um valor constante para o sysdate, utilizando qualquer data. Pode ser um período anterior ou futuro, algo muito útil para efetuar testes.

Vejamos como funciona.

Exemplos

Exibição da data atual, antes da modificação do parametro:

SQL> select to_char(sysdate,'dd/mm/rrrr hh24:mi:ss') as "Data Sysdate", to_char(systimestamp,'dd/mm/rrrr hh24:mi:ss') as "Data Systimestamp"  from dual;

Data Sysdate        Data Systimestamp
------------------- -------------------
22/09/2013 14:24:02 22/09/2013 14:24:02
Comando para congelar a data:
alter system set fixed_date= '2013-08-21 01:00:00';

Exibição da data congelada, após a modificação do parametro:

SQL> select to_char(sysdate,'dd/mm/rrrr hh24:mi:ss') as "Data Sysdate", to_char(systimestamp,'dd/mm/rrrr hh24:mi:ss') as "Data Systimestamp"  from dual;

Data Sysdate        Data Systimestamp
------------------- -------------------
21/08/2013 01:00:00 22/09/2013 14:24:30

Comando para voltar o sysdate para o seu comportamento normal:
alter system set fixed_date=none;

Exibição da data atual normalmente:

SQL> select to_char(sysdate,'dd/mm/rrrr hh24:mi:ss') as "Data Sysdate", to_char(systimestamp,'dd/mm/rrrr hh24:mi:ss') as "Data Systimestamp"  from dual;

Data Sysdate        Data Systimestamp
------------------- -------------------
22/09/2013 14:25:09 22/09/2013 14:25:09

O escopo do parâmetro é de nível de sistema, ou seja, quando efetuada a alteração, todo o ambiente será afetado. Veja que o systimestamp não é afetado por este parâmetro.

Conclusão

É realmente muito interessante o funcionamento desse parâmetro, que pode ser muito útil para realização de testes. Mas seu uso indiscriminado em um ambiente de produção, por exemplo, pode causar muitos problemas; portanto, tome muito cuidado ao alterar o parâmetro!

Referências