Perfeito chiappa... Obrigadão pela ajuda...
O que fiz recentemente foi reduzir o tamanho da shared_pool pois, segundo recomendação de um Doc que estava lendo da Oracle, um oversize da shared_pool poderia piorar a situação (conforme vc havia dito). Tive uma melhora senssível, apesar de ainda sofrer com latchs...rs Vou continuar analisando... --- Em oracle_br@yahoogrupos.com.br, "jlchiappa" <jlchia...@...> escreveu > > Colega, vou aproveitar agora enquanto tou esperando um processamento, já que > ninguém te respondeu, vou tentar te dar algumas idéias, dicas e sugestões. > Primeiro, sobre a questão de se aumentar um recurso (SGA no seu caso, mas > seja qual for) e a performance piorar : isso é ** simples ** de entender e é > algo comum de se ver, ocorre basicamente quando a pessoa não entende que um > Sistema necessariamente é composto por VÁRIAS partes que interdependem, pra > vc melhorar a performance do sistema como um todo vc TEM QUE se assegurar que > ao aumentar a capacidade de um componente os OUTROS terão como provisionar os > recursos no mesmo nível. Deixe-me dar um exemplo mais simples,não é o seu > caso mas só para entender : digamos que num banco está sendo feito tanto I/O > que a capacidade do sub-sistema de I/O (ie, discos, controladoras, etc) tá no > limite. Aí, um gerentão qquer, um sem-noção técnica vem e fala : "ah, tá ruim > vamos enfiar mais memória RAM e CPUs aí dentro", o que acontece ? Esses > recursos a mais permitirão que MAIS programas rodem simultaneamente, esse > sistema faz muito I/O, aí serão MAIS programas pedindo pra ser servidor pelo > I/O , o I/O não consegue atender a todos, a ** FILA ** aumenta, mais caras > esperando por I/O numa fila maior significa que cada um vai ter q esperar > mais pra ser atendido, PRONTO, a performance capotou, aí (lógico) o sem-noção > vem e diz que a culpa foi do dba que não soube "configurar" o banco pra usar > a memória extra, afinal "todo mundo sabe que mais RAM significa mais > performance"... Já vi essa cena algumas vezes.... No seu caso > especificamenteao receber performance menor aumentando a SGA, duas coisas são > mais prováveis de ter acontecido : > > a) a SGA *** não é *** toda a memória que o banco oracle usa, em sendo > conexões dedicadas (o default) a cada vez que alguém conecta no banco ele VAI > criar uma área na memória VIVA, totalmente FORA DA SGA, a chamada PGA, além > do fato de criar também uma nova task no Sistema Operacional, que como qquer > programa vai exigir RAM para si - a suposição é que com 20 Gb de SGA ainda > sobrava RAM suficiente pra esses outros usos, com 24 usados na SGA começou a > faltar e o So começou a paginar mais intensamente, ou ainda pior, a usar swap > realmente > > ou > > b) necessariamente a SGA é usada para vários "caches" do sistema (ou > pools) : evidentemente, como o bd Oracle é MULTI-USUÀRIO de fábrica, ele sabe > que pode have alguém querendo gravar exatamente aquela posição em RAM que o > processo atual quer ler, então ** TODA ** a RAM compartilhável do bd Oracle é > protegida por latches. Devemos pensar nos latches como um bloqueio > temporário, uma "permissão de acesso", uma flag indicando "em uso" - assim, > se eu sou um processo no banco e quero ler a posição X da memória, eu NÂO > acesso diretamente x , E SIM uso uma API que consulta se X está marcado como > em uso, se não está eu "obtenho" o latch, marco que estou usando (isso é um > GET) , se não está eu tento de novo (isso é um MISSING), e se eu tentei > algumas vezes (esse processo de tentar várias vezes é o SPIN) e não consegui, > vou "dormir" por uns tempos (é o evento de SLEEP) e depois tento de novo, até > conseguir - isso é bem diferente do LOCK propriamente dito, aonde fico > PARALISADO até quem está usando o recurso (normalmente um registro) deixar de > usar : vc acha as estatísticas TODAS de gets/misses/sleeps nas views > v$latchqquercoisa do banco, yes ? > Muito bem, esse processo de controle de RAM é rápido MAS não é > desprezível, ele CONSOME CPU sim, aí vem a possibilidade : se vc já está > starvado em CPU (por causa de SQLs malfeitos/dinâmicos, talvez até sem bind), > ao aumentar a SGA vc aumentou a quantidade de latches necessários para a > usar, passou a tentar consumir mais CPU que já era escassa, BUM, a > performance vai pro chão... > > Então o resumo da ópera é : ANTES de sair aumentando recursos vc TEM QUE > descobrir aonde está o gargalo e o corrigir (seja aumentando a capacidade, > seja usando de modo mais inteligente o que vc já tem),ok ? > > Sobre os SQL dinâmicos e mau uso : isso é um BUG, é um mau comportamento do > sistema, não há como no banco vc querer corrigir algo que é externo, ok ? O > que fazer ? Veja, imagine que o bug fosse que ele faz um conta errada, um > determinado resultado fica negativo , o que vc faria é contatar fornecedor e > demandar um patch, certo ? Vc até poderia, como PALIATIVO enquanto não vem o > patch, digamos escrever um SQL que multiplicasse por -1 os resultados se > livrando do negativo, mas isso é um remendão, que PODE ter efetos nocivos, > tipo, o fornecedor ter uma rotina que também mexa nos resultados aí vem a sua > e mexe também, sabe-se lá... OK, o fornecedor (como a maioria deles) não dá > pelota pra tua Empresa depois da venda feita ? Tá, mas se vc não reclamar, aí > que o bug nunca é corrigido mesmo, concorda ? Como resonsável pelo banco, a > tua função é registrar isso ** E ** deixar clara, POR ESCRITO, a sua posição > pro teu chefe, até que ele mesmo pessoalmente se envolva na conversa com o > fornecedor, fazendo umas ameaças comerciais, não tem outro jeito.. Pra bugs > de SQL é a mesma coisa, até há alguns remendos que vc pode tentar (como > programaticamente esvaziar o cache de SQLs, e/ou tentar setar o autobind com > CURSOR_SHARING , e/ou tentar aumentar os parâmetros internos que controlam > quantidades e spins de latches, entre outros), mas TODOS esses são REMENDÕES > , coisas feias que a qquer momento podem cair/quebrar, há/podem haver efeitos > coletarais *** MUITO SÉRIOS *** não só de performance quanto de Estabilidade > com tais procedimentos, antes de usar qquer um deles vc TEM QUE ter o > respaldo de um Camado no Suporte Oracle e TEM que já ter demandado correções > do fornecedor... > Menos sérios (mas às vezes menos efetivos) são os acertos de plano de > execução de SQL malfeitos que vc pode fazer no banco, mesmo sem ter o código > fonte da aplicação, são eles : > > a) renomear a tabela original para xyz, e ter uma view (com HINTs e/ou > re-escrita de SQL), criada com o nome da tabela original e consultando a xyz > > b) criar um pool keep com algumas tabelas muito usadas mas não tão grandes > > c) SQL Outlines > > d) SQL Profiles > > e) triggers de conexão que façam via ALTER SESSION alterações de ambiente, > principalmente nos parâmetros de CBO > > f) alterações no modelo , como criação de índices mais especializados, > recriação (com compactação e/ou remoção de white space, ou mesmo > defragmentação) de tabels/índices, adição de views materializadas, etc > > Claro que nem sempre são possíveis/viáveis (principalmente o que implica > mexer no modelo lógico/físico original da Aplicação), E que certamente eles > serão perdidos (e terão que ser refeitos) no próximo patch/release que o > Fornecedor mandar, mas é isso. > > []s > > Chiappa > --- Em oracle_br@yahoogrupos.com.br, "candiurudba" <candiurudba@> escreveu > > > > Bom dia colegas, > > > > Algum tempo atras postei algumas dúvidas com relação aos latchs que estou > > tendo na Library Cache e sabemos que os mesmos tem haver com as querys > > dinamicas que estão sendo executadas. > > > > O meu grande problema em solucionar definitivamente este problema, é que as > > aplicações que são executadas são de terceiros. > > > > Minha dúvida é a seguinte, s eeu aumentasse o tamanho da Shared Pool, como > > consequencia, a da Library Cache, este problema não > > seria..digamos...solucionado paliativamente ? > > > > Pq, percebi que antigamente, trabalhando com 20G para a SGA, tinha uma > > performance muito melhor do que hoje em dia, trabalhando com 24G...esta > > relação de aumento da SGA X Performance me intriga um pouco.... > > > > alguem tem alguma ideia ? > > >