DataARTIGO

Definindo uma data fixa para o Sysdate no Oracle

O parâmetro FIXED_DATE é utilizado para “congelar” o tempo do sysdate. Isso mesmo: congelar!

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

é formado em Análise de Sistemas pela Uniban. Possui 10 anos de experiência em análise, implementação e desenvolvimento de softwares com Oracle Forms/Reports, PL/SQL. Também possui experiência de 6 anos em WebTool Kit, HTML, JavaScript, XML, CSS e APEX, além de conhecimentos em JAVA e Delphi. Possui certificação Oracle Advanced PL/SQL Developer Certified Professional 11g. Em sua experiência profissional teve a oportunidade de participar de diversos projetos, dos quais pode-se destacar migrações de sistemas de arquivos indexados em Cobol para banco de dados Oracle; tunning em camada de aplicações e camada de banco de dados; administração de banco de dados Oracle 9i e 10g; modelagem relacional de dados utilizando Erwin; migração do Forms 6i para Forms IAS 10g; levantamento, análise e desenvolvimento de software em Delphi com Oracle, Oracle WebTool Kit e APEX. Atualmente trabalha em uma empresa petroquimica, na qual atua como Desenvolvedor Oracle EBS, desenvolvendo customizações para todos os módulos, nos padrões e recursos do ERP, utilizando PL/Sql, Forms 6i, Reports 6i, Discover, WorkFlow e APEX.

Ver perfil