Muitos já ouviram “O banco de dados está lento!”
Será que está?
Como DBA há muitos anos, gosto de trabalhar com evidências. O que está lento? Começo a investigação analisando o que as sessões ativas estão aguardando, os Waits Events.
Em paralelo verifico como está o servidor, verificando o uso de CPU, memória e IO de uma forma simples e rápida usando o Top do SO.
Verifico se a quantidade de sessões ativas está normal, o que elas estão executando, se tem contenção de dados ou algum SQL com problema de performance.
Quando apenas um processo está lento ou com problema, o melhor caminho é habilitar o trace da sessão que está executando o processo. O trace grava num arquivo todos os SQLs sendo executados, o conteúdo das variáveis Bind e os eventos de espera de cada SQL. O arquivo gerado pode ser lido no seu estado “bruto” ou traduzido usando o utilitário tkprof.
O banco de dados Oracle possui várias Visões e Advisors que permitem uma análise ampla do ambiente. Mesmo na edição Standard é possível gerar snapshots periódicos das estatísticas de desempenho do banco de dados através do utilitário Statspack.
Já na edição Enterprise, com as Options de Diagnóstico e Tuning e com a ferramenta gráfica de administração, o Enterprise Manager Cloud Control*, é possível ter uma visão rápida de todo o ambiente do momento atual ou de um período no passado. É possível gerar relatórios de desempenho do banco de dados através do AWR (Automatic Workload Repository) e ADDM (Automatic Database Diagnostic Monitor).
O AWR é um repositório incorporado ao banco de dados que coleta estatísticas de desempenho em intervalos definidos da mesma forma que o Statspack, porém, com mais informações e recursos, como a comparação entre períodos de coletas.
No banco de dados, outro fator muito importante, é a coleta periódica de estatísticas do dicionário de dados e das tabelas e índices das aplicações. Com as estatísticas atualizadas, o Otimizador Oracle consegue definir a melhor estratégia de acesso aos dados, otimizando assim o uso de memória de CPU e a leitura em disco.
A preocupação com Performance deve começar já na aquisição do Hardware, na forma de acesso ao banco de dados, na versão do software Oracle instalada, e continua na configuração dos parâmetros do SO, da instância Oracle e na criação e configuração do banco de dados, sempre seguindo as melhores práticas da Oracle.
O trabalho de Diagnóstico e Tuning requer paciência porque em algumas vezes pode ser uma query lenta ou uma ocorrência de lock os causadores de todo o problema. Em outras vezes a causa não é tão obvia, podendo demorar dias para identificar e solucionar o problema. É um trabalho complexo e envolve várias camadas além do banco de dados.
A administração pró ativa do banco de dados, junto com o trabalho de Diagnóstico e Tuning contínuos, são as melhores formas para diminuir as queixas de que o banco de dados está lento.