Bem Vindo a Comunidade Oracle no Brasil Bom dia... O problema era realmente a configuração do apache, que conforme foi falado pelo Luis, estava em 5 minutos...
Chiappa: Obrigado pelas informações e pela "discussão", todas foram extremamente utéis. Obrigado a todos ----- Original Message ----- From: oracle_br@yahoogrupos.com.br To: oracle_br@yahoogrupos.com.br Sent: Thursday, March 27, 2008 12:08 AM Subject: [oracle_br] Resumo 4799 Mensagens 1.1. Re: Timeout ao chamar reports server Enviado por: "Luis" [EMAIL PROTECTED] lcscabral Qua, 26 de Mar de 2008 10:38 am Ola Nao conheco a configuracao do Portal em detalhes, mas no Apache tem um parametro que controla o timeout, no arquivo Apache/conf/httpd.conf. O valor default sao 5 minutos: Timeout 300 Nao sei se vai ajudar, mas tente aumentar esse limite para ver se resolve seu problema. Isso resolveu pra mim, mas no meu caso a aplicacao era feita em Apex. Luis --- Em oracle_br@yahoogrupos.com.br, "Davi Martinelli Benedetti - Yahoo" <[EMAIL PROTECTED]> escreveu > > Boa tarde a todos > > Trabalho como desenvolvedor em ambiente Oracle Portal. É um mix de pl/sql, html, ajax, javascript, css, xml e por ai vai. Buenas. A questão é o seguinte. Temos diversos relatórios, alguns pesados, e que acabam por demorar mais que 5 minutos, ocasionando num timeout, e dando erro de página não encontrada. > > Pergunta: como configurar o tempo de timeout para o reports server, evitando que dê erro de pagina nao encontrada? ( e por consequencia, aumentando o tempo de processamento e mostrando o relatorio para o usuario)... > > A proposito, o processo no reports server nao morre, continua executando em background após esses 5 minutos (atual tempo de timeout), mas não é possivel de ser visualizado pelo usuario. > > Ps: Sou desenvolvedor, e gostaria de trocar uma idéia se é possivel aumentarmos esse tempo de timeout e como fazelo, tendo em vista que os dbas da empresa q trabalho não conseguiram achar uma solução. > > Forte abraço > > Davi > > [As partes desta mensagem que não continham texto foram removidas] > Voltar ao topo | através de email | Responder através da web Mensagens neste tópico (2) 2.1. Re: Timeout Reports Enviado por: "Davi Martinelli Benedetti - Yahoo" [EMAIL PROTECTED] davi_1710 Qua, 26 de Mar de 2008 10:58 am Bom dia Chiappa Primeiramente, muito obrigado pela resposta... Onde eu escrevi DBA, leia-se que na empresa onde trabalho, apesar de a atribuição principal dos referidos profissionais é ser administrador de banco de dados, os mesmos são responsáveis por toda a infra-estrutura dos ambientes de informática, desde configuração do banco de dados propriamente dito até a configuração dos servidores e tudo mais o que é implicado com a configuração da infra-estrutura dos ambientes. A mim me parece que tais atribuições andam frequentemente juntas, mas no entanto peço desculpas se a regra de fato é que essa não é uma atribuição de um DBA. Eu de fato mesmo procurei pra ver se existiam documentos que referenciassem como esse timeout pudesse ser aumentado. De cara encontrei esse documento: http://download.oracle.com/docs/cd/B14099_19/core.1012/b13996/reports.htm No entanto, como essa parte de configuração de ambiente e infra-estrutura não é especificamente minha praia, procurei o grupo em busca de respostas de profissionais mais ligados ao contexto. Foi esse meu intuito. Quanto a otimização do relatório, o mesmo já foi otimizado o máximo possível e não estamos obtendo mais resultados significativos. A massa de dados é estratosférica, e rodar em menos de 10 minutos, que é a atual situação já é uma performance excepcional, no entanto, ainda insuficiente considerando a questão do timeout. Views materializadas não se aplicam aqui devido ao fato da necessidade do relatório apresentar dados on-line. Quanto a abordagem de rodar via job, parece interessante, mas pergunto: a funcionalidade web "schedularia" o job, que levaria em torno de 5 a 10 minutos para rodar... Como fazer para que depois desse tempo, o relatório seja disponibilizado para o utilizador? Vale ressaltar que já tentamos a seguinte abordagem: antes do relatório, chamar uma procedure que popula a tabela de resultados, e depois chamar o report. No entanto, acaba dando timeout na página do navegador durante o processo de inserção dos dados via append na tabela de resultados, ou seja, antes da chamada do reports server. Nesse caso, o timeout ocorre na atual sessao do portal. Esse timeout também é configurável? (reitero novamente minha "ignorancia" neste assunto, e a intenção de um grupo como esse é a troca de informações e experiências)... Abraços Davi Ps: Solicitei ao administrador que fizesse a alteração do parametro referido no documento abaixo, posto aqui se houve resultado ou não... Re: [EMAIL PROTECTED] Colega, primeiro eu tenho que dizer que era mesmo ** DUVIDOSO ** que os DBAs pudessem te ajudar - veja só, por definição um DBA é Administrador de Banco de dados, especialista em tecnologias de ** Banco de Dados ** e uma página web roda FORA do banco de dados, é algo normalmente fora do escopo de atuação de um DBA.... O que um DBA poderia (e mesmo deveria) ter feito por vc , SE a tua Empresa tem Contrato de Suporte válido para o reports seria abrir um chamado, e se tem para outro produto Oracle qualquer poeria ao menos ter consultado a documentação extendida/artigos extras em metalink.oracle.com Sem ser DBA, o que vc poderia ter feito é consultar a Documentação do Reports, ela está online em tahiti.oracle.com e é de grátis pra todos... Numa consulta rápida, de cara caí em http://www.oracle.com/webapps/online-help/reports/10.1.2/state/content/navId.3/n\ avSetId._/vtTopicFile.rptoem_hs%7Ctasks%7Crptoem_configure_repsrvr~html/ , nessa página do manual no item Viewing and Changing the Reports Server Configuration Files ele fala do parâmetro de idle timeout, deve ser isso o que vc quer.... O ponto só é que isso implica em alterar arqs no servior, e normalmente um servidor de produção (deve ser o caso, imagino) fica sob responsabilidade de um sysadmin, vc provavelmente terá que pedir pra que ele o faça... Afora isso, duas outras dicas : a) hoje não sou mais Desenvolvedor, mas na minha época muitas vezes usei tabela de resultados no reports : veja vc, se esse relatório demora um montão, certamente ele tem no data model uma query ultra-complexa e/ou mexe com tabelas muito muito grandes, certo ? Ora, num caso desses ao invés de fazer o Reports (ou o reports Server, no caso) ficar trabalhando, às vezes é mais interessante vc ter uma tabela com as mesmas colunas que a query do report precisa e fazer a tela que dispara o Report executar uma PROCEDURE de banco (em background via DBMS_JOB se for o caso), que roda a query real e bota os resultados na tabela de resultados via INSERT append, o Report passa a ser um simples SELECT * FROM tabeladeresultados .... b) NÃO deixe de trabalhar junto com o DBA no ajuste desse SQL, há diversos objetos de banco (como Views materializadas, índices de função, analytics) que podem te ajudar em muito, mas quase todos exigem algum setup/ajuste/concessão de permissão por parte do DBA []s Chiappa =========================================================== Participe do ENPO - Encontro de Profissionais Oracle 2008 ! Informações e inscrições em http://www.enpo-br.org José Laurindo Chiappa, Palestrante ENPO-2008 =========================================================== --- Em [EMAIL PROTECTED], "Davi Martinelli Benedetti - Yahoo" <[EMAIL PROTECTED]> escreveu > > Boa tarde a todos > > Trabalho como desenvolvedor em ambiente Oracle Portal. É um mix de pl/sql, html, ajax, javascript, css, xml e por ai vai. Buenas. A questão é o seguinte. Temos diversos relatórios, alguns pesados, e que acabam por demorar mais que 5 minutos, ocasionando num timeout, e dando erro de página não encontrada. > > Pergunta: como configurar o tempo de timeout para o reports server, evitando que dê erro de pagina nao encontrada? ( e por consequencia, aumentando o tempo de processamento e mostrando o relatorio para o usuario)... > > A proposito, o processo no reports server nao morre, continua executando em background após esses 5 minutos (atual tempo de timeout), mas não é possivel de ser visualizado pelo usuario. > > Ps: Sou desenvolvedor, e gostaria de trocar uma idéia se é possivel aumentarmos esse tempo de timeout e como fazelo, tendo em vista que os dbas da empresa q trabalho não conseguiram achar uma solução. > > Forte abraço > > Davi > > [As partes desta mensagem que não continham texto foram removidas] > [As partes desta mensagem que não continham texto foram removidas] Voltar ao topo | através de email | Responder através da web Mensagens neste tópico (2) 2.2. Re: Timeout Reports Enviado por: "jlchiappa" [EMAIL PROTECTED] jlchiappa Qua, 26 de Mar de 2008 7:11 pm Seguemn as respostas/comments para cada item : > > Onde eu escrevi DBA... os mesmos são responsáveis por ** toda ** a infra-estrutura dos ambientes de informática.... ohmygod, além de cuidar de banco, que normalmente já tem seus probleminhas. e de dar suporte/auxílio/mentoring em tecnologia de banco (não desenvolver, mas dar as dicas e estabelecer políticas) pros desenvolvedores/utilizadores, que é parte integrante de qquer dba (em diferentes porcentagens, mas enfim) os seus DBAs ainda cuidam de infra-estrutura ?? rapaaaz, eses merecem o que ganham :) > . A mim me parece que tais atribuições andam frequentemente juntas, mas no entanto peço desculpas se a regra de fato é que essa não é uma atribuição de um DBA. De modo algum desculpas são necessárias, só vejo como difícil um DBA normalmente já preocupado com tuning/segurança/backup/políticas de uso/monitoração e tudo o mais que um banco omplexo de Produção exige ter como fazer esse tipo e trabalho extra, mas se na sua empresa é assim, então tá.... Normalmente pelo que conheço não é tanto assim, por isso que sugeri que o DBAs não seriam o primeiro recurso a acionar... > > Eu de fato mesmo procurei pra ver se existiam documentos que referenciassem como esse timeout pudesse ser aumentado.... No entanto, como essa parte de configuração de ambiente e infra-estrutura não é especificamente minha praia, procurei o grupo em busca de respostas de profissionais mais ligados ao contexto. Foi esse meu intuito. OK, mas já que vc ** não ** disse explicitamente o que tinha feito, o que tinha lido, por isso indiquei a documentação : na bem da verdade, sempre que vc abrir uma thread no fórum, se vc já disser o que fez, o que leu, o resultado da sua tentativa em aplicar o que leu/estudou, coisas do tipo, isso SEMPRE adianta o expediente.... > > Quanto a otimização do relatório, o mesmo já foi otimizado o máximo possível e não estamos obtendo mais resultados significativos. Pra podermos dizer que realmente um SQL foi explorado ao máximo, vc ** REALMENTE ** aplicou os recursos "avançados" de SQL, tal como analytics, WITH clause, subquery factoring ?? Vc ** realmente **, junto com o DBA, testou a aplicação de planos alternativos, via hints ? Vc testou os alteradores de comportamento de um SQL via ALTER SESSION, tais como db_file_multiblock_read, OPTIMIZER_MODE, params controladores de SGA/PGA ?? VC desmontou o SQL ? Com "desmontar" quero dizer, normalmente num join há um conjunto restrito de tabelas que trazem o "core" dos dados, as outras trazem algum lookup, coisa do tipo : reduzir o SQL ao mínimo num primeiro momento tirando as tabs acessórias é uma técnica comum de estudo... Parallel SQL pode ser uma boa, ependendo do caso... Ebfim, para declarar um SQL como totalmente otimizado, ao menos essas coisas todas eu tentaria/pediria pra verificar junto com os DBAs.... > Views materializadas não se aplicam aqui devido ao fato da necessidade do relatório apresentar dados on-line. Aqui saímos do tuning de SQL em si e vamos para a área de melhoria de storage dos dados, mas é comum isso acontecer,uma pode influenciar a outra... ==> Primeiro, é Assertiva absolutamente *** FALSA *** essa de que VMs só servem para snapshot de dados com atraso, há anos vc já pode especificar um VM com REFRESH ON COMMIT, aí a vm é atualizada ONLINE, EM CONJUNTO com a tabela, representado os dados absolutamente REAIS e ÚLTIMOS da tabela... veja vc, com certeza se a massa de dados é grande vc NÂO DEVE estar lendo/apresentando linha a linha no seurelatório, FATALMENTE vc faz algum tipo de agrupação/contagem, yes ? A idéia da vm é vc ter uma vm ATUALIZADA, que já contenha a agrupação desejada, assim AO INVÉS DE vc ter que ler os não sei quantos milhões de linhas para descobrir o resultao, a vm JÀ CONTÉM o resultado prontinho.... NEM SEMPRE isso é totalmente possível, principalmente se o relatório é dinâmico e a cada vez o usuário quer agrupar por coisas diferentes, mas SE houver como se definir isso á priori, a vm é mão na roda total...Obviamente, além de tudo a vm é um objeto FÌSICO, que ocupa espaço, e além disso há um pequeno OVERHEAD pra que ela seja atualiada, mas de forma alguma elas deveriam ter sido descartadas e antemão, se o foram reveja isso, junto com o DBA...Eu digo DBA, porque normalmente é ELE quem conhece em profundidade os etups/privs/etc necessários para se usar uma dada feature. ==> Segundo, reforço aqui que além de evitar leitura para operações que vc já poderia saber a resposta com a vm, a outra idéia quando se fala em massa "estratosférica" é vc "separar" os dados que precisa : assim, se particionando os dados vc evitar ter que acessar N partições, ok... Ou ainda, tal como eu falei na msg anterior, índices condicionais podem ser uma boa : afinal, normalmente não são exatamente TODOS os dados da tabela-monstro X ou Y que vc quer, normalmente há uma flag ou alguma coluna com algum domínio especial que vc quer, ** SE ** vc criar um índice aonde só esses registros entrem puff, vc evitou um monte de I/O por linhas que ao final as WHEREs descartariam.... Num cliente anterior (por exemplo) numa tabela de dezenas de milhões era só umas poucas centenas de milhares que eu precisava acessar (de acordo com uma coluna de STATUS, com um domínio próprio) : o pessoal tinha criado um índice normal, não adiantou picas, pois um index range scan num índice de dezenas de milhões ainda é horroroso, daí eu criei um ídnice aonde só entravam os registros que eu queria e mandei brasa num index fast full scan desse índice (que ficou minúsculo), foi um susto pro pessoal a performance que deu... da mesma forma, Clusters, índices bitmap, star-joins, todos esses recursos podem providenciar algum "grau" de separação... > > Quanto a abordagem de rodar via job, parece interessante, mas pergunto: a funcionalidade web "schedularia" o job, que levaria em torno de 5 a 10 minutos para rodar... Como fazer para que depois desse tempo, o relatório seja disponibilizado para o utilizador? O que eu propus é : a tela que hoje dispara o reports diretamente passaria a, via DBMS_JOB, disparar uma PROCEDURE em background (assim a tela pode até ** DESCONECTAR ** do banco, evitando timeouts, poupando recursos !!), e essa procedure após preencher a tabela de resultados ela sinaliza esse término pra tela, que aí sim dispara o report, que como eu diosse vai ser rapidinho já que vai fazer só um SELECT * FROM tabeladeresultados.... Há n+1! maneiras de uma procedure se "comunicar" com um programa externo ao banco, uma low-tech poderia simplesmente ser que ela GRAVE um arquivo-texto via utl_file num local a que a tela do usuário possa ler em pooling, sendo que em modo web na verdade reside lá no servidor web, via de regra permissão/mapeamento de pastas entre duas máquinas não é problemático... Ou ainda, a procedure poderia popular uma linha duma tabela de jobs quando terminar, e a tela de usuário a cada minuto abre uma conexão, testa a tabela, se não existe evolve a conexão e "dorme" por mais um minuto, coisa assim... > ...No entanto, acaba dando timeout na página do navegador durante o processo de inserção dos dados via append na tabela de resultados... é óbvio, é o que eu falei acima, o truque é vc fazer o trabalho DENTRO do banco via job, não disparar de FORA via conexão externa que tem que ser mantida... Blz ? Bom, de modo geral, sem detalhar muito, é + ou - isso que eu queria dizer, espero que as idéias que te passei sejam de alguma forma úteis, esse é sempre o objetivo de todos aqui, bater papo, dar sugestões, dar dicas sobre tecnologia de banco de dados Oracle, é por aí... []s Chiappa =========================================================== Participe do ENPO - Encontro de Profissionais Oracle 2008 ! Informações e inscrições em http://www.enpo-br.org José Laurindo Chiappa, Palestrante ENPO-2008 =========================================================== Voltar ao topo | através de email | Responder através da web Mensagens neste tópico (2) [As partes desta mensagem que não continham texto foram removidas]