Relatorios muito lentos

Dicas e truques sobre Oracle Reports Builder - modo gráfico ou modo caractere, ascii, arquivo .PRT, etc
Responder
urubullino
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 1
Registrado em: Sex, 24 Out 2008 1:28 am
Localização: RJ

Oi pra todos.
não conheco muita coisa de oracle mas aqui vai um problema que nunca deixou o sistema em que trabalho...
Temos uma aplicacao com inumeras tabelas e muuuiitos registros. Usamos o Oracle Reports e em muitos casos os relatórios demoram uma eternidade para serem executados.
Por pesquisa cheguei a conclusao que uma view materializada poderia resolver o assunto , o Report iria acessar essa view . Mas o usuario quer ver essa informacao quase que instantaneamente quando a mesma é inserida ou modificada. A view materialized seria mesmo a melhor opcao ou teria outra, mesmo com ferramentas de terceiros ?
Para dar uma acelerada ainda maior , também estou estudando outros geradores de relatorios que possam executar a tarefa mais rapido que o Oracle Reports... Alguma dica?

Obrigado a todos.


Informações do Ambiente:
* Versão do Oracle: 10g
* Sistema Operacional: win xp
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

Na realidade, eu faria um serviço de tuning nesses reports.
Algo assim:
* listaria quais são os relatórios lentos
* pegaria quais são os parâmetros que o usuário normalmente usa. (alguns exemplos rapidos e outros lentos)
* Olharia os selects dos reports pra ver se acha alguma coisa medonha

Depois disso, começaria um trabalho pra ver se é possível acelerar alguma coisa nos reports. As vezes um programador "pecou" com alguma coisa básica que é facil de resolver.
schnu
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 110
Registrado em: Ter, 24 Mai 2005 9:16 pm
Localização: Dongguan - Guangdong - China

Dificilmente um outro gerador de relatorio será mais rapido que o Oracle Report se utilizar a mesma consulta.

Eu faria como o amigo ai de cima falou.
Tente executar essas query no SQL/Plus e verifique se la demora tambem ( bem provavel ira demorar ) e tente fazer tunning nessas query.
ricardorauber
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 96
Registrado em: Qua, 21 Jun 2006 11:33 pm
Localização: Canoas RS

Certamente deve ser falta de índices ou consulta mal feita, a dica é começar examinando as consultas!
Avatar do usuário
TBou
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 136
Registrado em: Qui, 05 Ago 2004 9:33 am
Localização: Campo Grande - MS
Thiago Bourscheidt
thiago.info@apoiorural.com.br
Analista de Sistemas

Isso mesmo, estou com os Colegas ai de cima. o problema é estrutural ou da consulta ou do banco de dados. Com indices voces pode fazer milagres se o seu banco de dados foi bem contruido, verifique tambem se é feito de tempos em tempos alguma rotina de ANALYSE TABLES.
analyze table '||I.TABLE_NAME||' delete statistics
analyze table '||I.TABLE_NAME||' compute statistics

que ajudam a melhorar o desempenho dos indices e do banco em um modo geral.

uma "select bem estruturada vale um caminhão de boi"

se quiser algumas dias poste alguma das selects pesadas aqui para a gente dar uma geral nela.

Falou
Gibson
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 9
Registrado em: Ter, 11 Nov 2008 6:44 pm
Localização: São Paulo

(Acho que o pessoal do forum vai concordar comigo!rs.)

1 - Contrate um profissional BOM em tecnologias Oracle.
2 - Pague BEM!!!

:-o

Abs!!!
RJG
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 79
Registrado em: Ter, 16 Mai 2006 11:40 am
Localização: Patos de Minas - MG

Cara aconteceu e acontece isso comigo!
Nunca vi melhor gerador de relatorio q o Oracle Reports.....a integração é grande.
Mas depois de fazer varios testes...vejo q são calculos no SELECT
ou falta de index ou ainda um join numa tabela q não precisa.

Não é bom usar muito index.
Abraços
r.bolato
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Sáb, 21 Mar 2009 11:11 am
Localização: Araraquara - SP

Pega essa query do relatório e joga no banco de dados e verifique se vai demorar... se caso demorar também você poderia ver se os indices da tabela estão criados... concerteza ira ficar mais rapido!
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

É issoa i graaaaaaande bolato (quanto tempo meu velho... como vai Arara-beach?).

O que costumo fazer em relatórios muito complexos, é: Criar uma temp*, no before do report, popular essa temp* (através de uma procedure de banco, onde ficará tua query) e, utilizar a temp no teu sql do report.

Nota importante: *Como essa temp (será temp só na teoria, pois report x forms utilizam sessões diferentes), você pode criar uma coluna de sessão nela e, dar o delete/insert praquela sessão.

Talvez fique bem melhor, pois no pl você pode utilizar mais recursos, como o Bulk Collect.

Fica ai a dica e, se num fui muito claro... só mandar de volta q tento me explicar melhor.
r.bolato
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Sáb, 21 Mar 2009 11:11 am
Localização: Araraquara - SP

Beleza Paulão ??? espero que sim
Cara, isso não sei se vai resolver porque no meu caso não é apenas 1 relatório, e sim todos.
Por exemplo, se o cliente clicar no botao para imprimir um relatorio ele chamara o meu REP. Se caso ele clicar novamente no botao de imprimir para chamar o mesmo relatório ele teria que dar uma msg do tipo... relatorio aberto, etc. Mais se for outro relatorio ai abre na boa. Se tiver uma variavel de sistema no reports (no gerenciador) acredito que fica mais facil! Mais vou tentar fazer o que você disse, já é uma luz!!

Abraço Paulo
Ricardo Bolato
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Fala Ricardo, beleza!

Cara, no teu caso teria q ser algo da prórpria ferramenta creio eu.
Se não tiver jeito, uma dica é a seguinte:

Talvez você consiga criar uma procedure, numa package de banco,que monte a chamada da RUN_PRODUCT pra você, como se você fizesse uma SOBRECARGA na RUN_PRODUCT, inserindo um parâmetro a mais, que seria passar o nome do relatório.

Daí, você controlaria se esse valor já está na base ou não, por exemplo...

Mas, o ideal mesmo, seria alguma variação da própria built-in, que lhe informasse isso, pois, na idéia que citei acima, você teria que dar um "find" em todos os teus forms, com o TEXTPAD, por exemplo, para alterar TODAS as chamadas de RUN_PRODUCT.

Vamos ver se o pessoal do fórum aqui tem alguma outra idéia.

Precisando, conta com a gente.
Abração pra todos ai.
Responder
  • Informação
  • Quem está online

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