Páginas

30 de abr. de 2014

Entendendo as visões de performance dinâmicas


 
Olá pessoal,

     No artigo de hoje vou comentar sobre as visões de performance dinâmicas do Oracle Database e como elas podem nos ajudar no trabalho de Performance Diagnostics and Tuning (ou somente Performance Tuning, como eu prefiro chamar). Conforme comentado no artigo O que é Tuning?, as consultas às visões de performance dinâmicas são um dos bons métodos atuais possíveis para encontrar problemas de performance no BD (Banco de Dados) Oracle.

     As visões de performance dinâmicas, também conhecidas como visões V$, são um conjunto de tabelas virtuais construídas a partir de estruturas de memória e de disco, que são de propriedade do SYS, e que possuem informações de atividades do BD (desde o seu startup até o momento atual). Elas possuem este nome porque contém informações primariamente relacionadas à performance do BD e porque são constantemente atualizadas enquanto o BD está aberto. Apesar de parecerem tabelas regulares, elas são armazenadas somente em memória e seus dados são dependentes do estado da instância e do BD, portanto, você conseguirá acessá-las somente se o BD estiver aberto (modo OPEN).
 
     É importante ressaltar que a cada nova versão do Oracle Database, são adicionadas dezenas de V$. Veja o quadro da Imagem 01 para consultar a quantidade de visões por versão e release do Oracle Database:
Imagem 01 - Qtde. de visões V$ por versão
e release do Oracle Database (a partir do 10G)

Obs.: Para ver uma lista completa das V$ no seu BD, execute a consulta abaixo:
           SQL> select * from v$fixed_table where name like 'V%'.

     Um ponto muito interessante e que gera muita confusão, é que o nome das visões V$ não começa com V$, mas sim com V_$. Ao consultar, por exemplo, o objeto V$SYSSTAT, estamos acessando um sinônimo público que aponta para a visão V_$SYSSTAT. Por isso, quando um DBA precisa atribuir privilégios de consulta às V$ a outros usuários, ele deve utilizar o nome que inicia com V_$, como no exemplo abaixo:
          SQL> GRANT SELECT ON V_$SYSSTAT TO FABIO;

      Para toda visão V$, também existe uma GV$ correspondente, que pode ser utilizada em ambientes Oracle RAC (Real Application Clusters) para ver informações de todos os nós do ambiente. Como existem muitas V$, irei apresentar abaixo, uma lista de 10 das 645 visões que existem na última versão do Oracle Database (12c), até a presente data:

          - V$ACTIVE_SESSION_HISTORY
            Contém estatísticas atualizadas a cada segundo, de snapshots de sessões de BD ativas.

          - V$OSSTAT
            Contém estatísticas de utilização de recursos do sistema operacional.

          - V$SESSION
            Fornece informações de sessão de todas as sessões atuais do BD.

          - V$SESSION_EVENT:
             Fornece um resumo sobre todos os eventos que a sessão esperou desde o momento em que o BD foi inicializado;

          - V$SESSION_WAIT
             Fornece informações sobre o atual ou último evento de espera de cada sessão aberta no BD.

          - V$SQLTEXT
             Exibe o texto SQL completo de instruções SQL pertencentes a cursores compartilhados na SGA.

          - V$SQLSTATS
             Contém estatísticas de performance básicas de instruções SQL.  

          - V$SYSMETRIC
             Contém métricas de sistema capturadas em 2 intervalos de tempo: últimos 15 segundos ou últimos 60 segundos.
   
          - V$SYS_TIME_MODEL
             Contém estatísticas acumuladas de várias operações de todo o sistema.
   
          - V$SYSSTAT
             Contém estatísticas globais de várias partes do BD, incluindo rollback, I/O físico e lógico e outros. Pode ser usada p/ calcular hit ratio de áreas de memória, tais como a buffer cache.

     As V$ que acabei de apresentar fornecem estatísticas diversas sobre tempo de execução de vários componentes do BD, instruções SQL, sessões de usuário ou até mesmo recursos do SO. Essas informações são extremamente úteis para diagnosticar problemas de performance no BD e entender o que ele está processando! Para aqueles que desejam começar esta atividade, disponibilizei para download no link scripts_vpd.sql, alguns dos scripts que são utilizados no treinamento Database Performance Tuning, que referenciam as V$ que acabei de apresentar. Os scripts estão compactados e protegidos com senha. Para recebê-la assine a newsletter que encontra-se no painel direito deste blog.



Bom pessoal, por hoje é só!
Qualquer dúvida, é só deixar um comentário!

[]s


Referências:
     - Oracle v$ view listOracle Tips by Burleson Consulting;
     - Overview of the Dynamic Performance ViewsOracle® Database Concepts 11g Release 2 (11.2)
     - Instance Tuning Using Performance Views, Oracle® Database Performance Tuning Guide 11g Release 1 (11.1)
     - About Dynamic Performance Views, Oracle® Database Reference12c Release 1 (12.1)
   

2 comentários:

  1. Bom dia, Fabio.

    Estou começando com administração do oracle a pouco tempo e todo conhecimento para agregar é uma vantagem. rsrs

    Parabéns pelo conteúdo, já tenho vários artigos salvos como "favoritos" do navegador. haha.

    Obrigado.

    ResponderExcluir