Definindo uma data fixa para o Sysdate no Oracle
Olá Pessoal, estava eu dando uma espionada no tópico de parametros do banco de dados na documentação da Oracle e encontrei algo muito interessante e nem tanto difundido entre os profissionais da área. O parametro FIXED_DATE. Este parametro é utilizado para “congelar” o tempo do sysdate. Isso mesmo! 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') data from dual;
DATA
-------------------
21/09/2013 15:16:20
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 parâmetro:
SQL> select to_char(sysdate,'dd/mm/rrrr hh24:mi:ss') data from dual;
DATA
-------------------
21/08/2013 01:00:00
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') data from dual;
DATA
-------------------
21/09/2013 15:20:12
Veja que o escopo do parametro é de nível de sistema, ou seja, quando efetuada a alteração, todo o ambiente será afetado.
Conclusão
É realmente muito interessante o funcionamento desse parâmetro, 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 alterá-lo.
Referências