Re: [oracle_br] Re: Medir desempenho de banco Oracle

2011-08-19 Por tôpico Vitor Hugo
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

2011-08-18 Por tôpico José Laurindo
  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

2011-08-18 Por tôpico Vitor Hugo
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

2011-08-18 Por tôpico José Laurindo
 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]