Tempo de Execução

Dicas e truques sobre Oracle Reports Builder - modo gráfico ou modo caractere, ascii, arquivo .PRT, etc
Responder
Avatar do usuário
Marciel
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 158
Registrado em: Qui, 03 Mai 2007 10:12 am
Localização: Vitória - ES
Sabe qual o cúmulo da ignorância, da apatia e da ira?
Não sei, não quero saber e tenho raiva de quem sabe.

Há como obter o tempo de execução de um relatório (Reports 6i)?
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Talvez você pode salvar numa variável a HORA que começou o report. (na trigger BEFORE_REPORT. E no final, salva a hora que terminou na AFTER_REPORT.

Dai basta fazer o que quiser com a diferença. Deve ser o tempo. (eu não testei, mas deve funcionar)
Avatar do usuário
Marciel
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 158
Registrado em: Qui, 03 Mai 2007 10:12 am
Localização: Vitória - ES
Sabe qual o cúmulo da ignorância, da apatia e da ira?
Não sei, não quero saber e tenho raiva de quem sabe.

dr_gori,

A trigger AFTER_REPORT é disparada ao fechar o relatório, e não ao terminar a execução (pelo menos no Reports 6i é assim). Não funciona.

Tentei pegar o tempo final em uma trigger de formatação, mas também dá errado. A primeira página é formatada antes da execução da query (estranho, eu sei...).


Tem alguma outra sugestão? Talvez haja alguma função do Oracle que faça isso?
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Tente setar a data SYSDATE em uma variável de algum REPEATING GROUP do relatório.
Daí você usa essa variável no AFTER_REPORT. Teoricamente, o que tiver nessa variável será a data do termino. (novamente, eu não testei isso - é apenas uma idéia) :-/
Avatar do usuário
Marciel
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 158
Registrado em: Qui, 03 Mai 2007 10:12 am
Localização: Vitória - ES
Sabe qual o cúmulo da ignorância, da apatia e da ira?
Não sei, não quero saber e tenho raiva de quem sabe.

Pois é cara, também não funciona. O Reports não obedece a ordem lógica "executa query->formata relatorio". Ele executa e formata em paralelo.

A trigger AFTER_REPORT somente é disparada quando o relatório é fechado, sem chance de usá-la.

Dá para pegar a hora de início, por exemplo pela trigger AFTER_PARAMETER_FORM. O difícil é pegar o tempo de término.
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Minhas idéias tão acabando :-(
Mas veja, dá uma olhada nesse documento de tuning, que ali tem como medir o tempo de um report.
Só não adianta se você quiser essa contagem em tempo de execução, tipo, pra manter um histórico.

https://glufke.net/oracle/download/27564 ... tuning.pdf
Avatar do usuário
Marciel
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 158
Registrado em: Qui, 03 Mai 2007 10:12 am
Localização: Vitória - ES
Sabe qual o cúmulo da ignorância, da apatia e da ira?
Não sei, não quero saber e tenho raiva de quem sabe.

Bem... eu gostaria mesmo era de colocar o tempo de execução no corpo do relatório, para o usuário manter controle. Mas isso já me ajuda. Valeu.
Avatar do usuário
Marciel
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 158
Registrado em: Qui, 03 Mai 2007 10:12 am
Localização: Vitória - ES
Sabe qual o cúmulo da ignorância, da apatia e da ira?
Não sei, não quero saber e tenho raiva de quem sabe.

Alguém já usou a função SRW.TRACE_START no Reports 6i? Estou tentando usar da seguinte forma:

Selecionar tudo

function BeforeReport return boolean is
    x varchar2(40);
begin
    srw.get_report_name(x);
    --srw.do_sql('alter session set sql_trace true');
    srw.traceopts.mask := srw.trace_prf;
    srw.trace_start(x || '.log', srw.trace_replace, srw.traceopts);
    return (TRUE);
end;

function AfterReport return boolean is
begin
    srw.trace_end;
    return (TRUE);
end;
...mas ao executar o relatório fecha sozinho, sem dar nenhuma mensagem de erro.
Avatar do usuário
Marciel
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 158
Registrado em: Qui, 03 Mai 2007 10:12 am
Localização: Vitória - ES
Sabe qual o cúmulo da ignorância, da apatia e da ira?
Não sei, não quero saber e tenho raiva de quem sabe.

dr_gori,

Essa dica já ajudou, porém ainda há um problema: O tempo é marcado entre o início da execução e o fechamento do relatório. Se o usuário ficar meia hora com o relatório aberto, esse tempo é contabilizado.

Bem, acho que é o melhor que pode ser feito. Só coloquei aqui mesmo para registrar.

Se alguém conseguir usar a função srw.trace_start(), ou souber o motivo de não funcionar, por favor poste aqui. Pode ser por estar conectando em um banco 10g, onde essa função foi "deprecada"?
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 4 visitantes