Re: [oracle_br] Re: Medir desempenho de banco Oracle
Chiappa, Muito obrigado pela resposta, que na verdade foi de super alto nível. O meu grande problema está referente ao DB Link citado por você, dá maneira que construíram a arquitetura da aplicação. Sendo que tenho dois Database A e B, onde acesso os mesmos através de DB Link, a única coisa é que os dois estão instalados no mesmo banco de dados Oracle 10g, o que me intriga o porque não fizeram dois tablespace , desta forma não precisaríamos ter o dblink é a consulta seria sem dúvidas muito mais rápido. O problema foi causado talvez por falta de conhecimento da equipe anterior, pois como estamos falando do mesmo Database, poderiamos estar criado apenas tablespace e usuários diferentes para cada banco. De qualquer forma obrigado pelas dicas anteriores. Abraços, Vitor Hugo Brito de Oliveira Decimal Tecnologia Em Informatica LTDA. BLOG: http://emdia.wordpress.com/ MSN: hugov1...@hotmail.com De: José Laurindo jlchia...@yahoo.com.br Para: oracle_br@yahoogrupos.com.br Enviadas: Quinta-feira, 18 de Agosto de 2011 21:32 Assunto: [oracle_br] Re: Medir desempenho de banco Oracle A guia geral é vc verificar a Eficiência dos seus SQLs : quando eu disse SQL mal escrito, não quis dizer SQL que não segue um padrão, nem SQL que segue ou não segue uma determinado sintaxe, eu queis me referir a SQLs ineficientes... Pra vc verificar a eficiência dos seus SQLs, há basicamente 3 coisas a se fazer : a) conferir quantos LIOs (Logical I/Os. ie, quantos blocos Oracle) são acessados pra se produzir as linhas-destino : em caso de acesso sequencial via índice o ideal é se ter uma proporção por volta de 6 LIos por linha (digamos, um LIO pra se ler o root block do índice, um pra se ler o branch, outro pra se ler o leaf, mais um pra se obter o bloco de dados, com uma adiçãozinha de margem chegamos nos 6 LIOs), enquanto no caso de fast full index scan/table scan aí (claro) não dá pra saber onde os dados vão estar (pode ser que vc tenha ler a tabela inteira pra achar um dado), então não se pode estabelecer uma escala , mas o fato é , vc TEM que reduzir ao máximo os LIOs , portanto em caso de scan vc TEM que se assegurar que não há white-space sem dados sendo lido, que o high-water mark não esteja absurdamente alto, que as opções de Redução de LIOs em scans (como Particionamento, por exemplo) estão presentes e sendo usadas... Em caso de scan ainda há a questão de se assegurar I/O otimizado, o que implica em tamanho de extent aproipriado, db_file_multiblock_read_count (se viável) bem ajustado, etc... b) WAITs : todo SQL, óbvio, tem algum tipo de WAIT, o objetivo nesta verificação é não ter nada absolutamente desbalanceado , nenhum wait que sozinho responda por uma percentagem significativa do total, SE houver isso deve ser corrigido / melhorado... c) consumo de recursos : todo SQL consome alguma CPU, algum I/O, implica em algum nível de tráfego de rede, pode sofrer/participar de concorrência outras sessões querendo acessar os exatos mesmos blocos que o seu SQL tá usando/querendo usar) ... Aqui novamente não há um número ideal, o objetivo é ter o menos possível de consumo, E evitar o desperdício... Exemplos típicos de desperdício são SQLs sendo reparseados frequentemente (o que gasta cliclos e ciclos de CPU à toa), montes de SQLs semelhantes sendo gerados por não-uso de BIND VARIABLEs, a mesma informação sendo lidas várias vezes (por exemplo, em sub-queries), coisas assim... Tools : para a) e b) a tool é o TKPROF em cima de um trace de SQL. Para c) pode-se usar a V$SQL e as V$ de eventos de performance da sessão, mas não há um método único pra isso, a idéia é que um DBA ** experiente ** consulte as V$ necessárias (principalmente a V$SQL, ela tem colunas aonde se registram consumo de CPU, concorrência, LIOs, linhas processadas, etc) e também revise os planos (planos reais, extraídos da V$SQL_PLAN e similares, não estimadas com EXPLAIN) - uma pessoa experiente, E que conheça o negócio/saiba o que o SQL deveria produzir, só de olhar um plano já pode avaliar algo da eficiência dele : por exemplo, SQL usando nested loops num JOIN aonde se sabe que as tabelas envolvidas são grandes provavelmente pode ser substituído com vantagem por um HASH, coisa do tipo... Referência : eu DESCONHEÇO um documento apropriado pra isso, o que vc poderá usar são : - manuais Oracle Concepts e Tuning - livro Oracle SQL High-Performance Tuning (2nd Edition), Guy Harrison : fala bastante sobre análise de TKPROF e algoritmos de JOIN - livro Cost-Based Oracle Fundamentals (Expert's Voice in Oracle), de Jonathan Lewis : nos releases modernos, já há vários anos o Oracle usa otimização por Custo (baseada em coleta de estatísticas e Histogramas) para otimização de SQLs, este livro é o melhor para referência nesse assunto - livro Oracle Wait Interface: A Practical Guide to Performance Diagnostics Tuning, de Richmond Shee, Kirtikumar Deshpande and K Gopalakrishnan
[oracle_br] Re: Medir desempenho de banco Oracle
Colega, seguinte : primeiro de tudo, existem sim diversas tools e referências pra vc fazer verificação do cluster (no metalink, o site de Suporte da Oracle, indico as notas Introducing Cluster Health Monitor (IPD/OS) (Doc ID 736752.1) , RAC Assurance Support Team: RAC and Oracle Clusterware Starter Kit and Best Practices (Generic) (Doc ID 810394.1) e a RAC: Frequently Asked Questions (Doc ID 220970.1) , bem como os links citados nelas, mas tenha Claro em mente que NENHUMA dessas tools/técnicas é point-and-click e cabou, vai ser sim TOTALMENTE EXIGIDO um DBA Oracle ** experiente ** para as aplicar, okdoc ?? Quanto à outra pergunta : a adição de um outro nó implica em um pouco mais de poder de CPU e em mais RAM pro cluster (no RAC cada cache de cada nó se junta para formar um só cache, logicamente falando, através do cache fusion ), além de vc poder aliviar um pouco a carga dos outros nós com o load balance tendo mais um destino a balancear - então é claro que só vai ser benéfica a adição de um novo nó SE, e APENAS SE, o problema com os teus relatórios é consumo de CPU ou máquina muito acessada ou coisa do tipo : SE o problema nos seus relatórios for SQL malfeito/porcamente escrito, fazendo I/Os em excesso ou coisa do tipo, não vai ajudar EM NADA um nó a mais, muito provavelmente == Então a minha Recomendação é lapidar : faça o healthcheck do seu cluster, ok, e do banco também (não é de forma alguma tempo perdido), MAS NECESSARIAMENTE um DBA experiente vai ter que além disso analisar os SQLs / sessões dos tais relatórios e ver qual é o gargalo, qual é o problema, blz ?? []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Vitor Hugo hugov_br@... escreveu Bom dia a todos, Estou tendo alguns problemas de performance no meu banco de dados produtivo. O meu banco de dados tem 2 nós , eu gostaria de saber como descobrir seu meu Oracle RAC está configurado corretamente, e quais seriam os processos ou documento disponiveis na Oracle que poderiam me ajudar, com o diagnostico de problemas. Se eu acrescentar mais um nó ao meu Oracle RAC, quais seriam os beneficios que eu poderia obter no tempo de resposta dos meus relatórios. Abraços, Vitor Hugo Brito de Oliveira Decimal Tecnologia Em Informatica LTDA. BLOG: http://emdia.wordpress.com/ MSN: hugov1983@... [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] Re: Medir desempenho de banco Oracle
Chiappa, Tenho certeza que os SQL estão bem escritos, mais acredito que então tenha um documento que possa me auxiliar a conferir os meus SQLs novamente. Será que você teria algum documento que poderia me auxiliar nesta questão. Abraços, Vitor Hugo Brito de Oliveira Decimal Tecnologia Em Informatica LTDA. BLOG: http://emdia.wordpress.com/ MSN: hugov1...@hotmail.com De: José Laurindo jlchia...@yahoo.com.br Para: oracle_br@yahoogrupos.com.br Enviadas: Quinta-feira, 18 de Agosto de 2011 14:07 Assunto: [oracle_br] Re: Medir desempenho de banco Oracle Colega, seguinte : primeiro de tudo, existem sim diversas tools e referências pra vc fazer verificação do cluster (no metalink, o site de Suporte da Oracle, indico as notas Introducing Cluster Health Monitor (IPD/OS) (Doc ID 736752.1) , RAC Assurance Support Team: RAC and Oracle Clusterware Starter Kit and Best Practices (Generic) (Doc ID 810394.1) e a RAC: Frequently Asked Questions (Doc ID 220970.1) , bem como os links citados nelas, mas tenha Claro em mente que NENHUMA dessas tools/técnicas é point-and-click e cabou, vai ser sim TOTALMENTE EXIGIDO um DBA Oracle ** experiente ** para as aplicar, okdoc ?? Quanto à outra pergunta : a adição de um outro nó implica em um pouco mais de poder de CPU e em mais RAM pro cluster (no RAC cada cache de cada nó se junta para formar um só cache, logicamente falando, através do cache fusion ), além de vc poder aliviar um pouco a carga dos outros nós com o load balance tendo mais um destino a balancear - então é claro que só vai ser benéfica a adição de um novo nó SE, e APENAS SE, o problema com os teus relatórios é consumo de CPU ou máquina muito acessada ou coisa do tipo : SE o problema nos seus relatórios for SQL malfeito/porcamente escrito, fazendo I/Os em excesso ou coisa do tipo, não vai ajudar EM NADA um nó a mais, muito provavelmente == Então a minha Recomendação é lapidar : faça o healthcheck do seu cluster, ok, e do banco também (não é de forma alguma tempo perdido), MAS NECESSARIAMENTE um DBA experiente vai ter que além disso analisar os SQLs / sessões dos tais relatórios e ver qual é o gargalo, qual é o problema, blz ?? []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Vitor Hugo hugov_br@... escreveu Bom dia a todos, Estou tendo alguns problemas de performance no meu banco de dados produtivo. O meu banco de dados tem 2 nós , eu gostaria de saber como descobrir seu meu Oracle RAC está configurado corretamente, e quais seriam os processos ou documento disponiveis na Oracle que poderiam me ajudar, com o diagnostico de problemas. Se eu acrescentar mais um nó ao meu Oracle RAC, quais seriam os beneficios que eu poderia obter no tempo de resposta dos meus relatórios. Abraços, Vitor Hugo Brito de Oliveira Decimal Tecnologia Em Informatica LTDA. BLOG: http://emdia.wordpress.com/ MSN: hugov1983@... [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]
[oracle_br] Re: Medir desempenho de banco Oracle
melhor seria vc já ter o valor da soma/contagem o que for já feito ANTES, aí o relatório só o lê Cisas assim... --- Em oracle_br@yahoogrupos.com.br, Vitor Hugo hugov_br@... escreveu Chiappa, Tenho certeza que os SQL estão bem escritos, mais acredito que então tenha um documento que possa me auxiliar a conferir os meus SQLs novamente. Será que você teria algum documento que poderia me auxiliar nesta questão. Abraços, Vitor Hugo Brito de Oliveira Decimal Tecnologia Em Informatica LTDA. BLOG: http://emdia.wordpress.com/ MSN: hugov1983@... De: José Laurindo jlchiappa@... Para: oracle_br@yahoogrupos.com.br Enviadas: Quinta-feira, 18 de Agosto de 2011 14:07 Assunto: [oracle_br] Re: Medir desempenho de banco Oracle Colega, seguinte : primeiro de tudo, existem sim diversas tools e referências pra vc fazer verificação do cluster (no metalink, o site de Suporte da Oracle, indico as notas Introducing Cluster Health Monitor (IPD/OS) (Doc ID 736752.1) , RAC Assurance Support Team: RAC and Oracle Clusterware Starter Kit and Best Practices (Generic) (Doc ID 810394.1) e a RAC: Frequently Asked Questions (Doc ID 220970.1) , bem como os links citados nelas, mas tenha Claro em mente que NENHUMA dessas tools/técnicas é point-and-click e cabou, vai ser sim TOTALMENTE EXIGIDO um DBA Oracle ** experiente ** para as aplicar, okdoc ?? Quanto à outra pergunta : a adição de um outro nó implica em um pouco mais de poder de CPU e em mais RAM pro cluster (no RAC cada cache de cada nó se junta para formar um só cache, logicamente falando, através do cache fusion ), além de vc poder aliviar um pouco a carga dos outros nós com o load balance tendo mais um destino a balancear - então é claro que só vai ser benéfica a adição de um novo nó SE, e APENAS SE, o problema com os teus relatórios é consumo de CPU ou máquina muito acessada ou coisa do tipo : SE o problema nos seus relatórios for SQL malfeito/porcamente escrito, fazendo I/Os em excesso ou coisa do tipo, não vai ajudar EM NADA um nó a mais, muito provavelmente == Então a minha Recomendação é lapidar : faça o healthcheck do seu cluster, ok, e do banco também (não é de forma alguma tempo perdido), MAS NECESSARIAMENTE um DBA experiente vai ter que além disso analisar os SQLs / sessões dos tais relatórios e ver qual é o gargalo, qual é o problema, blz ?? []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Vitor Hugo hugov_br@ escreveu Bom dia a todos, Estou tendo alguns problemas de performance no meu banco de dados produtivo. O meu banco de dados tem 2 nós , eu gostaria de saber como descobrir seu meu Oracle RAC está configurado corretamente, e quais seriam os processos ou documento disponiveis na Oracle que poderiam me ajudar, com o diagnostico de problemas. Se eu acrescentar mais um nó ao meu Oracle RAC, quais seriam os beneficios que eu poderia obter no tempo de resposta dos meus relatórios. Abraços, Vitor Hugo Brito de Oliveira Decimal Tecnologia Em Informatica LTDA. BLOG: http://emdia.wordpress.com/ MSN: hugov1983@ [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas]