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
Relatorios muito lentos
-
- Rank: Estagiário Júnior
- Mensagens: 1
- Registrado em: Sex, 24 Out 2008 1:28 am
- Localização: RJ
- dr_gori
- 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
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.
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.
-
- 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.
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.
-
- 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!
- TBou
- Rank: Analista Sênior
- Mensagens: 136
- Registrado em: Qui, 05 Ago 2004 9:33 am
- Localização: Campo Grande - MS
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
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
-
- 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
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
-
- 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!
-
- 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
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.
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.
-
- 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
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
-
- 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
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.
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.
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 10 visitantes