td josericardomacaneiro 2008 2

Upload: lkuklinshi

Post on 13-Jan-2016

216 views

Category:

Documents


0 download

DESCRIPTION

sql

TRANSCRIPT

  • 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

  • JOS RICARDO MAANEIRO

    Utilizao de Ferramentas Administrativas Para Otimizao de Consultas SQL em Banco

    de Dados Oracle

    Trabalho de Concluso de Curso, apresentado aoInstituto Superior Tupy - IST, como requisito par-cial para a obteno de grau de Bacharel de Siste-mas de Informao sob a orientao do professorDr. 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.

  • JOS RICARDO MAANEIRO

    Trabalho de Diplomao sob o ttulo Utiliza-o de Ferramentas Administrativas ParaOtimizao de Consultas SQL em Bancode Dados Oracle, defendido por Jos Ri-cardo Maaneiro e aprovado em 02 de de-zembro de 2008, em Joinville, pela bancaexaminadora 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 incondicio-nal na orientao deste trabalho, mesmocom todos os contratempos e dificuldadesimpostas por desafios desta natureza

  • AGRADECIMENTO

    Agradeo sobretudo a Deus, que me deuforas para concluir este trabalho quandotantas vezes desanimei.A meu orientador, professor Dr. Mehran Mi-saghi, que em todos os momentos estevedisposto a me ajudar, sempre com pacin-cia e me motivando para a concluso destetrabalho. professora Glaci, que sempre se dispsa ajudar nas correes gramaticais.Aos meus pais, minha av, pelo amor e de-dicao que sempre tiveram para comigoem todos os momentos da vida. minha amvel noiva e minha filha pelapacincia, compreenso, carinho e amor.Ao IST, pela qualidade do ensino que mefoi prestado durante todos os anos em quefreqentei a instituio.A todos os amigos, familiares e colegas detrabalho que contriburam de alguma formapara a concluso deste trabalho.

  • "No me preocupa que no exera um cargo, o que me preo-

    culpa 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 desempenhoadequado na execuo dos comandos. Inicialmente apresenta a parte conceitual de otimizaode consultas e ressalta a importncia do monitoramento. Em seguida, descreve o Otimizadordo Oracle e as tcnicas de otimizao, tais como criao de ndices e uso de de hints. O ob-jetivo desse trabalho apresentar uma melhor visualizao das consultas com problemas deuma forma mais simples e gil. Foram realizadas as otimizaes com o auxlio de ferramen-tas para esta finalidade e apresentados os ganhos de desempenho obtidos com as alteraes.A metodologia empregada um estudo de caso, utilizando ferramentas administrativas e dedesenvolvimento, para o auxlio das otimizaes que sero realizadas nas consultas de um sis-tema de help desk de uma determinada empresa. Concluiu-se que a utilizao de ferramentasagilizam o processo de identificao e otimizao das consultas, por obterem muitas funciona-lidades pr-configuradas.

    Palavras-chave: Consulta. Desempenho. Otimizao. Ferramentas.

  • ABSTRACT

    This work boards consultations optimizations techniques, aiming at to demonstrate one adjustedperformance in the execution of the commands. Initially it presents the conceptual part of consul-tations optimization and stands out the importance of the monitoring. After that, it describes theOracle optimizer and the techniques of optimizations, such as creation of indexes and the use ofhints. The objective of this work is to present better visualization of problematic consultations ina simple and agile form. In sequence this work will boards optimizations with the help of speci-fics tools and shows the benefits of performance with the alterations. The methodology used isa use case, utilizing administrative and development tools for the help of the optimizations thatwill be realized in the consultations of a help desk system of a defined company. We are able toconclude that the utilizations of consultatioukns tools speeding up the identifications process ofconsultations 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 . . . . . . . . . . . . . . . . . . . . . . . . 18Figura 2 Viso do processamento de consultas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21Figura 3 Acesso a tabela via ndice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26Figura 4 Acesso a tabela sem ndice. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27Figura 5 Home PL/SQL Developer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31Figura 6 Query Builder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31Figura 7 SQL Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32Figura 8 Command Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32Figura 9 Reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33Figura 10 Object Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33Figura 11 Performance Optimizing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34Figura 12 Home do Oracle Enterprise Manager (OEM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35Figura 13 Abas de navegao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36Figura 14 Nveis de detalhes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36Figura 15 Links relacionados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36Figura 16 Home Oracle SQL Developer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37Figura 17 Navegador de objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38Figura 18 Sesses abertas pelo script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41Figura 19 Sesses com maiores atividades no banco de dados . . . . . . . . . . . . . . . . . . . . 41Figura 20 Descrio das tabelas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44Figura 21 Consulta tabela HISTORICOS no PL/SQL Developer . . . . . . . . . . . . . . . . . . . . 44Figura 22 Consulta tabela USUARIOS no Oracle SQL Developer . . . . . . . . . . . . . . . . . . . 45Figura 23 Consulta tabela HISTORICOS no PL/SQL Developer (WHERE,AND) . . . . 46Figura 24 Consulta na tabela HISTORICOS (WHERE,AND) . . . . . . . . . . . . . . . . . . . . . . . . 46Figura 25 Consulta na tabela HISTORICOS (WHERE,AND,OR) . . . . . . . . . . . . . . . . . . . . 47Figura 26 Visualizar sesses para ativar e desativar trace . . . . . . . . . . . . . . . . . . . . . . . . . . 50Figura 27 Caixa de dialogo (ativa|desativa o trace) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50Figura 28 Comando TKPROF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51Figura 29 Comando para remover estatsticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53Figura 30 Comando para atualizar estatsticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55Figura 31 Consulta_1 (com um ndice) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55Figura 32 Consulta_1 (com dois ndices) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56Figura 33 Comando para criar as tabelas USUARIOS_TCC e HISTORICOS_TCC . . 57Figura 34 Consulta na HISTORICOS_TCC e USUARIOS_TCC (sem linhas) . . . . . . . . 58

  • Figura 35 Grfico comparativo Consulta_1 (Tempo) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59Figura 36 Grfico comparativo Consulta_1 (Custo) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59Figura 37 Maiores atividades no banco de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60Figura 38 Detalhes da Consulta_2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60Figura 39 Recomendaes sugeridas pelo OEM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60Figura 40 Mostragem comparativa dos planos de execuo . . . . . . . . . . . . . . . . . . . . . . . . 61Figura 41 Configurao de horrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62Figura 42 Grfico comparativo Consulta_2 (Tempo) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63Figura 43 Grfico comparativo Consulta_2 (Custo) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63Figura 44 Clusula MINUS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64Figura 45 Consulta_3 (sem estatsticas) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65Figura 46 Consulta_3 (com HINT ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66Figura 47 Grfico comparativo Consulta_3 (Tempo) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67Figura 48 Grfico comparativo Consulta_3 (Custo) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67Figura 49 Consulta_1 (sem ndices) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75Figura 50 Consulta_2 (sem ndices) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75Figura 51 Consulta_3 (sem ndices) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

  • LISTA DE TABELAS

    Tabela 1 Resultado da consulta na V$INSTANCE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39Tabela 2 Resultado da consulta na PLAN_TABLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48Tabela 3 Resultado da consulta na V$SESSION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49Tabela 4 Resultado da consulta na USER_DUMP_DEST . . . . . . . . . . . . . . . . . . . . . . . . . 49Tabela 5 Trace com os custos da consulta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52Tabela 6 Resultado da verificao de estatstica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53Tabela 7 Resultados Consulta_1 (sem ndices) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54Tabela 8 Resultados Consulta_1 (com um ndice) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55Tabela 9 Trace com os custos da Consulta_1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57Tabela 10 Resultados Consulta_1 (com dois ndices) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57Tabela 11 Consulta_1 (Comparativo) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58Tabela 12 Resultado da consulta na DBA_INDEXES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62Tabela 13 Consulta_2 (Comparativo) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63Tabela 14 ndices das tabelas HISTORICOS e USUARIOS . . . . . . . . . . . . . . . . . . . . . . . . . 65Tabela 15 Consulta_3 (Comparativo) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66Tabela 16 Resultados comparativos (Tempo) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68Tabela 17 Resultados comparativos (Custo) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68Tabela 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

    2.4 PROCESSAMENTO DE CONSULTA . . . . . . . . . . . . . . . . . . . . . . . . . 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.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

    3.3 RESULTADOS OBTIDOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

    4 CONCLUSO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

    REFERNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

    ANEXOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

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

    ANEXO B - TABELA DE VALORES PARA REFERNCIA . . . . . . . . . . . . . . . . 74

    ANEXO C - CONSULTAS REALIZADAS . . . . . . . . . . . . . . . . . . . . . . . . . 75

  • 15

    1 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 informa-

    es 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 con-

    siderado extremamente estvel e funcional. Ele responde a todas as expectativas com milhares

    de acessos simultneos. Essas caractersticas levam necessidade de conhecer suas ferra-

    mentas 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, utili-

    zando 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 deta-

    lhes 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 suges-

    tes 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

    2 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 relaci-

    onados 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 execu-

    tados 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 mem-

    ria, 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 deter-

    minado 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 desen-

    volvedores 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 ferra-

    mentas 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 ca-

    pazes 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 relacio-

    nadas 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 pro-

    blemas 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 desempenhoFonte: 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 Mani-

    pulation 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 (GON-

    ALVES, 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, DE-

    LETE 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 desempe-

    nho, 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 pro-

    gramadores, tornando assim o fruto desse conhecimento disponvel para o usurio ofe-

    recendo 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 efe-tuada para um formato que venha a ser identificado pela mquina para realizar as ins-

    trues, 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 osvalores 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 anali-sado como a consulta j convertida e transformada ser executada, efetuando consultas

    como ndices existentes nas tabelas ou outros caminhos de acesso, distribuio de valo-

    res, cluster fsico de dados armazenados etc;

    Estgio 4 - Gerar planos de consultas e escolher o mais barato: Nesse ltimo estgio, serrealizada 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, utili-

    zando 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 consultasFonte: 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. Es-

    colhe 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 ANALY-

    ZE, que tem como principal objetivo atualizar as estatsticas das tabelas, informaes que po-

    dem 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 (GON-

    ALVES, 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 proce-

    dimento, 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 desempe-

    nho 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 exe-

    cuo 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 pontei-

    ros, 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 TA-

    BLE_NAME, INDEX_NAME e DISTINCT_KEYS, que mostram o nome da tabela, nome do n-

    dice 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 ne-

    cessidade 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 desem-

    penho 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 ndiceFonte: Adaptado de Tow (2003)

  • 27

    A Figura 3, mostra acessos utilizando ndices. So procuradas as ROWIDs no ndice, den-

    tro 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 blo-

    cos 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 correspon-

    dente, apresentando assim uma maior lentido.

    Contudo, sempre se deve analisar os benefcios que determinados ndices possam apre-

    sentar 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 demodo 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 de-

    sempenho 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 res-

    gatadas, 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 pode-

    se 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 monitora-

    mentos 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 atual-

    mente 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), des-

    tinado 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 proprie-

    trio, desenvolvida pela Allround Automations.

    O PL/SQL Developer abrange um conjunto de conceitos-chave para os projetos de desen-

    volvimento de aplicaes Oracle. Essa ferramenta traz funcionalidades bastante utilizadas por

    desenvolvedores e administradores de banco de dados Oracle, funcionalidades que sero des-

    critas 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 consul-

    tas 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 mos-

    tra a Figura 6, apontando os seus relacionamentos, as clusulas WHERE e ORDER BY,

    JOIN de tabelas.

  • 31

    Figura 5: Home PL/SQL DeveloperFonte: Automations (2008)

    Figura 6: Query BuilderFonte: Automations (2008)

    b) SQL Window: uma Ferramenta muito utilizada pelos analistas e at mesmo pelo admi-

    nistrador 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 consul-

    tas (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 WindowFonte: 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 WindowFonte: 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: ReportsFonte: Automations (2008)

    e) Object Browser: Possui um visualizador de objetos, tal como mostra a Figura 10, po-

    dendo assim visualizar as dependncias entre as tabelas, editar tabelas ou dados de

    view, recompilar objetos invlidos, habilitar ou desabilitar objetos, remover objetos e ou-

    tras funcionalidades.

    Figura 10: Object BrowserFonte: 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, pos-

    sibilitando 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 necessi-

    dade.

    Figura 11: Performance OptimizingFonte: 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 monitora-

    mento 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 ne-

    cessidade 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 segu-

    rana, 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 desem-

    penho 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 da-

    dos, 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 OEMFonte: 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 navegaoFonte: Fogel e Stern (2008)

    Figura 14: Nveis de detalhesFonte: Fogel e Stern (2008)

    Figura 15: Links relacionadosFonte: 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 obje-

    tivo 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 DeveloperFonte: 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 objetosFonte: 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

    3 ESTUDO DE CASO

    O presente estudo de caso pretende abordar a identificao de consultas SQL com pro-

    blemas 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 obter-

    se 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 virtua-

    liza 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$INSTANCEINSTANCE_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 pa-

    dro (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 cons-

    tantemente, 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 ins-

    truo 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 ses-

    ses 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 scriptFonte: O Autor

    Figura 19: Sesses com maiores atividades no banco de dadosFonte: 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 co-

    mercializao 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, prin-

    cipalmente 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 USUA-

    RIOS. Neste momento essas tabelas no possuem ndices e chaves primrias.

    Atravs do comando "DESC", realizado em uma janela do SQL*Plus, como mostra a Fi-

    gura 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 caracte-

    rsticas das ferramentas que sero utilizadas.

  • 44

    Figura 20: Descrio das tabelasFonte: O Autor

    Figura 21: Consulta tabela HISTORICOS no PL/SQL DeveloperFonte: O Autor

  • 45

    Figura 22: Consulta tabela USUARIOS no Oracle SQL DeveloperFonte: 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 sa-

    tisfatrio, 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 exis-

    tentes 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

    3 WHERE t.usuario = Adm

  • 48

    4 and t.campo = Status

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

    6 /

    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 SE-

    LECT 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

    3 order by position

    4 /

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

    Tabela 2: Resultado da consulta na PLAN_TABLEOPERATION OPTIONS OBJECT_OWNER OBJECT_NAME COST

    TABLE ACCESS FULL TCC HISTORICOS 6606SELECT STATEMENT 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 reali-

    zadas, 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

    3 /

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

    Tabela 3: Resultado da consulta na V$SESSIONSID 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.

    Tabela 4: Resultado da consulta na USER_DUMP_DESTNAME 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 perma-

    necer 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 traceFonte: 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 pro-

    cesso 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 TKPROFFonte: 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:

    Tabela 5: Trace com os custos da consultacall count cpu elapsed disk query current rows

    Parse 1 0.00 0.01 0 0 0 0Execute 1 0.00 0.00 0 0 0 0Fetch 4 1.15 10.59 29242 29249 0 399total 6 1.15 10.61 29242 29249 0 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 per-

    corrido para realizar a consulta, o nmero de blocos lidos em disco, nmero de blocos consis-

    tentes 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) des-

    necessria, 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 estatsticasFonte: 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, visualizando-

    se 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 estatsticaOWNER TABLE_NAME LAST_ANALYZED

    TCC HISTORICOSTCC USUARIOS

    3.2.6 Otimizao da consulta utilizando ndices

    Com a identificao do problema, constatado com o auxlio das ferrametas que foram utiliza-

    das 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 Ta-

    bela 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 399Tempo decorrido 12,421 seg.Custo total da consulta 6609

    Com esses resultados obtidos, comparados com a consulta realizada na Figura 21, obteve-

    se 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 estatsticasFonte: 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 docu-

    mento.

    A seguir, ser realizado um novo explain, utilizando o PL/SQL Developer, que ser visua-

    lizado 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 399Tempo decorrido 7,375 seg.Custo total da consulta 7

    A consulta, que foi proposta, utiliza tambm as colunas NOMECOMPLETO e DEPARTA-

    MENTO da tabela USUARIOS. Visando ainda um melhor desempenho, ser construdo o se-

    guinte 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_1call count cpu elapsed disk query current rows

    Parse 1 0.00 0.01 0 0 0 0Execute 1 0.00 0.00 0 0 0 0Fetch 4 0.03 0.01 1989 1994 0 399total 6 0.03 0.02 1989 1994 0 399

    Tabela 10: Resultados Consulta_1 (com dois ndices)Registros recuperados 399Tempo 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 HISTORI-

    COS_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_TCCFonte: 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 exis-

    tentes 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 visualiza-

    o dos resultados obtidos como mostram as Figuras 35 e 36.

    Tabela 11: Consulta_1 (Comparativo)Consulta_1 Tempo (segundos) Custo

    Sem ndice 12,421 6609Com um ndice 7,375 7Com dois ndices 1,017 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 dadosFonte: O Autor

    Com essa janela, resgatam-se algumas informaes da consulta SQL que est sendo rea-

    lizada, 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 execu-

    o 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_2Fonte: 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 OEMFonte: 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 execuoFonte: 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 progra-

    mado 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 pro-

    cesso, 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