Você está na página 1de 76

SOCIEDADE EDUCACIONAL DE SANTA CATARINA - SOCIESC

INSTITUTO SUPERIOR TUPY - IST

Jos Ricardo Maaneiro


UTILIZAO DE FERRAMENTAS ADMINISTRATIVAS PARA OTIMIZAO DE
CONSULTAS SQL EM BANCO DE DADOS ORACLE

Joinville
2008/2

J OS R ICARDO M AANEIRO

Utilizao de Ferramentas Administrativas Para Otimizao de Consultas SQL em Banco


de Dados Oracle

Trabalho de Concluso de Curso, apresentado ao


Instituto Superior Tupy - IST, como requisito parcial para a obteno de grau de Bacharel de Sistemas de Informao sob a orientao do professor
Dr. Mehran Misaghi.

Joinville
2008/2

MAANEIRO, JOS RICARDO. Utilizao de Ferramentas Administrativas Para


Otimizao de Consultas SQL em Banco de Dados Oracle
Joinville: SOCIESC, 2008/2.

J OS R ICARDO M AANEIRO

Trabalho de Diplomao sob o ttulo Utilizao de Ferramentas Administrativas Para


Otimizao de Consultas SQL em Banco
de Dados Oracle, defendido por Jos Ricardo Maaneiro e aprovado em 02 de dezembro de 2008, em Joinville, pela banca
examinadora constituda conforme abaixo:

Prof. Dr. Mehran Misaghi- IST

Prof. Msc. Luiz Carlos Camargo - IST

Prof. Msc. Salvador Antonio dos Santos - IST

Ao Professor Dr. Mehran Misaghi


Pelo incentivo e dedicao incondicional na orientao deste trabalho, mesmo
com todos os contratempos e dificuldades
impostas por desafios desta natureza

AGRADECIMENTO

Agradeo sobretudo a Deus, que me deu


foras para concluir este trabalho quando
tantas vezes desanimei.
A meu orientador, professor Dr. Mehran Misaghi, que em todos os momentos esteve
disposto a me ajudar, sempre com pacincia e me motivando para a concluso deste
trabalho.
professora Glaci, que sempre se disps
a ajudar nas correes gramaticais.
Aos meus pais, minha av, pelo amor e dedicao que sempre tiveram para comigo
em todos os momentos da vida.
minha amvel noiva e minha filha pela
pacincia, compreenso, carinho e amor.
Ao IST, pela qualidade do ensino que me
foi prestado durante todos os anos em que
freqentei a instituio.
A todos os amigos, familiares e colegas de
trabalho que contriburam de alguma forma
para a concluso deste trabalho.

"No me preocupa que no exera um cargo, o que me preoculpa como me tornar capaz de um.
No me preocupa o no ser conhecido, mas procuro tornar-me
digno de ser conhecido"
Autnomo

RESUMO

Este trabalho aborda tcnicas de otimizao de consultas, visando demonstrar um desempenho


adequado na execuo dos comandos. Inicialmente apresenta a parte conceitual de otimizao
de consultas e ressalta a importncia do monitoramento. Em seguida, descreve o Otimizador
do Oracle e as tcnicas de otimizao, tais como criao de ndices e uso de de hints. O objetivo desse trabalho apresentar uma melhor visualizao das consultas com problemas de
uma forma mais simples e gil. Foram realizadas as otimizaes com o auxlio de ferramentas para esta finalidade e apresentados os ganhos de desempenho obtidos com as alteraes.
A metodologia empregada um estudo de caso, utilizando ferramentas administrativas e de
desenvolvimento, para o auxlio das otimizaes que sero realizadas nas consultas de um sistema de help desk de uma determinada empresa. Concluiu-se que a utilizao de ferramentas
agilizam o processo de identificao e otimizao das consultas, por obterem muitas funcionalidades pr-configuradas.
Palavras-chave: Consulta. Desempenho. Otimizao. Ferramentas.

ABSTRACT

This work boards consultations optimizations techniques, aiming at to demonstrate one adjusted
performance in the execution of the commands. Initially it presents the conceptual part of consultations optimization and stands out the importance of the monitoring. After that, it describes the
Oracle optimizer and the techniques of optimizations, such as creation of indexes and the use of
hints. The objective of this work is to present better visualization of problematic consultations in
a simple and agile form. In sequence this work will boards optimizations with the help of specifics tools and shows the benefits of performance with the alterations. The methodology used is
a use case, utilizing administrative and development tools for the help of the optimizations that
will be realized in the consultations of a help desk system of a defined company. We are able to
conclude that the utilizations of consultatioukns tools speeding up the identifications process of
consultations optimizations, for getting much pay-configured functionality.
Keywords: Consult. Performance. Optimization. Tools.

LISTA DE ILUSTRAES
Figura 1 Custo X benefcio sobre o ajuste do desempenho
Figura 2 Viso do processamento de consultas
Figura 3 Acesso a tabela via ndice

. . . . . . . . . . . . . . . . . . . . . . . . 18

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

Figura 4 Acesso a tabela sem ndice.


Figura 5 Home PL/SQL Developer

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

Figura 6 Query Builder

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

Figura 7 SQL Window

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

Figura 8 Command Window


Figura 9 Reports

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

Figura 10 Object Browser

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

Figura 11 Performance Optimizing

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

Figura 12 Home do Oracle Enterprise Manager (OEM)

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

Figura 13 Abas de navegao

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

Figura 14 Nveis de detalhes

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

Figura 15 Links relacionados

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

Figura 16 Home Oracle SQL Developer


Figura 17 Navegador de objetos

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

Figura 18 Sesses abertas pelo script

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

Figura 19 Sesses com maiores atividades no banco de dados


Figura 20 Descrio das tabelas

. . . . . . . . . . . . . . . . . . . . 41

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

Figura 21 Consulta tabela HISTORICOS no PL/SQL Developer


Figura 22 Consulta tabela USUARIOS no Oracle SQL Developer

. . . . . . . . . . . . . . . . . . . . 44
. . . . . . . . . . . . . . . . . . . 45

Figura 23 Consulta tabela HISTORICOS no PL/SQL Developer (WHERE,AND)


Figura 24 Consulta na tabela HISTORICOS (WHERE,AND)

. . . . . . . . . . . . . . . . . . . . . . . . 46

Figura 25 Consulta na tabela HISTORICOS (WHERE,AND,OR)


Figura 26 Visualizar sesses para ativar e desativar trace
Figura 27 Caixa de dialogo (ativa|desativa o trace)
Figura 28 Comando TKPROF

. . . . 46

. . . . . . . . . . . . . . . . . . . . 47

. . . . . . . . . . . . . . . . . . . . . . . . . . 50

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

Figura 29 Comando para remover estatsticas

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

Figura 30 Comando para atualizar estatsticas

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

Figura 31 Consulta_1 (com um ndice)


Figura 32 Consulta_1 (com dois ndices)

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

Figura 33 Comando para criar as tabelas USUARIOS_TCC e HISTORICOS_TCC


Figura 34 Consulta na HISTORICOS_TCC e USUARIOS_TCC (sem linhas)

. . 57

. . . . . . . . 58

Figura 35 Grfico comparativo Consulta_1 (Tempo)

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

Figura 36 Grfico comparativo Consulta_1 (Custo)

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

Figura 37 Maiores atividades no banco de dados


Figura 38 Detalhes da Consulta_2

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

Figura 39 Recomendaes sugeridas pelo OEM

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

Figura 40 Mostragem comparativa dos planos de execuo


Figura 41 Configurao de horrio

. . . . . . . . . . . . . . . . . . . . . . . . 61

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

Figura 42 Grfico comparativo Consulta_2 (Tempo)

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

Figura 43 Grfico comparativo Consulta_2 (Custo)

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

Figura 44 Clusula MINUS

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

Figura 45 Consulta_3 (sem estatsticas)


Figura 46 Consulta_3 (com HINT )

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

Figura 47 Grfico comparativo Consulta_3 (Tempo)

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

Figura 48 Grfico comparativo Consulta_3 (Custo)

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

Figura 49 Consulta_1 (sem ndices)

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

Figura 50 Consulta_2 (sem ndices)

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

Figura 51 Consulta_3 (sem ndices)

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

LISTA DE TABELAS
Tabela 1 Resultado da consulta na V$INSTANCE

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

Tabela 2 Resultado da consulta na PLAN_TABLE

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

Tabela 3 Resultado da consulta na V$SESSION

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

Tabela 4 Resultado da consulta na USER_DUMP_DEST


Tabela 5 Trace com os custos da consulta

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

Tabela 6 Resultado da verificao de estatstica

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

Tabela 7 Resultados Consulta_1 (sem ndices)

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

Tabela 8 Resultados Consulta_1 (com um ndice)


Tabela 9 Trace com os custos da Consulta_1

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

Tabela 12 Resultado da consulta na DBA_INDEXES


Tabela 13 Consulta_2 (Comparativo)

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

Tabela 10 Resultados Consulta_1 (com dois ndices)


Tabela 11 Consulta_1 (Comparativo)

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

Tabela 14 ndices das tabelas HISTORICOS e USUARIOS


Tabela 15 Consulta_3 (Comparativo)

. . . . . . . . . . . . . . . . . . . . . . . . . 49

. . . . . . . . . . . . . . . . . . . . . . . . . 65

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

Tabela 16 Resultados comparativos (Tempo)

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

Tabela 17 Resultados comparativos (Custo)

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

Tabela 18 Resultados comparativos (Pesquisa)

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

LISTA DE SIGLAS
SGBD Sistema Gerenciador de Banco de Dados
SQL Structured Query Language
SGBDR Sistema Gerenciador de Banco de Dados Relacional
E/S Entrada e Sada
OEM Oracle Enterprise Manager
DML Data Manipulation Language

SUMRIO
1 INTRODUO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

15

2 CONCEITO DE OTIMIZAO DE CONSULTAS EM BANCO DE DADOS ORACLE . .

17

2.1 IDENTIFICANDO PROBLEMAS DE DESEMPENHO . . . . . . . . . . . . . . . . .

17

2.2 OTIMIZANDO COMANDOS SQL

19

. . . . . . . . . . . . . . . . . . . . . . . . . . .

2.3 OTIMIZAO AUTOMTICA REALIZADA PELO SGDBR

. . . . . . . . . . . . . .

19

. . . . . . . . . . . . . . . . . . . . . . . . .

20

2.5 O OTIMIZADOR DO ORACLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

22

2.5.1 Papel do ndice no desempenho . . . . . . . . . . . . . . . . . . . . . . . . . . .

25

2.5.2 Utilizao de hints para um melhor desempenho

. . . . . . . . . . . . . . . . . .

27

2.6 UTILITRIOS PARA IDENTIFICAR PROBLEMAS DE DESEMPENHO . . . . . . . .

29

2.7 DEFINIO E CARACTERSTICAS DAS FERRAMENTAS . . . . . . . . . . . . . .

30

2.7.1 PL/SQL DEVELOPER

30

2.4 PROCESSAMENTO DE CONSULTA

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.7.2 ORACLE ENTERPRISE MANAGER (OEM)

. . . . . . . . . . . . . . . . . . . . .

34

2.7.3 ORACLE SQL DEVELOPER . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

37

3 ESTUDO DE CASO

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

39

3.1 AMBIENTE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

39

3.2 PONTOS DE ANLISE DAS CONSULTAS SQL

. . . . . . . . . . . . . . . . . . .

42

3.2.1 Estrutura das Tabelas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

43

3.2.2 Explain

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

47

3.2.3 Traces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

49

3.2.4 TKPROF

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

50

3.2.5 Anlise do trace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

51

3.2.6 Otimizao da consulta utilizando ndices

. . . . . . . . . . . . . . . . . . . . . .

53

3.2.7 Otimizao da consulta com o auxlio do OEM . . . . . . . . . . . . . . . . . . . .

59

3.2.8 Otimizao da consulta utilizando hints

. . . . . . . . . . . . . . . . . . . . . . .

64

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

68

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

69

REFERNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

70

ANEXOS

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

72

ANEXO A - PESQUISA PARA VERIFICAR PARMETRO DE CUSTO . . . . . . . . . .

73

ANEXO B - TABELA DE VALORES PARA REFERNCIA

. . . . . . . . . . . . . . . .

74

. . . . . . . . . . . . . . . . . . . . . . . . .

75

3.3 RESULTADOS OBTIDOS


4 CONCLUSO

ANEXO C - CONSULTAS REALIZADAS

15

INTRODUO

Com o avano tecnolgico, os processos tornam-se muito mais geis, sendo hoje tambm
indispensvel a utilizao desses sistemas para o processamento do alto nmero de informaes que so geradas diariamente por todos os setores de uma organizao como recursos
humanos, financeiro entre outros. H necessidade que essas informaes estejam disponveis
de forma cada vez mais rpida e consistentes sempre que forem requisitadas.
Assim, muitas empresas implementam a utilizao de banco de dados para armazenamento
de suas informaes de modo confivel e com alta performance tanto de processamento quanto
de recuperao das mesmas, permitindo tambm a utilizao de aplicaes externas.
Embora existam no mercado diversos Sistemas Gerenciadores de Banco de Dados, ser
trabalhado com o produto desenvolvido pela Oracle, por se tratar de um software robusto, que
atende pequenas e grandes empresas, sendo assim um dos mais utilizados atualmente e considerado extremamente estvel e funcional. Ele responde a todas as expectativas com milhares
de acessos simultneos. Essas caractersticas levam necessidade de conhecer suas ferramentas e at mesmo ferramentas desenvolvidas por demais empresas a usufruir todos os seus
recursos.
Entretanto, no se conta com a utilizao de todos esses recursos, pois, essas empresas
que trabalham com suas informaes digitalizadas, deparam-se diariamente com uma certa
lentido com que essas informaes so resgatadas.
Nessas empresas so apresentados os mais diversos tipos de ambientes existentes, utilizando muitas vezes sistemas antigos no desenvolvidos para trabalhar em ambientes de alto
nvel de performance. Dessa forma, acabam no oferecendo um trabalho otimizado, tornando
a manuteno muito mais complexa e trabalhosa.
O objetivo deste trabalho de concluso de curso a aplicao de ferramentas de anlise,
para assim propor um cenrio com consultas mais eficientes. Onde ser descrito maiores detalhes das ferramentas de anlise, que sero utilizadas para a realizao do processo de tuning
das consultas.
Ser realizado um estudo de caso utilizando ferramentas da prpria Oracle e de software
proprietrio, neste caso a PL/SQL Developer, para esta pesquisa. Tambm sero utilizados
mtodos de coletas que sero extradas das prprias ferramentas propostas para monitorao,
desenvolvimento e execuo dos testes, permitindo uma viso real dos problemas no cenrio
proposto.
Alm disso, ser preparado um banco de dados Oracle para a realizao desses testes
e assim possibilitar a aplicao de ferramentas para extrao e anlise das consultas, tendo

16

como base de estudo o Sistema Gerenciador de Banco de Dados (SGBD) Oracle de onde as
anlises, as consultas e as melhorias pretendem ser obtidas e aplicadas.
No captulo dois deste documento, sero apresentados os conceitos de otimizao das
consultas no banco de dados, a otimizao das consultas Structured Query Language (SQL),
as carctersticas do Otimizador do SGBD e de forma mais especfica o da prpria Oracle, a
otimizao atravs de ndices, a aplicao de Hints, sugerindo o melhor plano de acesso a
ser realizado e alguns utilitrios para o auxlio da monitorao e melhorias no desempenho de
uma base de dados. Tem-se tambm as caractersticas das principais ferramentas que sero
utilizadas para a anlise e identificao das consultas com problemas de desempenho, que
sero mais a frente utilizadas para a manuteno dessas consultas.
No captulo trs onde o estudo de caso ser relatado. Nele tambm ocorrer a abordagem
das consultas SQL, os resultado dos testes, solues propostas e as aplicadas, todas com suas
devidas comparaes de ganhos e custos, atravs de amostragens obtidas com a utilizao das
ferramentas que foram sugeridas nesse documento.
Em seguida, sero realizadas as concluses obtidas com os resultados do estudo e sugestes para a realizao de novas pesquisas.
Por fim, se encontram os anexos com os resultados das consultas que foram realizadas
antes do processo de tuning, para obter-se um valor de comparao, fundamentando, assim, a
necessidade dessas melhorias.

17

CONCEITO DE OTIMIZAO DE CONSULTAS EM BANCO DE DADOS ORACLE

2.1

IDENTIFICANDO PROBLEMAS DE DESEMPENHO


Segundo Lima (2002), a grande parte dos problemas de desempenho enfrentados em apli-

caes, que utilizam SQL, est relacionada a erros encontrados no modelo de dados fsico,
ocupando uma parcela de 25% do total. Os demais 65% ficam a cargo de problemas relacionados aplicao, estando assim ligado diretamente equipe de desenvolvimento 90% da
totalidade.
Diante disso, necessrio, para a identificao dos problemas de desempenho de um
banco de dados, efetuar um monitoramento constante dos processos que venham a ser executados nessa base, tendo como objetivo nico a preveno de problemas de desempenho, tarefa
normalmente realizada por Administradores de banco de dados, desenvolvedores, analistas de
sistemas e projetistas (GONALVES, 2004).
Com o monitoramento, pode-se identificar quais processos esto consumindo muita memria, processamento e atividades de disco - Entrada e Sada (E/S), ou demorando muito para
serem executados. Muitas vezes, esses problemas so relatados diretamente pelos usurios
que esto obtendo uma resposta com um tempo consideravelmente alto ao executar um determinado processo. O monitoramento do desempenho de uma base de dados deve ser realizado
de forma satisfatria, pois se torna de extrema importncia no sucesso de implementao das
aplicaes. O monitoramento que apontar os pontos crticos e tambm auxiliar os desenvolvedores a identificar as falhas. Para que o plano venha a ser efetuado com sucesso, dever
contar com auxlio de ferramentas para ajudar na monitorao do desempenho e o ajuste do
sistema (MOLINARI, 2003).
Tambm sero apresentadas, no decorrer do trabalho, de forma mais detalhada, as ferramentas que podem ser utilizadas para realizar diagnsticos de desempenho, otimizar e melhorar
a performance das rotinas que acessam ou executam algum processo na base de dados.
Entre elas, sero utilizadas ferramentas que a prpria Oracle disponibiliza juntamente com
o banco de dados, e tambm ferramentas desenvolvidas para facilitar o desenvolvimento de
sistemas em linguagens como PL/SQL destinado a armazenamento em banco de dados Oracle
e que possui funcionalidades de monitoramento para anlise, essas ferramentas apresentam
solues para a analise e melhorias em consultas SQL. Algumas dessas ferramentas so capazes de monitorar e identificar os gargalos, contidos nos programas que acabam degradando
o desempenho dos sistemas e da base de dados .

18

Entre essas ferramentas, tem-se o OEM, desenvolvida pela prpria Oracle, mais indicada
para a administrao dos bancos de dados. Com ela, pode-se monitorar reas cruciais relacionadas ao desempenho do banco de dados. O OEM possui diversas funcionalidades agregadas
que possibilitam assim a visualizao de toda uma base de dados de forma grfica ou gerao
de tabelas. Entre essas informaes, pode-se citar, uso de CPU, memria, acesso a disco entre
outras (ORACLE9I, 2001).
Quanto s atividades de monitoramento, podem ser classificadas em dois tipos:

Atividades contnuas (pr-ativas)


Atividades sob demanda (reativas)
Atividades que so executas continuamente buscam a preveno, a fim de evitar os problemas que estaro por surgir, monitorando assim o crescimento de tabelas, a anlise dessas
tabelas e seus respectivos ndices, reconstruo dos ndices e analisando se h a necessidade
de criao de novos ndices ou at mesmo a partio de tabelas e ndices que outra soluo
Oracle para tabelas com alto nmero de dados. J as atividades, sob demanda, so efetuadas
mediante o surgimento do problema (CARATTI, 2007). Mas, muitas vezes, pode-se fazer uma
empresa perder horas preciosas com acerto dessa consulta com problema de desempenho,
levando a mesma a perder contratos e prestgio por no cumprir seus prazos.

Figura 1: Custo X benefcio sobre o ajuste do desempenho


Fonte: Tuning (2003)

Com o grfico da Figura 1, ilustram-se as variaes que ocorrem durante toda a fase do
ciclo de vida de uma aplicao. As cores mostram o grau de complexidade em relao aos
pontos onde os problemas tornam-se mais precrios para serem solucionados. A ilustrao
tambm demonstra que o quanto antes existir a preocupao com o ajuste do desempenho,
mais benefcio e menos custo o projeto da aplicao apresentar.

19

2.2

OTIMIZANDO COMANDOS SQL


Segundo Loney (2002), quanto menor o caminho que ser percorrido para localizar os

dados no banco de dados, maior ser o desempenho obtido.


Tem-se como objetivo em uma otimizao dos comandos SQL constru-lo, de forma mais
adequada, alcanando assim o desempenho desejado. Com isso, torna-se necessrio muitas
vezes realizar alterao na base de dados, como a criao de novos ndices ou alterao do
relacionamento entre algumas entidades (COUCHMAN, 1998).
Para isso, so utilizadas tcnicas de tuning de SQL, com o propsito de otimizar o acesso
as informaes. Tambm conhecidas em algumas literaturas como ajuste ou afinao, tm
como objetivo refinar o SGBD. Para Molinari (2003), tuning o ajuste de alguma coisa para que
funcione melhor, tendo como objetivo reduzir o nmero de blocos lidos, gravados e alterados.
Contribuindo para isso, o desenvolvedor afina a aplicao com alteraes nas sentenas SQL
(SANTOS, 2001). Com a realizao desses ajustes, os comandos SQL (SELECT, INSERT,
UPDATE, DELETE) sero muito mais eficientes, garantindo assim um timo desempenho para
a aplicao que acesse o Banco de dados (FERNANDES, 2002).
Algumas vezes, aplicativos bem projetados tambm podem sofrer problemas com relao a
desempenho, em alguns casos, esses comandos SQL no tiveram a sua construao de forma
adequada. o tipo de falha que responsvel pela maioria dos problemas ocorrentes no
banco de dados (LONEY, 2002). Isso ocorre porque a sentena SQL no foi escrita de maneira
otimizada, e o banco de dados, ao responder as requisies enviadas, depende da mesma
para que as informaes desejadas sejam retornadas, influenciando assim no desempenho do
banco de dados (RAMOS, 2003).

2.3

OTIMIZAO AUTOMTICA REALIZADA PELO SGDBR


O Sistema Gerenciador de Banco de Dados Relacional (SGBDR) possui, em sua estrutura,

um Otimizador (optimizer no caso do Oracle) responsvel por otimizar os comandos Data Manipulation Language (DML)(Linguagem de Manipulao de Dados), onde esses comandos sero
executados, seguindo um plano de execuo ou por meio de regras definidas no sistema (GONALVES, 2004). Segundo Molinari (2003), esse Otimizador responsvel de escolher, aps a
solicitao de uma operao, um plano de execuo, visando da melhor forma possvel o que
foi solicitado. Sendo assim, quando efetuada uma requisio SQL (SELECT, UPDATE, DELETE ou INSERT ), aps a analise, caso haja a necessidade, o Otimizador optar para o melhor
caminho a ser realizado, garantindo o desempenho, de forma que o usurio nem tenha conheci-

20

mento, pois, a escolha do melhor caminho realizada internamente. Dessa forma, mostra que
o Otimizador possui vrios conhecimentos que o ajudam neste trabalho (CERCOLA, 1995).
Date (2006) anuncia que a otimizao, de forma automtica, ideal para os usurios que
no possuem muitos conhecimentos para efetuar seus prprios ajustes em suas consultas SQL,
afirmando assim que h mais de uma razo para que o Otimizador realize a escolha do melhor
caminho, do que o usurio, entre elas:
a) O banco de dados emprega estatsticas aos mais diversos objetos, so informaes que
o usurio no possuem, ao contrrio do Otimizador.
b) O Otimizador capaz de testar centenas de estratgias para obter o melhor desempenho, atitude que no seria realizada por um ser humano e muito pouco vivel para o
requisito tempo.
c) Os Otimizadores foram desenvolvidos pelos conhecimentos e servios de timos programadores, tornando assim o fruto desse conhecimento disponvel para o usurio oferecendo assim uma maior quantidade de recursos.
O Otimizador busca a melhor opo de plano para acesso aos dados, tendo assim um
papel importante na otimizao dos comando SQL. O Otimizador tm a capacidade de ler
as expresses inseridas e execut-las da melhor forma possvel ao seu ver. Para Gonalves
(2004), apesar de grandes esforos do Otimizador, haver situaes em que o usurio escolher
a forma mais eficiente para obter as informaes desejadas. Nesses momentos, nota-se que
seria interessante o trabalho de um desenvolvedor com outros conceitos em paralelo com o
Otimizador, buscando, dessa forma, atender a todos os requisitos de desempenho esperados.
Entretanto, at o Otimizador chegar ao seu entender que o plano de execuo que ele veio
a escolher o melhor, j efetuou uma srie de tarefas para avaliar expresses e codificaes,
encontrando assim a melhor forma de acesso aos dados, como no caso do SELECT apresentar
mais de uma tabela, qual as ligaes (joins) que sero utilizadas (TUNNING/TEKNO, p.5-2).

2.4

PROCESSAMENTO DE CONSULTA
Para Date (2006), o processamento se divide em quatro grandes estgios, demonstrando

assim como so executadas estratgias e tcnicas de otimizao:

Estgio 1 converter a consulta para um formato interno: traduz a consulta original efetuada para um formato que venha a ser identificado pela mquina para realizar as instrues, lapidando o cdigo e assim removendo detalhes da sintaxe que o SQL utiliza

21

para uma melhor compreenso dos desenvolvedores, encaminhando assim, o cdigo j


de forma compreensiva para a mquina para estgios subseqentes;

Estgio 2 converter para a forma cannica: nesse momento o Otimizador descarta os


valores reais que foram utilizadas na consulta original e todos os caminhos de acesso
fsico dos dados que estejam contidos no banco de dados, realizando uma bateria de
testes de otimizaes que o Otimizador considera adequadas.

Estgio 3 Escolher procedimentos candidatos de baixo nvel: nesse ponto ser analisado como a consulta j convertida e transformada ser executada, efetuando consultas
como ndices existentes nas tabelas ou outros caminhos de acesso, distribuio de valores, cluster fsico de dados armazenados etc;

Estgio 4 - Gerar planos de consultas e escolher o mais barato: Nesse ltimo estgio, ser
realizada a montagem de um conjunto de planos de acesso para assim serem avaliados.
O plano a ser escolhido, vai ser aquele que apresentar um custo mais econmico, utilizando frmulas de custo e os conhecimento das estatsticas do banco de dados. Esses
planos so constitudos por uma srie de procedimentos, e assim se tornam responsveis
pela implementao das operaes.
A Figura 2 mostra os estgios do processamento da consulta.

Figura 2: Viso do processamento de consultas


Fonte: Adaptado de Date (2006)

22

2.5

O OTIMIZADOR DO ORACLE
Para Niemiec (2003), o modo de otimizao que o banco de dados utilizar definido no

parmetro OPTIMIZER_MODE do arquivo de configurao do Oracle (init.ora) ou em nvel de


sesso, sendo que existem cinco tipos possveis:
a) CHOOSE: utiliza a otimizao baseada em custo para todas as tabelas analisadas. Escolhe o mtodo mais rpido estimando o tempo de execuo para diferentes mtodos
de execuo. um bom mtodo para sistemas bem montados e bem ajustados;
b) RULE: utiliza a otimizao baseada em um conjunto de regras a respeito de como o
Oracle processa instrues;
c) FIRST_ROWS: busca a primeira linha de forma mais gil (fora a utilizao dos ndices).
Recomenda-se para sistemas no ajustados, que efetua as suas transaes de forma
isolada;
d) FIRST_ROWS_(1 | 10 | 100 | 1000): busca as primeiras linhas de forma mais rpida.
recomendado para aplicaes que exibem de forma repetitiva informaes parciais.
e) ALL_ROWS: busca todas as linhas de forma mais rpida. de bom uso para sistemas
em lote e com grande volume(normalmente no se utilizado).
Levando-se em conta que o Oracle 10g baseia-se em custo, nesse documento d-se foco
para a utilizao do modo CHOOSE. Para isso, torna-se obrigatrio executar o comando ANALYZE, que tem como principal objetivo atualizar as estatsticas das tabelas, informaes que podem ser resgatadas nas tabelas USER_TABLES, USER_TAB_COLUMNS, USER_INDEXES,
USER_CLUSTERS e DBA_PART_COL_STATISTICS. medida que as tabelas vo recebendo
novos dados, estas estatsticas devem ser geradas, tornando assim um trabalho contnuo (GONALVES, 2004), tarefa normalmente realizada pelo administrador de banco de dados. Porm,
para no tornar-se uma tarefa repetitiva, gera-se para essa rotina um script que realize tal procedimento, de forma automtica, onde o mesmo adicionado em tarefas agendadas (Windows),
na crontab (famlia Unix) ou at mesmo via job no prprio banco de dados Oracle.
O comando ANALYZE tambm utilizado, tanto para gerar estatstica quanto para eliminar
as mesmas, sendo essas esttisticas, em modo custo, indispensveis para se obter o melhor
desempenho de uma consulta, sendo utilizado assim para (DBA-2, 2003):
a) Performance Tuning;
b) Validar a estrutura de Objetos;

23

c) Gerenciamentos do espao utilizado pelo objeto.


Sintaxe do ANALYZE:

ANALYZE { INDEX index\_name | TABLE table\_name | CLUSTER cluster\_name }


[ PARTITION ( partition\_name ) ]
[ [ COMPUTE | ESTIMATE | DELETE ] STATISTIC ]
[ VALIDATE STRUCTURE [ CASCADE ] ]
[ LIST CHAINED ROWS INTO table\_name ]
Onde:
COMPUTE: examina todas as linhas do objeto
ESTIMATE: examina parte das linhas do objeto
DELETE: remove as estatsticas do objeto
Exemplos:

SQL> ANALYZE TABLE NOME_TABELA ESTIMATE STATISTICS;


Table analyzed.
SQL> ANALYZE TABLE NOME_TABELA COMPUTE STATISTICS;
Table analyzed.
SQL> ANALYZE TABLE NOME_TABELA DELETE STATISTICS;
Table analyzed.
O modo CHOOSE utiliza-se da Ordem de Preferncia para o acesso aos dados, escolhendo
um caminho de acesso baseado nos caminhos disponveis e nas suas respectivas pontuaes,
recorrendo, assim, da mais rpida para a mais lenta, como se apresenta a seguir (FERNANDES,
2002):
a) Acesso de uma nica linha via ROWID;
b) Acesso de uma nica linha via Cluster Join;
c) Acesso de uma nica linha via Hash Cluster Key com Unique ou Primary Key ;
d) Acesso de uma nica linha via ndice Unique ou Primary Key ;
e) Cluster Join;

24

f) Hash Cluster Key ;


g) Cluster Key Indexada;
h) ndice composto;
i) ndices de uma coluna;
j) Intervalo de pesquisa com fronteira, em colunas indexadas;
k) Intervalo de pesquisa sem fronteira, em colunas indexadas;
l) Sort Merge Join;
m) Mximo ou mnimo de colunas indexadas;
n) ORDER BY em colunas indexadas;
o) FULL TABLE SCAN.
Segundo Fernandes (2002), tambm se devem levar em considerao informaes como:
a) Nmero de blocos necessrios para realizar um full Table Scan X nmero de blocos
obtidos em uma operao de leitura;
b) Nmero de linhas em uma tabela;
c) Seletividade do dado;
d) outras informaes estatisticamente geradas.
E consiste nos seguintes passos:
a) O Otimizador desenvolve um conjunto de planos de execuo, baseados nos caminhos
disponveis e HINTS (uma espcie de dica que faz com que o Otimizador escolha o
plano ideal para uma consulta);
b) Com os dados e informaes estatsticas armazenados no seu dicionrio de dados,
estima o custo dos planos de execuo.
c) Baseado em informaes como atividade de disco, tempo de processamento e memria,
efetua um clculo para chegar ao custo, que um valor estimado proporcional ao tempo
necessrio para a execuo do comando;
d) Escolhe, dessa forma, o plano que obter um menor custo.

25

Como se pode ver, o Otimizador tem em vista sempre obter o melhor desempenho para
uma consulta ou o mais prximo possvel. No entanto, pode-se notar a importncia que se deve
dar ao ANALYZE, pois sem o mesmo atualizado freqentemente no se alcanar o desempenho desejado. Ele poder transformar essas consultas em expresses equivalentes, caso haja
necessidade, para se obter um ganho de desempenho. O tpico 2.6 mostrar alguns conceitos
de identificao de problemas de desempenho dessas consultas.
Para acompanhar e saber qual caminho de acesso foi utilizado pelo otimizador para a execuo da consulta, podem ser utilizados alguns dos utilitrios: EXPLAIN PLAN, AUTOTRACE e
TKPROF (FERNANDES, 2002).

2.5.1

Papel do ndice no desempenho

O uso de ndices uma das principais tcnicas utilizadas normalmente por administradores
de banco de dados, visando aumentar o desempenho de comandos SQL (SELECT, UPDATE e
DELETE).
Os ndices so estruturas internas do banco de dados. Tm como propsito fornecer ponteiros, funcionando assim como endereos para as linhas de uma tabela que possui determinado
valor de chave, aumentando assim o desempenho das consultas SQL que venham acessar um
percentual pequeno de linhas contidas nessas tabelas (FERNANDES, 2002).
Todos os ndices criados para as tabelas podem ser consultados na DBA_INDEXES e
tambm na USER_INDEXES. Na USER_INDEXES, encontram-se algumas colunas como TABLE_NAME, INDEX_NAME e DISTINCT_KEYS, que mostram o nome da tabela, nome do ndice e a sua seletividade. Na seletividade, encontra-se o nmero de registros que esto sendo
referenciados na tabela, de acordo com a chave criada para o ndice, e quanto mais prximo
do nmero total de linhas estiver o valor contido na coluna DISTINCT_KEYS, melhor o ndice,
pois, retornar uma menor quantidade de linhas para cada valor distinto e assim menor ser
o tempo de execuo do comando. Ao criar uma chave primria para uma tabela no Oracle,
automaticamente criado um ndice que possuir um nmero de seletividade igual ao nmero
de registros na tabela, tornando o mesmo um dos melhores ndices para ser utilizado em uma
consulta SQL (GONALVES, 2004).
Segundo Gonalves (2004), algumas vezes, o ndice no se torna vivel caso ocorra a necessidade de se resgatar muitos registros. Ao contrrio, o tempo de retorno ser satisfatrio. O
mesmo enfatizado por Fernandes (2002), segundo o qual, um ndice aumenta o desempenho
se o mesmo abordar um percentual baixo de linhas. Tambm apresenta algumas consideraes
sobre a utilizao de ndices, como:

26

a) Criar ndices em tabelas freqentemente utilizadas e que seu retorno seja de 2% a 4%


das linhas;
b) Em casos em que a pesquisa pelos dados seja somente atravs das colunas indexadas,
que no venham a acessar a tabela ou em que as colunas indexadas venham a ser
utilizadas em junes de tabelas, esse percentual pode vir a ser um pouco maior;
c) Um ndice no Oracle permanente, mesmo que o mesmo no venha a ser acessado;
d) A manuteno do ndice, como uma reconstruo, gera demandas de processamento e
E/S, tendo assim que analisar a sua criao.
O ganho de desempenho, por meio dos ndices, ocorre, pois o mesmo armazena somente
valores que pertencem chave de ndices, e se a consulta for composta pelos campos que
compe esse ndice, o Otimizador no tem a necessidade de acessar toda a tabela para buscar
esses dados (MAYER, 2001). Mesmo quando os dados requisitados, em uma consulta, no
fazem parte da chave de ndices, as consultas sero mais eficientes se as clusulas WHERE
estiverem utilizando com eficincia as chaves de ndice.
Com a ausncia dos ndices ou com sua utilizao de forma no adequada, o Otimizador
poder vir a efetuar uma leitura na tabela contida na clusula FROM, podendo tornar o desempenho da consulta no satisfatria, por exercer uma alta utilizao dos recursos computacionais
como processamento, memria, E/S e rede.

Figura 3: Acesso a tabela via ndice


Fonte: Adaptado de Tow (2003)

27

A Figura 3, mostra acessos utilizando ndices. So procuradas as ROWIDs no ndice, dentro dos critrios da clusula WHERE, realizando dessa forma, o acesso direto dos registros
contidos na tabela.

Figura 4: Acesso a tabela sem ndice.


Fonte: Adaptado de Tow (2003)

Na Figura 4, a tabela no possui ndice, realizando assim uma leitura completa dos blocos correspondentes aos dados (leitura de todos os registros da tabela), retornando somente
aqueles que correspondam aos critrios da consulta.
Segundo Gonalves (2004), a melhora do desempenho obtido, por meio dos ndices,
notado em instrues como SELECT, UPDADE e DELETE. J em instrues de INSERT,
encontra-se uma queda de desempenho. O fator ocorre, pois com a insero de uma linha
na tabela que possua colunas indexadas, o registro ter que ser inserido no ndice correspondente, apresentando assim uma maior lentido.
Contudo, sempre se deve analisar os benefcios que determinados ndices possam apresentar ao serem criados em uma tabela, e se realmente vivel ou no permanecer com os j
existentes.

2.5.2

Utilizao de hints para um melhor desempenho

Os chamados hints so sugestes que auxiliam na busca de um melhor desempenho.


Mesmo o Otimizador, tendo sua disposio diversas informaes estatsticas que o auxiliem
na escolha do melhor plano de execuo, em alguns casos, podem no ser a melhor escolha
(TUNING, 2003).

28

Por meio dessas sugestes, o Otimizador realizar um plano de execuo com base no que
foi declarado. Porm, por no se tratar de um comando, os hints podero ser desconsiderados
pelo Otimizador (NIEMIEC, 2003).
Com essas sugestes, pode-se especificar ao Otimizador informaes de como ser a
abordagem para o comando SQL, o alvo quando a abordagem baseada em custo e o caminho
de acesso para as tabelas acessadas pelo comando SQL (TUNING, 2003).
Segundo Niemiec (2003), os modelos de sugesto mais utilizados so:

INDEX : fora o uso de um ndice especfico;


Sintaxe:

SELECT /*+ INDEX (tabela ndice1, ndice2...) */ coluna1, ... from tabela...
ORDERED: especifica a ordem principal das tabelas;
Sintaxe:

SELECT /*+ ORDERED */ coluna1, ... from tabela...


PARALLEL: especifica um opo de consulta paralela;
Sintaxe:

SELECT /*+ PARALLEL (tabela, DEGREE, INSTANCES) */ coluna1, ... from tabela...
FIRST_ROWS: apanha as primeiras linhas mais rapidamente, fora o uso de ndices de
modo geral;
Sintaxe:

SELECT /*+ FIRST_ROWS(n) */ coluna1, ... from tabela...


RULE: forar a otimizao baseada em regras;
Sintaxe:

SELECT /*+ RULE */ coluna1, ... from tabela...

29

2.6

UTILITRIOS PARA IDENTIFICAR PROBLEMAS DE DESEMPENHO


A prpria Oracle fornece um pacote com a aquisio do banco de dados, contendo ferra-

mentas que possibilitam efetuar o monitoramento e identificar possveis gargalos que essas
consultas causam ao banco de dados, assim degradando o desempenho do mesmo.
Uma das ferramentas normalmente instalada junto ao processo instalao do banco de
dados Oracle o OEM, que pode ser utilizado para efetuar a monitorao das reas cruciais
relacionadas a desempenho do banco de dados de forma grfica.
A Oracle tambm disponibiliza a ferramenta Oracle SQL Developer, basicamente um SQL*Plus,
porm conta com uma interface grfica.
Outra ferramenta muito utilizada por fornecer uma srie de funcionalidades embutidas o
PL/SQL Developer.
As funcionalidades das ferramentas citadas anteriormente sero definidas no tpico 2.7
logo a seguir.
H tambm o TRACE, que um utilitrio utilizado para medir estatsticas de tempo e desempenho de uma determinada consulta, um processo em lote, ou at mesmo por o banco em
modo trace, visando descobrir gargalos. O comando gera arquivos ".trc", este encontra-se em
modo binrio, tendo que passar pelo TKPROF, para que possa ler as informaes, como tempo
total de processamento, nmero de blocos acessados em disco, nmero de linhas acessadas,
entre outras informaes (NIEMIEC, 2003).
Para converter os arquivos gerados com o trace para modo texto (.txt), e assim possibilitar a
sua leitura, utilizado o TKPROF, que tambm de grande utilidade para a gerao de planos
de execuo (GONALVES, 2004).
Os administradores e desenvolvedores contam com o EXPLAIN PLAN para visualizar o
plano de execuo dos comandos SQL. As informaes do plano de execuo, que foram resgatadas, so armazenadas na tabela PLAN_TABLE do banco de dados, onde o administrador
ou desenvolvedor pode consultar e analisar, verificando assim se h a necessidade de ajuste
da consulta para obter um ganho de desempenho (FERNANDES, 2002).
O SQL*Plus uma ferramenta constantemente utilizada pelo administrador. Com ela podese criar, copiar e remover as bases de dados, utilizando comandos SQL. Essa ferramenta
tambm utilizada para a gerao de relatrios, tornando-se muito til para realizar o monitoramentos da base de dados. Por meio do SQL*Plus, pode-se habilitar o utilitrio de AUTOTRACE,
gerando assim automaticamente um EXPLAIN PLAN e as estatsticas das consultas que sero
utilizadas, aps a execuo do comando SET AUTOTRACE ON, antes de realizar as consultas
(FERNANDES, 2002).

30

As ferramentas apresentadas so algumas das alternativas para se realizar diagnsticos de


desempenho e otimizaes, alcanando assim uma melhora de desempenho dessas consultas
ao serem executadas na base de dados.

2.7

DEFINIO E CARACTERSTICAS DAS FERRAMENTAS


Com ambientes complexos e com alto nmero de informaes, h necessidade da utilizao

de ferramentas para se obter um maior controle das informaes existentes nessas bases de
dados. Sem a utilizao de ferramentas administrativas e de desenvolvimento, o processo seria
muito mais demorado e por que no dizer, um ambiente com probabilidades de conter muito
mais erros, pois, se tratariam de rotinas que seriam efetuadas manualmente com comandos
desenvolvidos medida que os erros aparecessem.
Alm disso, h a necessidade de que esses acertos sejam realizados em um perodo de
tempo curto por se tratarem, muitas vezes, de processos crticos. Para tanto, faz-se o uso
dessas ferramentas.
Neste tpico, tem-se como principal intuito abordar algumas ferramentas utilizadas atualmente no mercado, que so desenvolvidas pela prpria Oracle e por outros fabricantes.

2.7.1

PL/SQL DEVELOPER

A ferramenta PL/SQL Developer um ambiente de desenvolvimento integrado (IDE), destinado ao desenvolvimento de programas que venham a utilizar o banco de dados Oracle para
armazenamento de suas informaes e dados. Trata-se de uma ferramenta de software proprietrio, desenvolvida pela Allround Automations.
O PL/SQL Developer abrange um conjunto de conceitos-chave para os projetos de desenvolvimento de aplicaes Oracle. Essa ferramenta traz funcionalidades bastante utilizadas por
desenvolvedores e administradores de banco de dados Oracle, funcionalidades que sero descritas logo abaixo.
A Figura 5 apresenta uma viso inicial do PL/SQL Developer.
a) Query Builder: A ferramenta Query Builder permite elaborar consultas ou alterar consultas j existentes. Auxilia de forma rpida e eficiente a alterao de um ou mais campos
em um SELECT j existente. Criam-se assim as consultas de forma grfica como mostra a Figura 6, apontando os seus relacionamentos, as clusulas WHERE e ORDER BY,
JOIN de tabelas.

31

Figura 5: Home PL/SQL Developer


Fonte: Automations (2008)

Figura 6: Query Builder


Fonte: Automations (2008)

b) SQL Window: uma Ferramenta muito utilizada pelos analistas e at mesmo pelo administrador do banco de dados. Ela permite executar instrues SQL, possibilitando assim
visualizar os resultados em forma de tabela, tendo vnculo tambm com ferramentas
que trabalhem com planilhas (ex.: Excel da Microsoft) podendo assim gerar planilhas
externas com os dados resgatados. Essa ferramenta permite tambm, em modo FOR
UPDATE, como mostra a Figura 7, que sejam realizadas alteraes na grade de consultas (sempre respeitando as permisses dos usurios e restries previamente definidos

32

na tabela, como campos que no permitem ser nulos, nmero de caracteres, coluna que
no permite duplicidade da informao entre outras).

Figura 7: SQL Window


Fonte: Automations (2008)

c) Command Window: outra ferramenta muito utilizada pelos administradores de banco


de dados, que emula uma janela do SQL*Plus, facilitando assim a navegao entre as
janelas, no tendo a necessidade de sair do PL/SQL Developer caso haja a necessidade
de fazer alguma alterao nos parmetros da instncia que se est conectado, como
mostra a Figura 8.

Figura 8: Command Window


Fonte: Automations (2008)

d) Reports: um gerador de relatrios, como mostra a Figura 9, obtendo assim uma maior
facilidade na gerao dos mesmos, pois oferece inmeros relatrios j padronizados, e

33

pode-se tambm criar e customizar conforme a necessidade do usurio, gerando assim


relatrios das bases de dados ou dicionrios Oracle.

Figura 9: Reports
Fonte: Automations (2008)

e) Object Browser: Possui um visualizador de objetos, tal como mostra a Figura 10, podendo assim visualizar as dependncias entre as tabelas, editar tabelas ou dados de
view, recompilar objetos invlidos, habilitar ou desabilitar objetos, remover objetos e outras funcionalidades.

Figura 10: Object Browser


Fonte: Automations (2008)

34

f) Performance Optimizing: Para otimizao das consultas, pode ser utilizado o PL/SQL
Profiler. Na Figura 11, pode-se visualizar um reltrio com diversas informaes, possibilitando a visualizao do tempo de execuo e estatsticas, entre elas encontra-se o
uso do processador, atividade de disco (E/S) e outras atividades caso haja a necessidade.

Figura 11: Performance Optimizing


Fonte: Automations (2008)

g) Tools: O PL/SQL Developer tambm fornece outras aes que tornam a administrao,
manuteno e desenvolvimento muito mais fcil. Possui ferramentas que auxiliam na
importao e exportao de objetos, na recompilao de objetos invlidos, no monitoramento de alertas e eventos que venham a ocorrer no banco de dados entre outras.

2.7.2

ORACLE ENTERPRISE MANAGER (OEM)

Na verso 10g, o gerenciamento do banco de dados Oracle, possui sua interface baseada
na Web. Essa uma ferramenta fundamental para gerir os bancos de dados, obtendo assim
um controle dos dados e maior facilidade para a administrao, por se tratar de uma ferramenta
com muitas informaes em modo grfico.
Ela tambm oferece tarefas administrativas como a criao e alterao de objetos, como
tablespaces, criao e alterao de tabelas e ndices entre outras. Tambm auxilia na gesto
da segurana da base, concedendo privilgios a determinados usurios que venham a ter necessidade de visualizar, remover, inserir ou at mesmo alterar dados contidos em objetos de
outro usurio (cada caso respeitando a regras de auditoria de cada empresa).
Atravs do OEM, pode-se realizar configurao da rotina para gerao de cpias de segurana, auxiliando tambm na recuperao da base de dados com a realizao de importao e
exportao de dados.

35

O OEM oferece uma interface grfica, onde, se pode visualizar informaes sobre o desempenho da base de dados. Permite alterar o tempo de atualizao da tela ou configur-la para
que torne tal procedimento de forma manual caso ocorra a necessidade de uma anlise mais
cautelosa em determinado momento.
A ferramenta oferece tambm um amplo banco de Informaes, quando se trata do fator
ajuda, como ajudas especficas, em nveis superiores de ajuda que levam a uma tabela de links
para determinados tpicos.
Na Figura 12, tem-se a tela inicial do OEM. Nela h informaes gerais do banco de dados, como o status, data de abertura da instncia, diretrio do ORACLE_HOME, atividades de
sesso e processamento, informaes de utilizao de espao tanto de memria quanto de
arquivos, erros de Alert (citado por alguns autores como dirio do DBA, onde o OEM informa
atividades do banco de dados e erros ocorridos) e informaes sobre variveis do banco.

Figura 12: Home do OEM


Fonte: Fogel e Stern (2008)

A OEM apresenta recursos navegacionais como:


a) Organiza as tarefas em categorias nas abas de navegao inicial. As abas, que podem
ser vistas na Figura 13 (Home, Desempenho, Administrao e manuteno), levam aos
seus respectivos links;

36

b) Proporciona diferentes nveis de detalhe, conforme a necessidade do administrador. Na


Figura 14, pode-se notar que traz um nvel de informao e ao lado um link que direciona
a um nvel de detalhamento adicional sobre a respectiva base de dados;
c) Sugere links adicionais que possuem relacionamento com a informao que est sendo
visualizada no respectivo momento, conforme pode-se visualizar na Figura 15.

Figura 13: Abas de navegao


Fonte: Fogel e Stern (2008)

Figura 14: Nveis de detalhes


Fonte: Fogel e Stern (2008)

Figura 15: Links relacionados


Fonte: Fogel e Stern (2008)

A OEM, como j citado, uma ferramenta grfica baseada na Web, que permite efetuar
operaes de gesto, iniciar e encerrar o banco de dados, criar e remover objetos entre outras.
Essas operaes so realizadas, utilizando o SQL, linguagem de programao utilizada para
manipular os dados contidos no banco e para realizar uma srie de tarefas administrativas.
Na realizao dessas tarefas, o OEM oferece uma opo de visualizar a instruo que ser
realizada.
Tambm se pode encontrar no prprio OEM um atalho para acessar o iSQL*Plus. o
mesmo ambiente encontrado na ferramenta SQL*Plus, porm, via Web. A ferramenta torna-se
muito til para o administrador, levando-se em conta que muitas informaes necessrias para
a administrao do banco no dia-a-dia ainda no possuem no OEM (no se torna vivel inserir
todos os comandos para o resgate dessas informaes no OEM, por se tratarem de inmeras
opes, tornaria assim uma ferramenta muito mais complexa e lenta).

37

2.7.3

ORACLE SQL DEVELOPER

Oracle SQL Developer uma ferramenta com as funcionalidades do SQL*Plus, porm de


forma Grfica. Ela facilita ao desenvolvedor e administradores executar suas tarefas, como
procurar, criar, editar e excluir objetos e dados. Tambm utilizada para desenvolvimento de
instrues SQL, executar scripts, a editar e depurar comandos em PL/SQL, visualizar e criar
relatrios.
Ela uma ferramenta livre (sem custo) desenvolvida pela prpria Oracle e tem como objetivo tornar mais simples a execuo das tarefas de administrao e desenvolvimento.
Essa ferramenta foi desenvolvida em Java e tem como pr-requisitos para conexo, que o
banco de dados Oracle seja a partir da verso 9.2.0.1, e suporta as plataformas Windows, Linux
e Mac OS X.
O Oracle SQL Developer utilizado pelos administradores e desenvolvedores para efetuar
migrao de bases de dados terceiros como MySQL, Microsoft SQL Server, Sybase Adaptive
Server, Microsoft Access para banco de dados Oracle de modo eficiente e automatizada.
Na Figura 16, se encontra a tela principal do Oracle SQL Developer. Ela oferece uma janela
com guias de navegao com suas respectivas conexes, e cada qual possui sua prpria rvore
hierrquica para visualizar os objetos selecionados no navegador como apresenta a Figura 17.

Figura 16: Home Oracle SQL Developer


Fonte: Library (2008)

Essa ferramenta disponibiliza as configuraes mais detalhadas dos objetos selecionados,


tornando assim muito mais fcil e gil a visualizao dos mesmos.

38

Figura 17: Navegador de objetos


Fonte: Library (2008)

A ferramenta Oracle SQL Developer possui uma semelhana com o PL/SQL Developer,
porm cada qual possui os seus diferenciais e limitaes como acesso a bases de dados no
Oracle pela ferramenta Oracle SQL Developer.

39

ESTUDO DE CASO

O presente estudo de caso pretende abordar a identificao de consultas SQL com problemas de desempenho, com a utilizao de ferramentas de monitoramento que auxiliaram na
visualizao dos pontos que apresentam problemas, ferramentas citadas no captulo anterior,
executando tambm gerao e anlise de traces (planos de execuo e os respectivos custos
das consultas).
Com base na coleta dos dados e suas anlises, pretende-se otimizar as consultas e obterse um melhor desempenho. Dessa forma, melhorar os tempos de acesso aos dados em uma
pesquisa, tendo como resultado a economia do uso do servidor de forma desnecessria.
E, por fim, apresentar a importncia da construo das consultas, de forma bem planejada
e o impacto que essas consultas, desenvolvidas sem o devido conhecimento, podero causar
em uma empresa.

3.1

AMBIENTE
O ambiente proposto para os testes uma mquina virtual e o sistema de virtualizao

utilizado o VMware Fusion que um software proprietrio, desenvolvido pela VMware.


O sistema VMware Fusion executado em uma plataforma Mac OS X Leopard. Ele virtualiza o sistema operacional Microsoft Windows 2003 Standard Server.
O servidor possui um processador Intel Core 2 Duo de 2.0 Ghz, com 4 Mb total de L2, sendo
que cada ncleo conta com 2 Mb, 2 Gb de memria e um disco de 120GB.
Esse servidor dotado de uma nica instncia Oracle, que responde pelo nome ORA10G,
como mostra o comando SQL abaixo:

SQL> select t.INSTANCE_NAME,t.VERSION,t.STATUS from V$INSTANCE t


Tabela 1: Resultado da consulta na V$INSTANCE
INSTANCE_NAME VERSION STATUS
ora10g

10.2.0.1.0

OPEN

Na Tabela 1, tem-se na coluna um o nome do banco de dados, na coluna dois, a verso


e realise em que o banco de dados se encontra, e na terceira coluna, tem-se a informao do
status em que o banco se encontra (OPEN, OPEN MIGRATE, STARTED, MOUNTED) .
O ambiente proposto para este estudo de caso foi desenvolvido exclusivamente para esta
finalidade. Nesse cenrio, encontra-se o usurio TCC, tendo como tablespace TCC como padro (rea lgica de um banco de dados). As tabelas existentes foram criadas e povoadas com

40

dados exportados de uma base de Help Desk de uma determina empresa. O nome do usurio,
tablespace, e alguns registros foram alterados, a fim de preservar os dados e a empresa.
Para se obter um ambiente mais real, tm-se seis conexes que se encontram ativas constantemente, pr-configuradas em dois scripts (select_tables.bat e select_views.bat) onde ambas
so ativadas assim que o banco encontra-se disponvel para conexo (STATUS = OPEN) e com
o LISTENER no ar. Essas sesses realizam SELECTs, em todas as tabelas, e vises do banco
de dados, incluindo tabelas do usurio TCC como mostra o comando configurado nos scripts:
a) TCC_TABLE.BAT:

@echo ON
sqlplus.exe -S system/ora10g @C:\select_dba_tables.sql
quit
b) TCC_VIEW.BAT:

@echo ON
sqlplus.exe -S system/ora10g @C:\select_dba_views.sql
quit
Nota-se que ambos os scripts apresentados, ao conectar-se no banco, chamam uma instruo em SQL. Essas instrues tm como contedo, SELECTs em todas as tabelas e views
existentes no banco de dados "ORA10G". Apresenta-se, a seguir, uma nica linha das milhares
existentes em cada instruo:
a) SELECT_DBA_TABLES.sql:

select * from TCC.HISTORICOS;


b) SELECT_DBA_VIEWS.sql:

select * from SYS.V_$SESSION;


Essas conexes foram resgatadas atravs do OEM, como mostra a Figura 18. As seis sesses apresentam a coluna STATUS como ativas, executadas atravs do programa sqlplus.exe
e conectadas com o usurio "SYSTEM", assim como consta nos scripts, mostrados acima.

41

Figura 18: Sesses abertas pelo script


Fonte: O Autor

Figura 19: Sesses com maiores atividades no banco de dados


Fonte: O Autor

42

Com as conexes existentes no banco de dados, como mostra a Figura 18, tem-se como
objetivo, alcanar um cenrio o mais perto do real, ocasionando ao banco constantes atividades
de disco e conexes simultneas.
A Figura 19, mostra que, atravs dos SELECTs executados pelos scripts, ocasionou o
aumento das atividade no banco de dados, obtendo assim o resultado esperado.
Como nota-se na Figura 19, foi realizado apenas um ciclo com seis conexes simultneas,
onde foram obitidos os grficos atravs do OEM. No frame superior, apresenta o aumeto de
atividade de disco ocasionada por sesses de usurio. J no frame inferior direito, tem-se o
percetual de atividade por sesso, onde temos os seis principais consumidores (as seis seses
que aparecem no grfico, correspondem aos SELECTs realizados pelos scripts).

3.2

PONTOS DE ANLISE DAS CONSULTAS SQL


Para que haja uma maior compreenso da forma como essas consultas sero medidas, se-

ro levados em considerao os parmetros de tempo e custo que sero obtidos nas consultas
propostas.
Esses parmetros sero resgatados, atravs das ferramentas citadas no captulo anterior,
junto gerao de traces.
Com o resgate dessas informaes, pode-se visualizar o custo, que um valor nico. No
custo, leva-se em conta utilizao do processador, de memria fsica e acesso a Disco (E/S).
Esse custo aponta a quantidade de recursos que foram utilizados para a realizao da consulta
no servidor.
O custo um valor que deve ser levado em considerao, pois em ambientes que essas
consultas so realizadas de forma constante por determinada sesso ou sesses distintas,
trabalhando em paralelo, que venham a apresentar um custo elevado, podem comprometer o
hardware.
J o parmetro tempo de execuo trata-se do tempo que a consulta SQL levar para ser
realizada, desde a solicitao at o momento em que resultado retornado ao solicitante.
uma varivel que se deve levar em considerao, pois trata-se de um fator relevante na comercializao de sistemas que utilizam esse tipo de processo (consulta a banco de dados),
onde leva-se em conta para aquisio do software por uma determinada empresa, o parmetro
desempenho.
No entanto, como no h uma valor pr-definido para o parmetro custo, para obter tal
preciso, deve-se levar em conta trs variveis, que sero descritas abaixo:
a) O nmero de registros: pode-se afirmar que quanto maior o nmero de registros obtidos
atravs de uma consulta, maior ser o custo.

43

b) A estrutura da consulta: levar em conta a forma que a consulta foi desenvolvida, principalmente quando se utiliza JOIN (processo que envolve mais de uma tabela em uma
nica consulta) e comando de organizao como o ORDER BY.
c) O ambiente: garantir que os testes sejam realizados em ambientes idnticos, como
servidores, rede e principalmente o nmero de conexes de usurios conectados ao
banco.
Levando em conta todos os itens acima, torna-se impossvel chegar a um custo que seja
ideal para todas as consultas, pois cada consulta SQL possui complexidades distintas uma das
outras.
Assim, ocorre a necessidade de realizar uma pesquisa antes do processo de TUNING para
obter-se embasamento. Foram realizadas consultas SQL com diferentes clusulas, e com os
resultados pde-se gerar uma tabela, conforme o Anexo B.
Dessa forma, ser possvel apresentar as melhorias realizadas nas consultas, por meio de
comparativos do requisito custo, junto aos resultados mensurados na pesquisa realizada antes
do processo de TUNING.
Pretende-se, dessa forma, obter uma melhor compreenso do estudo de caso, justificando
assim, a necessidade dessas melhorias.

3.2.1

Estrutura das Tabelas

As consultas sero realizadas em duas tabelas do usurio TCC, a HISTORICOS e a USUARIOS. Neste momento essas tabelas no possuem ndices e chaves primrias.
Atravs do comando "DESC", realizado em uma janela do SQL*Plus, como mostra a Figura 20, pode-se verificar o nome das tabelas e suas respectivas colunas, se so aceitveis
valores nulos e o tipo do campo (NUMBER, VARCHAR, DATE entre outros).
No primeiro momento, ser realizado um SELECT nas tabelas HISTORICOS e USUARIOS,
a fim de obter a quantidade de registros existentes em cada tabela, bem como o tempo e custo
da sua anlise completa.
A consulta realizada na tabela HISTORICOS, como mostra a Figura 21, foi realizada na
ferramenta PL/SQL Developer. J a consulta realizada na tabela USUARIOS, foi executada na
ferramenta Oracle SQL Developer, Figura 22, visando apresentar as funcionalidades e caractersticas das ferramentas que sero utilizadas.

44

Figura 20: Descrio das tabelas


Fonte: O Autor

Figura 21: Consulta tabela HISTORICOS no PL/SQL Developer


Fonte: O Autor

45

Figura 22: Consulta tabela USUARIOS no Oracle SQL Developer


Fonte: O Autor

Com as consultas j registradas, foi possvel constatar que a tabela HISTORICOS possui
2.882.880 registros e o tempo de resposta foi de 214,06 segundos, apresentando um custo de
6508. Na consulta da tabela USUARIOS, obteve-se o retorno de 96 registros, com um tempo
de 0,04 segundos e o custo para a realizao foi de 2.
Levando em conta que esse tipo de consulta realizada esporadicamente, normalmente em
pocas de fechamento, quando se costuma retirar relatrios, utilizando esses dados talvez para
realizar a montagem de grficos para uma melhor visualizao ou algo do gnero, ser, ento,
proposta uma consulta mais especfica, ocasionando assim uma idia do tempo de execuo
em uma aplicao que relizada com maior frequncia.
Nesse momento, tambm ser realizado um teste entre as ferramentas (PL/SQL Developer
X Oracle SQL Developer), tendo como objetivo que as ferramentas apresentem os resultados
idnticos na execuo da prxima consulta que ser proposta. Com isso, gera uma maior
confiabilidade nos resultados que so extrados dessas ferramentas.
Antes de analisar e relatar a consulta, vale a pena citar que o resultado do teste foi satisfatrio, pois ambas as ferramentas apresentaram o mesmo valor para o parmetro custo e
relataram o mesmo plano de acesso, sendo esse executado pelo Otimizador. Ver resultados
apresentados nas Figuras 23 e 24.
Utilizando a sintaxe, conforme mostra a Figura 23 realizada no PL/SQL Developer ou na
Figura 24 executada no Oracle SQL Developer, os registros retornados foram filtrados atravs
das determinadas colunas USUARIO E CAMPO da tabela HISTORICOS, onde todas as linhas
em que a coluna USUARIO forem igual "Adm" e CAMPO for igual a "Valor" sero listadas.
Nesse caso, a busca retornou 507 registros, levando 7,951 segundos e um custo de 6576.

46

Figura 23: Consulta tabela HISTORICOS no PL/SQL Developer (WHERE,AND)


Fonte: O Autor

Figura 24: Consulta na tabela HISTORICOS (WHERE,AND)


Fonte: O Autor

47

Foi realizado um outro teste, tornando a consulta um pouco mais complexa, executando
o agora com as clusulas WHERE, AND e OR. Nesse momento, fica clara a dificuldade que
ocorre em gerar um valor de referncia para o parmetro custo, como foi citado anteriormente,
possui uma complexidade distinta entre as consultas.

Figura 25: Consulta na tabela HISTORICOS (WHERE,AND,OR)


Fonte: O Autor

Com essa consulta, conforme mostra a Figura 25, foram obtidos os registros que possuem
o dado "Adm" na coluna USUARIO, "Status" na coluna CAMPO e na coluna NOVOVALOR os
dados sejam igual a "Em Uso" e "Disponvel TI", totalizando 399 linhas, o custo obtido agora foi
de 6606 e levou 10,063 segundos para realizar a consulta.
Pode-se notar, ento, que com a alterao obteve-se um aumento no parmetro custo de
6576 da consulta anterior para 6606 para a consulta onde foi adicionado a clusula OR.

3.2.2

Explain

Os explains gerados acima auxiliam muito na identificao dos pontos mais crticos existentes em uma consulta, mostrando assim todo o plano de execuo da consulta, apresentando
o custo de cada acesso que realizado e tambm o custo total.
Porm, com a utilizao das ferramentas, como pode ser visualizado na Figura 25, torna-se
menos rduo o processo de gerao dessas informaes, levando em conta que as mesmas
poderiam ser geradas via intrues SQL como se pode ver abaixo:

SQL> explain plan set statement_id=TCC01 for


2

SELECT t.usuario,t.CAMPO,t.novovalor FROM HISTORICOS t

WHERE t.usuario = Adm

48

and t.campo = Status

and (t.novovalor = Em Uso or t.novovalor = Disponvel TI)

Explained.
SQL> commit;
Commit complete.
Nesse primeiro passo, foi gerado o explain, que foi gravado na tabela PLAN_TABLE atravs
do comando COMMIT, recebendo o nome de "TCC01". Na sequncia, ser realizado um SELECT na tablela PLAN_TABLE, para visualizar as informaes obtidas com a consulta que foi
realizada com o comando anterior.

SQL> select operation,options,object_owner,object_name,cost from plan_table


2

where statement_id=TCC01

order by position

Retornando assim as seguintes informaes, que podem ser visualizadas na Tabela 2:

OPERATION

Tabela 2: Resultado da consulta na PLAN_TABLE


OPTIONS OBJECT_OWNER OBJECT_NAME

TABLE ACCESS
SELECT STATEMENT

FULL

TCC

HISTORICOS

COST
6606
6606

Logo:

OPERATION: a operao que foi realizada (acesso a tabela)


OPTIONS: a forma em que essa tabelas foi acessada (toda a tabela)
OBJECT_OWNER: o usurio dono do objeto, nesse caso uma tabela (usurio TCC)
OBJECT_NAME: o nome do objeto acessado (tabela HISTORICOS)
COST : o custo que obteve para a realizao da consulta (custo = 6606)
Outro utilitrio muito utilizado para a anlise dessas consultas, principalmente para a anlise
de todo um processo, onde muitas vezes esse composto de inmeros SELECTs, INSERTs,
UPDATEs e DELETEs, a gerao do trace dessas sesses. Isso poder ser acompanhado a
seguir.

49

3.2.3

Traces

Quando se coloca uma sesso em modo trace, todas as atividades que nela forem realizadas, sero armazenados em um arquivo com exteno ".trc", como j abordado no captulo
2.
No entanto, antes de ativar a sesso para modo trace, preciso que se identifique o SID
(nmero de identificao do processo no Oracle) que essa sesso obteve ao acessar o banco
de dados. O SID pode ser visualizado atravs da ferrameta OEM como visto na Figura 18, ou
ento, por uma instruo SQL:

SQL> SELECT SID,SERIAL#,USERNAME FROM V$SESSION


2

WHERE USERNAME=TCC

Na Tabela 4, tem-se o resultado do SELECT realizado anteriormente:


Tabela 3: Resultado da consulta na V$SESSION
SID SERIAL# USERNAME
148

18

TCC

Com o SID j identificado, o trace pode ser iniciado com o seguinte comando:

SQL> EXEC DBMS_MONITOR.session_trace_enable(session_id => 148);


\begin{verbatim} PL/SQL procedure successfully completed
A partir desse momento, todas as atividades realizadas por essa sesso estaro sendo
registradas no arquivo ".trc", que tem seu destino defenido no parmetro USER_DUMP_DEST
do banco de dados, que pode ser visualizado atravs do comando comando abaixo:

SQL> SHOW PARAMETER USER_DUMP_DEST;


O arquivo de trace, no ambiente proposto para este estudo de caso, encontra-se no diretrio
padro como ser visualizado na Tabela 4. No entanto, esse caminho pode ser alterado pelo
administrador do banco de dados, caso ocorra a necessidade.

NAME

Tabela 4: Resultado da consulta na USER_DUMP_DEST


TYPE
VALUE

user_dump_dest

string

C:\ORACLE\PRODUCT\10.2.0\ADMIN\ORA10G\UDUMP

O processo de trace pode ser parado com o comando que ser visto, a seguir, ou permanecer ativo at que essa sesso seja finalizada.

50

SQL> EXEC DBMS_MONITOR.session_trace_disable(session_id => 148);


PL/SQL procedure successfully completed
A partir desse momento o trace no se encontra mais ativo.
O mesmo procedimento de identificao da sesso, ativao e desativao do trace, pode
ser realizado pela ferramenta PL/SQL Developer, como mostra a Figura 26:

Figura 26: Visualizar sesses para ativar e desativar trace


Fonte: O Autor

O relgio, esquerda da Figura 26, ativa o trace da sesso que foi selecionada, trazendo
uma caixa de dialogo com informaes da sesso, solicitando a confirmao. O mesmo processo ocorre com o relgio a direita que desativa o trace como mostra a Figura 27:

Figura 27: Caixa de dialogo (ativa|desativa o trace)


Fonte: O Autor

Contudo, esse arquivo ".trc" ainda se encontra em sua forma binria, impossibilitando a
leitura e compreenso do seu contedo. Para convert-lo em modo texto e o torn-lo assim
legvel, para que possa ser compreendido, usa-se um comando chamado TKPROF como se
pode ver a seguir.

3.2.4

TKPROF

O TKPROF no passa de um tradutor, porm com algumas funcionalidades a mais alm


de somente converter o arquivo para modo o texto. Com o TKPROF, pode-se trabalhar com

51

a forma com que as informaes sero impressas no arquivo texto, modelando o documento,
para que atenda s necessidades do solicitante da melhor forma possvel.
Para converter o trace que foi gerado anteriormente, utilizou-se a seguinte sintaxe:

Figura 28: Comando TKPROF


Fonte: Adaptado de Green (2002)

Desenvolvendo o comando, conforme pde ser visto na Figura 28, foi executado da seguinte
forma:

TKPROF TCC_01.TRC TCC_01.TXT SYS=NO EXPLAIN=TCC/TCC


Onde:

TKPROF: a chamada do programa;


TCC_01.TRC: o nome do arquivo que ser convertido;
TCC_01.TXT: o nome do arquivo aps ser convertido;
SYS: ativa ou desativa a lista de instrues SQL emitidas pelo usurio SYS;
EXPLAIN: escreve os planos de execuo para o arquivo de sada.
A partir desse momento, j possvel efetuar a anlise do arquivo gerado pelo trace.

3.2.5

Anlise do trace

Com esse arquivo, pode-se realizar de forma mais detalhada a anlise da consulta. Abaixo
foi resgatado um pequeno trecho do arquivo TCC_01.TXT, mais precisamente o momento em
que foi realizado a consulta.
a) Consulta:

52

SELECT t.usuario,t.CAMPO,t.novovalor FROM HISTORICOS t


WHERE t.usuario = Adm
and t.campo = Status
and (t.novovalor = Em Uso or t.novovalor = Disponvel TI)
b) Tabela gerada:

call
Parse
Execute
Fetch
total

Tabela 5: Trace com os custos da consulta


count cpu elapsed
disk query current
1
1
4
6

0.00
0.00
1.15
1.15

0.01
0.00
10.59
10.61

0
0
29242
29242

0
0
29249
29249

0
0
0
0

rows
0
0
399
399

Onde:

Parse: traduz o comando SQL em um plano de execuo;


Execute: execuo da consulta pelo banco;
Fetch: retorno dos resultados realizados pela consulta.
Assim, podem-se verificar, na Tabela 5 informaes como tempo de CPU, tempo total percorrido para realizar a consulta, o nmero de blocos lidos em disco, nmero de blocos consistentes recuperados de memria, entre outros.
Com a anlise dos valores extrados com o trace, pode-se verificar que possui um tempo
consideravelmente alto, levando em conta que se trata de uma consulta relativamente simples.
Alm disso, a consulta tambm realiza um nmero muito alto de leitura em disco comparando
com o nmero de registros que foram resgatados do banco de dados, totalizando 29.242 blocos
lidos em disco e retornando 399 linhas, levando 10,61 segundos.
Ao considerar os dados obtidos com o arquivo TCC_01 mais as informaes que foram
resgatadas com a realizao do explain, pode-se constatar que o baixo desempenho causado
pela ausncia de ndice na tabela HISTORICOS, ou at possua ndice, porm, no apropriado
para a consulta que foi proposta neste documento.
Com a ausncia desses ndices, ocorre um alto nmero de leitura em disco (E/S) desnecessria, ocasionando uma maior locao de recursos do servidor, como processamento e
memria, para a realizao dessa instruo.
A seguir, ser dada sequncia ao processo de otimizao das consultas por meio da criao
de ndices para as tabelas HISTORICOS e USUARIOS, porm, antes ser certificado que essas

53

tabelas do usurio TCC, no possuam estatsticas. Para o mesmo, sero rodados os comandos
vistos no captulo 2, sendo eles:

Figura 29: Comando para remover estatsticas


Fonte: Adaptado de Gregoire e Lorentz (2003)

Na Figura 29, tem-se o comando realizado para remover a estatstica das duas tabelas.
Ao executar uma consulta na DBA_TABLES, a fim de visualizar a coluna LAST_ANALYZED,
ser realizado o comando a seguir, onde, os resultados estaram presentes na Tabela 6, visualizandose que as estatsticas foram removidas, iniciando assim o processo de otimizao.

SQL> SELECT OWNER, TABLE_NAME, LAST_ANALYZED FROM DBA_TABLES


2 WHERE TABLE_NAME IN (HISTORICOS,USUARIOS);

Tabela 6: Resultado da verificao de estatstica


OWNER TABLE_NAME LAST_ANALYZED
TCC
TCC

3.2.6

HISTORICOS
USUARIOS

Otimizao da consulta utilizando ndices

Com a identificao do problema, constatado com o auxlio das ferrametas que foram utilizadas no decorrer dos testes, uma nova consulta mais complexa foi desenvolvida para a realizao
dos novos testes:

SELECT t.usuario,t.CAMPO,t.novovalor,t.id_objeto FROM HISTORICOS t


WHERE t.campo = Status
and (t.novovalor = Em Uso or t.novovalor = Disponvel TI)
and t.usuario in (select j.nomecompleto from usuarios j
where j.departamento = Infraestrutura
and j.nomecompleto = Adm)

54

Com a realizao da consulta acima, foram obtidos os seguintes valores presentes na Tabela 7. A consulta teve os registros contidos dentro das clusulas do primeiro SELECT restrita
s clusulas do segundo.
Tabela 7: Resultados Consulta_1 (sem ndices)
Registros recuperados
399
Tempo decorrido
12,421 seg.
Custo total da consulta
6609
Com esses resultados obtidos, comparados com a consulta realizada na Figura 21, obtevese um custo maior, porm foi executada em um tempo bastante inferior. A variao ocorre, pois
o custo tende a aumentar conforme a complexidade da consulta. J o tempo, nesse caso,
menor porque o nmero de registros resgatados na consulta da Figura 21 foi muito maior.
Nesse momento, as tabelas HISTORICOS e USUARIOS no possuem ndices, requerendo
que o sistema efetue uma leitura de toda a tabela sequencialmente, para vir a encontrar os
dados solicitados.
Para iniciar o processo otimizao dessa consulta, foi criado um ndice para os campos da
tabela HISTORICOS que so utilizados na consulta proposta para os teste:

SQL> create index IX_HISTORICOS_1 on HISTORICOS (USUARIO,CAMPO)


2 tablespace TCC
3 pctfree 10
4 initrans 2
5 maxtrans 255
6 storage
7 (
8 initial 576K
9 minextents 1
10 maxextents unlimited
11 );
Index created
Com o ndice j criado, tambm se recomenda que seja atualizada a estatstica da tabela,
como mostra a Figura 30:

55

Figura 30: Comando para atualizar estatsticas


Fonte: Adaptado de Lorentz (2007)

A atualizao da estatstica, por recomendao da prpria Oracle, sempre ser realizada


quando ocorrer alguma mudana nas caractersticas de uma tabela no decorrer desse documento.
A seguir, ser realizado um novo explain, utilizando o PL/SQL Developer, que ser visualizado na Figura 31 o ganho que foi obtido com a criao do ndice.

Figura 31: Consulta_1 (com um ndice)


Fonte: O Autor

Com a criao do ndice, nota-se que ocorreu o resgate dos registros, utilizando menos
recursos, detalhes que poderam ser visualizados na Tabela 8.
Tabela 8: Resultados Consulta_1 (com um ndice)
Registros recuperados
399
Tempo decorrido
7,375 seg.
Custo total da consulta
7
A consulta, que foi proposta, utiliza tambm as colunas NOMECOMPLETO e DEPARTAMENTO da tabela USUARIOS. Visando ainda um melhor desempenho, ser construdo o seguinte ndice:

56

SQL> create index IX_USUARIOS_1 on USUARIOS (NOMECOMPLETO,DEPARTAMENTO)


2 tablespace TCC
3 pctfree 10
4 initrans 2
5 maxtrans 255
6 storage
7 (
8 initial 10K
9 minextents 1
10 maxextents unlimited
11 );
Index created
Mesmo com a tabela USUARIOS, apresentando um nmero muito menor de registros (96
linhas) e com um custo baixo (2), pode-se extrair um melhor resultado, como se v na Figura 32
com a consulta, que agora ser realizada com o Oracle SQL Developer.

Figura 32: Consulta_1 (com dois ndices)


Fonte: O Autor

Tambm foi gerado um trace da sesso que estava sendo realizada a consulta. Aps a
converso do mesmo para o modo texto, tm-se, de forma mais detalhada, os custos que a
consulta apresentou conforme Tabela 9.
Como era esperado, com a criao do ndice IX_USUARIOS_1 para a tabela USUARIOS,
obteve-se um melhor desempenho, demonstrado na Tabela 10.

57

Tabela 9: Trace com os custos da Consulta_1


count cpu elapsed
disk query current

call
Parse
Execute
Fetch
total

1
1
4
6

0.00
0.00
0.03
0.03

0.01
0.00
0.01
0.02

0
0
1989
1989

0
0
1994
1994

0
0
0
0

rows
0
0
399
399

Tabela 10: Resultados Consulta_1 (com dois ndices)


Registros recuperados
399
Tempo decorrido
1,017 seg.
Custo total da consulta
5
O custo neste momento de 5, porm, levando em conta o nmero de registro bastante
elevado que possui a tabela HISTORICOS, torna-se um valor aceitvel para a consulta. Para
realizar um teste, e assim constatar-se que o custo apresentado decorrente ao nmero de
registros existentes na tabela HISTORICOS, sero elaboradas duas novas tabelas, a HISTORICOS_TCC e a USUARIOS_TCC. Ambas possuem as mesmas caractersticas das tabelas que
foram utilizadas no estudo, como mostra a Figura 33.

Figura 33: Comando para criar as tabelas USUARIOS_TCC e HISTORICOS_TCC


Fonte: O Autor

58

Aps a criao das tabelas e os respectivos ndices, tambm foi atualizada a estatstica das
tabelas, utilizando as seguintes sintaxes:

SQL> ANALYZE TABLE HISTORIOS_TCC COMPUTE STATISTICS;


Table analyzed
SQL> ANALYZE TABLE USUARIOS_TCC COMPUTE STATISTICS;
Table analyzed
Com as estatsticas j atualizadas, realizou-se um novo explain da mesma consulta que
vinham sendo realizados os testes, porm agora com as novas tabelas sem os registros existentes nas originais.

Figura 34: Consulta na HISTORICOS_TCC e USUARIOS_TCC (sem linhas)


Fonte: O Autor

Como se pode ver na Figura 34, o custo da mesma consulta, porm com as tabelas vazias,
foi de "0", tornando visvel que o custo mais elevado apresentado na Figura 32 ocasionado
pelo alto nmero de registros armazenados na tabela HISTORICOS.
Sendo essa a primeira consulta a ser analisada e com a otimizao j efetuada, possvel
elaborar grficos com os resultados contidos na Tabela 11 e assim obter uma melhor visualizao dos resultados obtidos como mostram as Figuras 35 e 36.
Tabela 11: Consulta_1 (Comparativo)
Consulta_1
Tempo (segundos) Custo
Sem ndice
Com um ndice
Com dois ndices

12,421
7,375
1,017

6609
7
5

59

Figura 35: Grfico comparativo Consulta_1 (Tempo)


Fonte: Gerado pela Tabela 11

Figura 36: Grfico comparativo Consulta_1 (Custo)


Fonte: Gerado pela Tabela 11

3.2.7

Otimizao da consulta com o auxlio do OEM

Outra forma, muito mais prtica para a otimizao de uma consulta, encontra-se no OEM,
onde realizado, um processo de anlise da consulta pela prpria ferramenta, retornando os
ganhos que sero obtidos com a criao do ndice sugerido, alcanando assim as expectativas
do administrador, a prpria ferramenta realiza a criao do ndice. Esse processo que ser
realizado a seguir.
Neste momento, a tabela HISTORICOS no possui ndices. Sendo assim, ser otimizada a
consulta vista anteriormente na Figura 25.
No OEM, na aba Performance Top Activity, visualizam-se as atividades das sesses no
banco de dados, como pde-se visualizar na Figura 19. Ao realizar-se a consulta proposta,
obteve-se o seguinte resultado, nos dois frames inferiores do OEM, como mostra a Figura 37.
No primeiro frame, tem-se a coluna SQL ID. Cada consulta SQL possui seu prprio ID, que
so valores distintos para cada consulta existente no banco de dados. O ID que se encontra
destacado na figura abaixo, direciona para uma outra janela do OEM.

60

Figura 37: Maiores atividades no banco de dados


Fonte: O Autor

Com essa janela, resgatam-se algumas informaes da consulta SQL que est sendo realizada, como mostra a Figura 38. O campo Text traz a consulta que est sendo realizada pela
sesso selecionada, j no campo Details, na aba Plan, pode-se visualizar o plano de execuo que est sendo realizado, mostrando que todos os registros da tabelas esto sendo lidos,
ocasionando um alto custo para a realizao dessa consulta.

Figura 38: Detalhes da Consulta_2


Fonte: O Autor

Na sequncia do processo, o OEM realiza os testes, e aps a anlise, retorna o resultado


proposto para a criao do ndice. Na Figura 39, tem-se as recomendaes que o OEM sugere
que sejam realizadas para obter-se um melhor desempenho da consulta.

Figura 39: Recomendaes sugeridas pelo OEM


Fonte: O Autor

61

So retornadas informaes do tipo de objeto que est sendo sugerido para criao, as
colunas que devem conter no ndice e informaes identificando que com a criao do ndice
ocorrer uma melhora significativa no desempenho. Na coluna New Explain Plan, pode-se
visualizar o explain da consulta com a criao do ndice e o explain da consulta original, para
visualizao dos ganhos obtidos, resultados que so visualizados de forma organizada em uma
outra janela, conforme mostra a Figura 40.

Figura 40: Mostragem comparativa dos planos de execuo


Fonte: O Autor

Na Figura 40, foram selecionados os resultados dos custos obtidos, mostrando que com a
cria-o do ndice proposto haver realmente uma melhora significativa no desepenho dessa
consulta.
Outro fator importante que o processo de criao do ndice pelo OEM pode ser programado para um determinado horrio, pois, trata-se de um processo de alto custo para o servidor,
se tornando muito mais crtico se for uma tabela que possua muitos registros e com acessos
constantes, podendo assim ocasionar uma perda de desempenho do banco de dados ou at
uma parada do mesmo.
Isso ocorre porque, no momento de criao de um ndice, a tabela bloqueada pelo processo, impossibilitando a consulta e a alterao da mesma, portanto todos as sesses que
venham a realizar alguma atividade nessa tabela, ficaram locadas at o trmino da criao do
ndice, que em alguns casos podem levar horas.
Com a possibilidade de se programar que a tarefa venha ser realizar em um determinado
horrio, o administrador pode efetuar a configurao, onde a mesma dar incio automaticamente aps o horrio de maior utizao do sistema. Esse processo de configurao pode ser
visualizado na Figura 41.
Para configurao da tarefa, algumas informaes so necessrias, como o nome da tarefa,
a data e o horrio de incio do processo. Porm, para esse estudo de caso, o processo de
criao foi programado para ser inicializado no modo imediato.

62

Figura 41: Configurao de horrio


Fonte: O Autor

Aps a confirmao da ferramenta que o ndice foi criado, foi executado um SELECT na
DBA_INDEXES, confirmando a criao e possibilitando visualizar algums parmetros do ndice
como mostra a Tabela 12:

SQL> SELECT OWNER USUARIO,


2

INDEX_NAME NOME_INDICE,

TABLE_NAME NOME_TABELA,

STATUS

FROM DBA_INDEXES

WHERE TABLE_NAME = HISTORICOS

Tabela 12: Resultado da consulta na DBA_INDEXES


USUARIO
NOME_INDICE
NOME_TABELA STATUS
TCC

IDX$$_01280001

HISTORICOS

VALID

Abaixo sero apresentados tambm dois grficos demonstrando os ganhos obtidos no parmetro tempo e custo, conforme mostram as as Figuras 42 e 43 geradas com os resultados da
Tabela 13.

63

Tabela 13: Consulta_2 (Comparativo)


Consulta_2
Tempo (segundos) Custo
Sem ndice
Com um ndice

10,063
1,406

6602
5

Figura 42: Grfico comparativo Consulta_2 (Tempo)


Fonte: Gerado pela Tabela 13

Figura 43: Grfico comparativo Consulta_2 (Custo)


Fonte: Gerado pela Tabela 13

Novamente se obteve um ganho considervel com a implementao de ndices, porm no


qualquer ndice contido em uma tabela que resultar em ganho de desempenho. Uma tabela
pode ser utilizada por outras consultas, que venham a buscar diferentes informaes contidas
nela. Nesses casos normalmente ocorre a necessidade de criar dois ou mais ndices para
atender a todas as consultas.
Essa criao de mais ndices para uma nica tabela, no ocasiona uma perda de desempenho no banco de dados, ocorrendo apenas um crescimento fsico da base. Porm a estatstica
dessas tabelas devem ser atualizadas frequentemente.
Mas, algumas empresas possuem sistemas no otimizados para trabalharem com a abordagem atravs do custo, normalmente sistemas mais antigos. Esses sistemas requerem que

64

sejam removidas as estatsticas do banco de dados para que apresentem um melhor desempenho, no entanto se esses sistemas possuem uma base prpria no apresentaram maiores
problemas, caso contrrio, poderam ocasionar srios problemas de desempenho nas demais
aplicaes que utilizam o mesmo banco de dados como repositrio, realizando suas consultas
de forma no otimizada.
Nesses casos, tem-se a alternativa de executar as consultas com problema de desempenho, sugerindo o ndice ou ndices que a consulta deve utilizar para obter-se um melhor
desempenho. Essas sugestes, chamadas de Hints, sero abordadas a seguir.

3.2.8

Otimizao da consulta utilizando hints

Para realizao desse teste ser utilizada a clusula MINUS, como mostra a Figura 44:

Figura 44: Clusula MINUS


Fonte: O Autor

Neste caso os registros que se encontram em "A", sero os dados retornados pela consulta
a seguir:

SELECT t.usuario,t.CAMPO,t.novovalor,t.id_objeto
FROM HISTORICOS t, usuarios u
WHERE t.usuario = u.nomecompleto
and t.campo = Status
and (t.novovalor = Em Uso or t.novovalor = Disponvel TI)
and (u.nomecompleto = Adm or t.usuario = Adm)
minus
(
select usuario,campo,novovalor,id_objeto
from historicos
where atualizadoem <> to_date(3/22/2006 9:39:54, MM/DD/YYYY HH:MI:SS)
)

65

Fazem parte dessa consulta as tabelas HISTORICOS e USUARIOS, que possuem os seguintes ndices, conforme mostra a Tabela 14.
Tabela 14: ndices das tabelas HISTORICOS e USUARIOS
Tabela
Nome do ndice
Colunas refernciadas
HISTORICOS
HISTORICOS
HISTORICOS
USUARIOS

IX_HISTORICOS
IX_HISTORICOS_2
IX_HISTORICOS_3
IX_USUARIOS

USUARIO | OBJETO
NOVOVALOR |CAMPO | USUARIO
ID |ATUALIZADOEM
NOMECOMPLETO

Portanto, como a consulta ser otimizada com a utilizao de hint as estatsticas foram
deletadas. Nesse momento as informaoes utilizadas para a escolha do caminho que apresenta
o menor custo, realizada pelo Otimizador, foram removidas.
Logo aps a remoo das estatsticas das tabelas, realizou-se um explain da consulta como
mostra a Figura 45.

Figura 45: Consulta_3 (sem estatsticas)


Fonte: O Autor

Como mostra o explain, mesmo sem haver estatsticas, o Otimizador utilizou um dos ndices,
apresentando um custo inferior a consulta realizada na pesquisa para obter valores comparativos, como mostra o Anexo C, que foram executadas sem os ndices.
No entanto, o custo ainda encontra-se alto, pois o ndice utilizado foi aplicado somente
para o primeiro SELECT da consulta, sendo assim, o segundo realizou a leitura de toda a
tabela. Visando melhorar o custo, foi sugerido ao Otimizador que fosse utilizado o ndice

66

IX_HISTORICOS_3 na realizao do SELECT que est efetuando a leitura completa da tabela


HISTORICOS.
O hint utilizado possui a seguinte estrutura:

\*+INDEX (NOME_TABELA NOME_NDICE)*\


Essa sugesto forar a utilizao do ndice informado para a realizao da consulta, porm, no Oracle 10G, mesmo sem estatsticas nas tabelas, se o ndice sugerido apresentar um
custo maior para a execuo da consulta comparado com o que havia sido sugerido anteriormente pelo Otimizador, o hint que foi sugerido pelo desenvolvedor ser ignorado.
Na Figura 46, tem-se a Consulta_3 j com a sugesto aplicada.

Figura 46: Consulta_3 (com HINT )


Fonte: O Autor

Como a consulta apresentou um custo menor que o sugerido pelo Otimizador, foi empregado o ndice sem nenhum problema. Na Tabela 15, tem-se o ganho obtido com a sugesto
que foi proposta.
Tabela 15: Consulta_3 (Comparativo)
Consulta_3
Tempo (segundos) Custo
Sem sugesto
Com sugesto

13,61
12,221

3733
2281

Tambm foram montados os grficos de tempo e custo, para uma melhor visualizao dos
ganhos obtidos como mostram as Figuras 47 e 48.

67

Figura 47: Grfico comparativo Consulta_3 (Tempo)


Fonte: Gerado pela Tabela 15

Figura 48: Grfico comparativo Consulta_3 (Custo)


Fonte: Gerado pela Tabela 15

68

3.3

RESULTADOS OBTIDOS
Com os resultados obtidos com as melhorias realizadas, que tiveram seus resultados re-

presentados nos grficos, apresentaram resultados eficazes, melhorando assim, consideravelmente o item desempenho.
Mesmo se tratando de consultas no to complexas e de tratamento fceis, pode-se notar
o quo importante o desenvolvimento de consultas de forma otimizada.
Porm deve-se levar em conta, que todos os processos de otimizao, foram realizados em
cima de comandos SQL para consultas (SELECT ), no sendo utilizado comparaes ou testes
com demais comandos de manipulao de dados como INSERT,UPDATE e DELETE.
Todos os mtodos de otimizao aplicados, foram baseados em autores conhecidos e documentaes disponibilizadas pela prpria Oracle. Quanto a aplicao das ferramentas, so
encontrados em tutoriais dos prprios fabricantes, artigos e revistas especializadas em banco
de dados.
Nas Tabelas 16 e 17, traz os resultados comparativos de todas as consultas realizadas
nesse documento.

SQL

Tabela 16: Resultados comparativos (Tempo)


Tempo inicial (segundos) Tempo obtido (segundos)

Consulta_1
Consulta_2
Consulta_3

12,421
10,063
13,61

1,017
1,406
12,221

Tabela 17: Resultados comparativos (Custo)


SQL
Custo inicial Custo obtido
Consulta_1
Consulta_2
Consulta_3

6609
6602
3733

5
5
2281

Por fim, nota-se, ento, que em todas as consultas realizadas nesse estudo obteve-se ganho nas variveis custo e tempo, com valores significativos principalmente na Consulta_1 e
Consulta_2, com isso, no ocorre o uso desnecessrio de recursos do servidor e os dados so
resgatados do banco de forma muito mais rpida.

69

CONCLUSO

sabido que as informaes geradas pelos sistemas informatizados, quase que na sua
totalidade, so armazendas em bancos de dado e que a manipulao dessas informaes so
realizadas pela linguagem SQL. Sabe-se tambm que o Otimizador o responsvel em realizar
as consultas de forma otimizada, caso no ocorra, ocasionar uma lentido do sistema como
um todo, ou em determinados processos, dependendo da situao.
A busca do desempenho adequado o objetivo da otimizao das consultas. Com a aplicao de tcnicas de tuning, pode-se melhorar todo os processos que possam inviabilizar o uso de
um determinado sistema. O processo de otimizao deve ser realizado principalmente na fase
de anlise do projeto, evitando assim maiores problemas no desenvolvimento e na utilizao do
sistema.
Por meio do estudo destas ferramentas, foi possvel demonstrar o quanto so importantes
para o auxlio da identificao das consultas com problemas, trazendo informaes de todo o
plano de execuo e seus respectivos custos, tornando muito mais prtico o acerto das consultas e principalmente o ganho de tempo que essas ferramentas proporcionam, pois trazem
muitos recursos j pr-configurados.
J com a abodagem das tcnicas de otimizao, demonstrou-se que problemas relacionados a desempenho podem ser melhorados com a criao de ndices, com o uso desses ndices
pelo Otimizador e utilizao das sugestes (Hints) com o intuito de auxiliar o Otimizador na
construo do melhor caminho para a execuo das consultas.
O material utilizado para o desenvolvimento deste documento teve, como base, bibliografia
de livros, artigos, apostilas, tutoriais e documentaes sobre conceitos e otimizaes do prprio
banco de dados fornecidas pelo fabricante do software.
importante salientar as dificuladades encontradas durante o desenvolvimento deste documento, como a preocupao com o detalhamento dos exemplos para uma melhor compreenso
e com a falta de bibliografia mais tcnica sobre otimizao utilizando ferramentas.
Para um trabalho futuro, sugere-se um estudo sobre otimizao em bancos de dados distribudos ou em outros sistemas gerenciadores de banco de dados, talvez utilizando os resultados
obtidos nesta pesquisa para comparaes. Outra sugesto a utilizao de outros mtodos
para melhorar o desempenho das consultas.

70

REFERNCIAS
AUTOMATIONS, A. PL/SQL Developer. 2008. Disponvel em: <http://tinyurl.com/63ebd4>.
Acesso em: 02 de jul. de 2008.
CARATTI, R. L. Monitorao de sistemas de banco de dados. SQL Magazine, 2007.
CERCOLA, V. O. Oracle Banco de Dados Relacional e Distribudo. So Paulo: Makron Books,
1995.
COUCHMAN, J. S. Oracle Certified Professional. DBA Certification Example Guide. Berkeley:
McGraw-Hill Companies, 1998.
DATE, A. C. Introduo a Sistemas de Banco de Dados. Rio de Janeiro: Elsevier, 2006.
DBA-2, A. DBA-2. Joinville: Aporte, 2003.
FERNANDES, L. Oracle 9i Para Desenvolvedores Curso Completo. Rio de Janeiro: Axcel
Books, 2002.
FOGEL, S.; STERN, J. Oracle Database 2 Day DBA. 2008. Disponvel em: <http://tinyurl.com/6x2av2>. Acesso em: 06 de set. de 2008.
GONALVES, E. Tuning de SQL: Uma Abordagem para banco de dados Oracle. Dissertao
(Trabalho de Diplomao) Unio de Tecnologia e Escolas de Santa Catarina, Joinville, 2004.
GREEN, C. D. Performance Tuning Guide and Reference. 2002. Disponvel em: <http://tinyurl.com/6cu38o>. Acesso em: 02 de out. de 2008.
GREGOIRE, J.; LORENTZ, D. Database SQL Reference. 2003. Disponvel em: <http://tinyurl.com/6a76g6>. Acesso em: 05 de ago. de 2008.
LIBRARY, O. D. D. Oracle Database SQL Developer Users Guide. 2008. Disponvel em:
<http://tinyurl.com/6cm3w8>. Acesso em: 07 de set. de 2008.
LIMA, A. da S. Erwin 4.0 Modelagem de Dados. 2. ed. So Paulo: rica, 2002.
LONEY kevin. Oracle 9i: O Manual do DBA. Rio de Janeiro: Campus, 2002.
LORENTZ, D. Database SQL Language Reference. 2007. Disponvel em: <http://tinyurl.com/6dw6o2>. Acesso em: 05 de ago. de 2008.
MAYER, R. C. Otimizando a Performance de Bancos de Dados Relacionais. Rio de Janeiro:
Axel, 2001.
MOLINARI, L. BTO Otimizao da Tecnologia de Negcio. So Paulo: rica, 2003.
NIEMIEC, R. J. Oracle 9i Performance Tuning: Dicas e Tcnicas. Rio de Janeiro: Campus,
2003.
ORACLE9I. Online Generic Documentation. Realise 1 (9.0.1): Oracle Corporation, 2001.
RAMOS, E. Otimizao de comandos sql. SQL Magazine, 2003.

71

SANTOS, J. C. S. Tuning: O caminho na busca de um melhor desempenho. Developers Cio


Magazine, 2001.
TOW, D. SQL Tuning. Rio de Janeiro: Elsevier, 2003.
TUNING, A. Tuning de aplicativos. Joinville: Aporte, 2003.

72

ANEXOS

ANEXO A - PESQUISA PARA VERIFICAR PARMETRO DE CUSTO


ANEXO B - TABELA DE VALORES PARA REFERNCIA
ANEXO C - CONSULTAS REALIZADAS

73

ANEXO A - PESQUISA PARA VERIFICAR PARMETRO DE CUSTO


Esta pesquisa consiste na elaborao de consultas SQL, que sero utilizadas no estudo de
caso.
Essas consultas foram realizadas, utilizando as tabelas HISTORICOS e USUARIOS. No
presente momento, elas no possuem ndices e ambas encontram-se povoadas.
Os resultados obtidos, sero utilizados para gerar uma tabelas que conter as clusulas,
tempo decorrido, custo e nmero de registros.
Deu-se incio pesquisa no dia 16 de outubro de 2008, percorrendo a mesma por mais 2
dias.

74

ANEXO B - TABELA DE VALORES PARA REFERNCIA


Os dados presente na Tabela 18, foram resgatados durante o perodo de anlise, apresentando resultados satisfatrios para o desenvolvimento do estudo de caso.

Clusulas

Tabela 18: Resultados comparativos (Pesquisa)


Tempo (segundos) Custo

WHERE, AND, OR e JOIN


WHERE, AND e OR
WHERE, AND, OR, MINUS e JOIN

12,421
10,063
14,063

6609
6606
5249

Registros
399
399
1

75

ANEXO C - CONSULTAS REALIZADAS

Figura 49: Consulta_1 (sem ndices)


Fonte: O Autor

Figura 50: Consulta_2 (sem ndices)


Fonte: O Autor

76

Figura 51: Consulta_3 (sem ndices)


Fonte: O Autor