Você está na página 1de 3

Oracle 11g Tuning

No Oracle os principais problemas de lentidão ou perda de performance se dá devido


a 4 fatores:
1) Contenção de Memória;
A contenção de memória ocorrem quando processos requerem mais memória do que
está disponível. Quando acontece, o sistema realiza paginações e troca de processos
entre a memória e o disco.
2) Contenção de Entrada/Saída de Disco;
A contenção de Entrada/Saída de Disco ocorrem quando se tem pouco
gerenciamento de memória, ou uma distribuição ruim das tablespaces e arquivos pelos
discos, ou a combinação de ambas situações.
3) Contenção de CPU;
A contenção de CPU ocorre quando muitos processos concorrem pelos ciclos de
CPU. No Oracle é possível ter diferentes níveis de contenção de CPU para cada
processador se estivermos em um sistema de múltiplos processadores.
4) Contenção de Recursos do Oracle;
A contenção de Recursos Oracle ocorrem quando acontecem locks e latches no
banco de dados. Locks e Latches tem significados parecidos mas são o mesmo tipo de
problema, se trata de uma trava no sistema devido a concorrencia multipla em cima
do mesmo objeto. Locks significa fechadura, Latches significa fecho, ou ferrolho.
Ambos são entendidos como travas no sistema.

No Oracle 11g, para se utilizar o Tuning diversos recursos foram desenvolvidos para
auxiliar na performance:
1) Automatic Workload Repository (AWR) ou Repositório Automatico de Carga de
Trabalho. Este tira uma imagem do sistema a cada 60 minutos, desta imagem ele
coleta, processa e mantem as estatisticas sobre a performance do sistema para
detectar possíveis problema e realizar uma auto-correção, como se fosse um tuning
automático.
2) Automatic Database Diagnostic Monitor (ADDM) ou Monitor Automático de
Diagnóstico do Banco de Dados. Este analisa as informações coletadas pelo AWR para
identificar os possíveis problemas de performance do banco de dados Oracle, depois
recomenda quais as possíveis ações corretivas.
3) Active Session History ou Histórico de sessão ativa. Este coleta aleatoriamente
algumas sessões ativas para auxiliar na visualização da utilização do banco de
dados demonstrando quais sessões estão demandando mais serviços do banco de dados.
Estas ferramentas estão incluídas nas views de performance V$ e nos scripts também.

No Oracle 11g, existem também ferramentas para Tuning de SQL:


1) SQL Tuning Advisor. Permite uma rápida e eficiente técnica para otimização de
queries SQL sem precisar modificar qualquer declaração na query.
2) SQL Access Advisor. Gera logs com diversos avisos sobre as views materializadas
e índices.
3) Explain Plan. O Explain Plan demonstra o plano de execução escolhido pelo
otimizador para queries que utilizem SELECT, UPDATE, INSERT e DELETE. Trata-se de
uma sequencia de operacções que o banco de dados realiza para executar a query.
4) SQL Trace. O SQL trace de uma instrução SQL tem como finalidade mostrar os
detalhes de como o ORACLE executou a instrução.
5) TKPROF. O TKPROF pode determinar os planos de execução a serem utilizados para
determinadas queries e criar um script SQL que guardará as estatísticas no banco de
dados. Ele indicará para cada query executada o quanto consumiu de recursos, o
número de vezes que foi chamada e o número de linhas processadas. Deixando fácil a
identificação de qual query está utilizando mais os recursos do sistema.
6) Autotrace Report. Este permite visualizar um relatório, após uma execução bem
sucedida de uma query, contendo o caminho de execução utilizado pelo SQL Optimizer.
7) Statspack Scripts. Trata-se de um pacote de scripts que permitem automatizar,
armazenar e visualizar dados estatísticos de performance nas tabelas do Oracle para
que sejam gerados relatórios e possibilitem analises.

Todo esse conjunto de ferramentas está disponível no Oracle 11g. Houveram melhorias
e adaptações de alguns deles para as novas versões do Oracle 12c e 18c. Para essas
novas versões, as ferramentas que existem foram melhoradas para funcionar de forma
adaptativa e não mais condicional, de forma que por exemplo o plano de execução
para uma query SELECT seguiria por um caminho fixo, agora diversos caminhos podem
ser utilizados dependendo do valor de performance encontrado.

Na versão 12c, temos:


Adaptive SQL Plan Management (SPM) ou Plano de Gerenciamento SQL Adaptativo. O SPM
Evolve Advisor é uma infraestrutura de tarefas que permite agendar uma tarefa
evolutiva, executar novamente uma tarefa evolutiva e gerar relatórios persistentes.
A nova tarefa de evolução automática, SYS_AUTO_SPM_EVOLVE_TASK, é executada na
janela de manutenção padrão. Essa tarefa classifica todos os planos não aceitos e
executa o processo de evolução para eles. Se a tarefa encontrar um novo plano com
desempenho melhor do que o plano existente, a tarefa aceitará automaticamente o
plano. Também é possível executar tarefas de evolução manualmente usando o pacote
DBMS_SPM.

Adaptive query optimization ou Otimização de consulta adaptável. A otimização de


consulta adaptável é um conjunto de recursos que permite ao otimizador fazer
ajustes em tempo de execução nos planos de execução e descobrir informações
adicionais que podem levar a melhores estatísticas. Nestes conjunto de recursos
novos planos de execução de queries serão analisados, existirá uma reotimização
automática de queries e inclusive novos histogramas. Basicamente esta melhoria
modificou totalmente o funcionamento do SQL Optimizer.

In-Memory aggregation ou Agregação In-Memory. Essa otimização minimiza a junção e o


processamento GROUP BY necessários para cada linha ao unir uma única tabela grande
a várias tabelas pequenas, como em um esquema em estrela. A agregação VECTOR GROUP
BY usa a infraestrutura relacionada ao processamento de consulta paralela (PQ) e
combina-a com algoritmos eficientes da CPU para maximizar o desempenho e a eficácia
da agregação inicial executada antes da redistribuição dos dados de fatos.

Na versão 18c, temos:


Tabelas temporárias privadas. Tabelas temporárias privadas são objetos de banco de
dados temporários que são descartados automaticamente no final de uma transação ou
sessão. Uma tabela temporária privada é armazenada na memória e é visível apenas
para a sessão que a criou. Uma tabela temporária privada restringe o escopo de uma
tabela temporária a uma sessão ou transação, proporcionando mais flexibilidade na
codificação de aplicativos, levando a uma manutenção de código mais fácil e a uma
funcionalidade mais pronta para uso.

Houveram aprimoramentos do SQL Tuning Advisor para o Oracle Exadata Database


Machine. O SQL Tuning Advisor pode recomendar um perfil SQL com reconhecimento de
Exadata. No Oracle Exadata Database Machine, o custo das verificações inteligentes
depende do tempo de pesquisa de E/S das estatísticas do sistema (ioseektim), da
contagem de leitura de vários blocos (mbrc) e da velocidade de transferência de E /
S (iotfrspeed). Os valores dessas estatísticas geralmente diferem no Exadata e
podem influenciar a escolha do plano. Se as estatísticas do sistema estiverem
desatualizadas e se coletá-las melhorar o desempenho, o SQL Tuning Advisor
recomenda aceitar um perfil SQL com reconhecimento de Exadata.

Novo pacote para gerenciar conjuntos de ajustes SQL. Agora é possível utilizar o
DBMS_SQLSET em vez de DBMS_SQLTUNE para criar, modificar, descartar e executar
todas as outras operações de conjunto de ajuste SQL.

O OPTIMIZER_ADAPTIVE_STATISTICS foi retirado do feedback de desempenho. Ao


contrário das versões anteriores, a configuração do parâmetro de inicialização
OPTIMIZER_ADAPTIVE_STATISTICS como TRUE ou FALSE agora não tem efeito no feedback
de desempenho.