Calculando tempo no Oracle PL/SQL

[ad#texto]

Para quem já trabalhou ou trabalha com rotinas em PL/SQL que movimentam grande volume de dados e que tendem a serem lentas sabe que é importante uma gerar uma métrica para medir os tempos de trechos do seu código a fim de se identificar pontos de lentidão.

Para quem pensou que um trace resolveria isso vale lembrar que o trace via de regra coleta dados de iteração no banco de dados Oracle, como por exemplo, query´s, iterações de memória e outros detalhes não são rastreados pelo trace, daí a necessidade da própria rotina PL/SQL possuir ferramentas próprias para medir o tempo.

Abaixo temos uma função que retorna a quantidade de segundos que decorreram de um tempo inicial até um tempo final.

function difere_segundos(par_inicio in timestamp,  -- Timestamp definido antes de executar o trecho que se quer marcar o tempo
                         par_fim in timestamp)     -- Timestamp definido após executar o trecho que se quer marcar o tempo
         return number IS

var_segundos   number(15,6) := 0;

begin
 var_segundos := extract(day from (par_fim - par_inicio)) * 24 * 60 * 60 +
                 extract(hour from (par_fim - par_inicio)) * 60 * 60 +
                 extract(minute from (par_fim - par_inicio)) * 60 +
                 extract(second from (par_fim - par_inicio));

 return(var_segundos);
end;

A função acima recebe o tempo inicial e o tempo final e retorna a diferença em segundo de ambas, para utilizar basta coletar o tempo (em timestamp) do ponto inicial e no ponto final executar a função e você terá a diferença em ambos e poderá então demarcar os pontos de maior demora e que devem receber maior atenção na sua rotina PL/SQL.

Petter Rafael

Desenvolvedor Web atua com as tecnologias Java e PHP apoiadas pelos bancos de dados Oracle e MySQL. Além dos ambientes de desenvolvimento acima possuiu amplo conhecimento em servidores Apache/Tomcat, Photoshop, Arte & Foto, Flash e mais uma dezena de ferramentas e tecnologias emergentes. Atualmente colabora com o Viablog escrevendo sobre programação e tecnologia.
ViamaisBLOG
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.