Lab128
 Ferramentas para Monitoramento Avançado de Instâncias Oracle®
ADMMAN Informática 
Santos/SP   

Sobre a ferramente Lab128.

Ajustes baseados em tempos de resposta, em estatísticas de SQL e do ambiente agora são suportados.

Sala de servidores

A tempo de resposta de um sistema baseado na base de dados é o tempo decorrido entre enviar uma consulta em SQL e o retorno do resultado. O tempo de resposta é o métrica mais importante do sistema para o usuário final, porque é um componente principal do desempenho percebido (pelo usuário final) pela base de dados.

Ajustes de desempenho baseados no tempo de resposta:
Foca em ações para o usuário da base de dados para qual o desempenho necessita ser melhorado. Utilizamos então os recursos do Oracle Wait Interface (OWI) para identificar as instruções SQL que causam a maioria dos tempos de resposta. As ações requeridas são baseadas na análise dos componentes do tempo decorrido para as instruções selecionadas. Depois de um exame das causas provocadas por estas instruções, pode ser necessário iteragir com este processo até que um efeito desejado seja alcançado. Esta abordagem passou a ser amplamente conhecida através do recurso Active Session History (ASH) com o advento do Oracle versão 10g. (mais detalhes, ver abaixo).

O ajuste de estatísticas baseadas em SQL é uma nova abordagem. Para termos uma idéia melhor, não há outra ferramenta que implemente esta técnica. Ela é baseada em instantâneos (snapshots) frequentes da visão (view) v$sql (ou, v$sqlstats na versão 10g Release 2). A diferença (delta) entre estes instantâneos (snapshots) podem ser calculados para qualquer período de tempo. Acabou sendo uma agradável surpresa em constatar quão preciso e produtivo esta técnica é, na realidade. Esta abordadem é uma alternativa viável (se não melhor) ao ASH. Acaba se destacando em ajustes de ambientes OLTP com pequenas consultas que ocorrem frequentemente, onde o ASH é menos efetivo. Estatísticas baseadas em SQL podem ser usadas em conjunto com ASH para incrementar a eficácia dos ajustes de desempenho. Você provavelmente já ouviu dizer que o AWR (Automatic Workload Repository) no Oracle 10g explorou esta oportunidade ao capturar os dados de v$sql a cada hora. A média da taxa de captura padrão no Lab128 é um instantâneo (snapshot) a cada 15 segundos para a view v$sqlstats ou um instantâneo (snapshot) a cada 30 segundos para a view v$sql, fazendo com que não haja comparação em termos de novas possibilidades e uma precisão sem precedentes. No Lab128 é verdadeiramente possível rastrear as estatísticas de instruções SQL individuais no período. Agora é mais fácil identificar quais instruções SQL foram responsáveis por picos intermitentes de consumo de CPU, leituras em disco, etc - algo que não seria possível com o AWR. (maiores detalhes, mais abaixo).

Ajuste no ambiente: É baseado na análise de estatísticas de performance da instância Oracle. As aproximações para encontrar o problema, tal qual vinham sendo utilizadas anteriormente para solucionar o problema podem não ser eficientes quando um momento de disparidade existe entre as contribuições de indicações para diferentes instruções SQL com problemas de performance. Entretanto, para algumas situações quando diferentes instruções SQL diferentes mostram uma contribuição uniforme ao tempo de resposta, ou quando os problemas de desempenho são vivenciados através de muitas áreas de interação do usuário, a causa real pode ser mais abrangente devido à configuração do ambiente (tal como um sistema sub-dimensionado, por exemplo). As estatísticas do ambiente irão expor o problema, fornecendo dados para as devidas ações que se fizerem necessárias.

O Lab128 suporta ambos os tipos de ajuste fino. Ele emprega um levantamento de dados muito abrangente da OWI (Oracle Wait Interface) e de suas visões do desempenho. Esta informação é agregada e montada em gráficos e também em modo tabular, fornecendo uma visão intuitiva e detalhada de como uma instância Oracle está trabalhando, em termos de registros atuais e históricos. Bem, mencionamos que as versões anteriores (8i e 9i também são suportadas e também podem tirar vantagem destas técnicas avançadas ?

O levantamento de dados do desempenho de instâncias Oracle, sem comprometer a integridade.

O ajuste e monitoramento de instâncias Oracle é baseado em visões V$ que fornecem o acesso aos dados de performance do banco de dados. Sabendo-se que a maioria das estatísticas contidas em visões refletem os valores acumulativos de retorno, não é totalmente possível dizer em que estado a base de dados se encontra, baseado somente no exame de instantâneos ("snapshots") da instância. Somente medindo-se a mudança dos valores (deltas) entre estes instantâneos ("snapshots") é que dará a informação sobre a atividade que aconteceu entre estes instantâneos ("snapshots"). Somente fazendo um exame minucioso de uma série dos instantâneos ("snapshots") coletados em um período de tempo é que fornecerá um retrato dinâmico de como funciona uma instância Oracle.

A seqüência de medições, ou os instantâneos ("snapshots"), examinados em um intervalo de tempo não-aleatório são chamados de série de tempo. As medições feitas mais freqüentemente fornecem uma precisão maior sobre o tempo em que os eventos ocorrem, isto é, a série de tempo com taxa de amostragem mais elevada terá a definição muito melhor. Seria natural supor que uma taxa mais elevada de amostragem fosse melhor, mas na realidade cada medição pode acrescentar um custo extra ao sistema sendo medido. Isto é particularmente verdadeiro para instâncias Oracle, onde cada consulta à visões v$ compartilha em parte um trajeto da execução com se fosse uma consulta SQL regular.

Outra consideração a se fazer é o número e a variedade de estatísticas a serem capturadas. O modo mais tradicional é focalizar nas visões mais importantes, tais como aquelas conhecidas como v$sysstat, v$system_event, etc. Fora esta quantidade de visões a serem consultadas, quais estatísticas devem ser coletadas ? Cada manual neste tópico teria sua própria lista dos estatísticas mais importantes, dependendo da natureza e origem do problema. Mas, se a natureza ou a origem do problema forem desconhecidos ? Por que não coletar todos as estatístics disponíveis ?

Estes dois fatores - o que coletar e qual a frequência - foram os aspectos limitantes para muitos produtos de monitoramento. A forma utilizada pelo Lab128 é mais original e completa: captura todos as estatísticas contidas de v$sysstat, em v$system_event, em v$filestat, em v$rollstat, em v$latch, e em outras mais. Para ser mais específico, são aproximadamente mais de 1.000 estatísticas para manter-se a par, sem mencionar que algumas estatísticas podem ter valores múltiplos (como aqueles encontrados nas visões v$system_event, em v$latch, em v$filestat, etc.). Uma outra característica original de Lab128 é sua capacidade em manter uma elevada taxa da amostragem, algo entre 6 a 12 segundos entre estas medições (coleta de estatísticas). Efetivamente, comprovar esta taxa é algo limitado pelo custo de executar consultas nas visões v$. A taxa de 6 a 12 segundos entre medições pode ser considerada como ótima e considera-se como tendo um custo baixo para o sistema sendo monitorado. A fim manter um impacto mínimo sobre os dados sendo coletados, o Lab128 pode automaticamente abaixar a taxa da amostragem.

O Lab128 armazena os dados coletados sob forma comprimida, em sua própria base de dados residente em memória (tal qual o uma instância Oracle faz, com o cache buffer). Por padrão, o Lab128 aloca 4MB para sua base de dados em memória, podendo armazenar aproximadamente 10 horas da histórico com milhares de estatísticas coletadas a cada intervado de 6 segundos. Desta forma, é recomendável que nos equipamentos onde estiver instalado o Lab128 possam ter pelo menos 256Mb da RAM, de forma que é possível e até aconselhável aumentar a capacidade conforme a necessidade. Com 100Mb da memória alocada para o levantamento de dados, mais de uma semana da histórico pode ser coletada, aproximadamente. Isso é aproximadamente meio bilhão de pontos, sendo cada valor armazenado com precisão de 64 bits e disponível para ser visualizado e analisado, instantaneamente. Isto não seria possível sem haver uma compressão de dados extremamente eficaz: o Lab128 usa um algoritmo proprietário e sem perdas na compressão de dados, que fornece uma relação elevada na compressão dos dados e mantendo um acesso aleatório e imediato aos dados armazenados.

Coleta de dados usando o recurso Active Session History (ASH).

O ajuste de instâncias Oracle, baseados no tempo de resposta, emprega as visões da Oracle Wait Interface (OWI) - v$system_event, v$session_event, v$session_wait e v$event_name. A versão Oracle 10g ampliou a interface OWI, incluindo as visões v$ session_wait em v$session e introduziu uma nova, denominada de v$active_session_history, emfatizando a importância de se ajustar instâncias Oracle baseados nesta interface (OWI). Mais especificamente, a visão v$active_session_history é uma coleção dos instantâneos da visão v$session, efetuadas em um intervalo regular do tempo para as sessões ativas (da instância sendo monitorada). O Lab128 utiliza um modo similar à esta técnica, embora não seja dependente da visão v$active_session_history, de modo que o Lab128 torna este recurso acessível e compatível com versões anteriores à versão 10g do Banco de Dados Oracle. Favor observar que a visão v$active_session_history é uma parte integrante do conjunto de diagnóstico do Oracle 10g e requer a compra da licença para utilizar o ODP (Oracle Diagnostics Pack). Conseqüentemente, o Lab128 oferece uma economia adicional executando funções da ASH (Active Session History) e não requerendo a aquisição de uma licença de ODP (Oracle Diagnostics Pack).

Tendo sido coletados os dados coletados da ASH (Active Session History), o Lab128 oferece gráficos sofisticados através do Activity Explorer, onde os eventos da espera do ambiente são combinados com os dados do ASH (Active Session History). Aqui você pode identificar quais recursos da base de dados que eram os maiores "gargalos" durante qualquer período de tempo selecionado, qual query SQL que tomou o maior tempo para ser executada e ver o tempo de espera ser separado em diversos eventos diferentes. O texto de uma instrução SQL também é mostrado (bem como o plano de execução) assim como uma série de outros dados, em detalhes.

Coletando estatísticas de execuções de instruções SQL.

O ajuste baseado nas estatísticas se baseia em uma coleção de instantâneos (snapshots) baseados na v$sql. O Oracle 10g versão 2 oferece uma outra visão mais escalável baseada na v$sqlstats que está sendo utilizada para ocupar o espaço da v$sql, no futuro. A visão v$sqlstats também contém uma marcação do horário da alteração ocorrida, o que permite uma consulta de forma incremental nestes dados e permite uma redução no consumo no tráfego da rede. Há muitos desafios a serem enfrentados na coleta de estatísticas de instruções SQL: o total de dados a serem manipulados, a natureza transiente das instruções SQL que podem ir e vir na SQL Area, e a interpretação e apresentação dos dados coletados. Quando contatamos a Oracle Corporation para questionar os planos de incorporar esta forma (de coleta) no banco de dados, eles responderam que isto poderia ter um custo proibitivo. Bem, isto foi difícil (de implementar) mas não impossível. O uso intenso de compressão (de dados) e algoritmos adaptáveis fizeram disto uma realidade. Agora você pode tirar vantagem deste trabalho pioneiro e empregar esta técnica. Devido à esta efetividade, poderá ser uma das mais importantes técnicas para descobrir problemas em bancos de dados Oracle, no futuro.

A exploração dos dados de performance com uma flexibilidade sem precedentes.

Todos os dados (das estatísticas que uma instância Oracle gera) brutos não possuem sentido sem uma maneira eficaz de pré-processá-las, quantificá-las e de visualizá-las. Enquanto Lab128 efetua todos estas três coisas, ele também dá a oportunidade para o usuário de definir e mudar as características chave do processamento destes dados. Para compreender melhor o que isso significa, tente fazer um exame rápido nos detalhes obtidos nos dados brutos de desempenho de uma instância Oracle:

- Por causa da latência, é difícil coletar instantâneos consecutivamente com exatamente o mesmo intervalo (de tempo) entre eles. Os dados brutos deve ser capturados ou interpolados ao mesmo momento “padrão” do tempo, transformando uma série das medidas em séries de tempo com pontos em intervalos igualmente espaçados entre si. As estatísticas que vêm de diferentes visões v$ podem ter sido examinadas em momentos diferentes, de forma que com uma ajuda da interpolação nos dados podemos fazê-los comparáveis.

- Como já mencionado anteriormente, a maioria de visões v$ do Oracle fornecem valores cumulativos. Assim tais séries de tempo necessitam ser diferenciadas em tempo.

- Há muitos métricas tais como a "Buffer Hit ratio" (média de acertos em cache buffer), que se derivam de diversas outras estatísticas; conseqüentemente os cálculos algébricos em séries de tempo devem ser executados. Pelo fato do Lab128 armazenar os dados coletados em memória, aplica uma metalinguagem para acessar a série de tempo e define expressões algébricas nelas. O usuário pode inclusive verificar qual é a fórmula que se encontra atrás de uma determinada métrica, se desejar. O usuário pode também criar uma nova métrica, especificando uma nova fórmula, conforme a necessidade.

- O Lab128 tem uma variadade muito grande de gráficos pré-definidos que ajudam muito a explorar diferentes tipos de dados de desempenho e os comparar uns com os outros.  O usuário pode especificar seus próprios gráficos ou gráficos correlacionados de encontro às estatísticas pré-definidos ou definidas pelo próprio usuário. Não há outra ferramenta para ambientes Oracle que oferece este grau de flexibilidade.

Uma interface de monitoramento em tempo real, sofisticada e com uma interface de usuário bastante intuitiva.

Enquanto é importante saber o que (e quando) foi executado pela instância Oracle a algum tempo atrás, também é muito importante ver como e o que está acontecendo no momento. O Lab128 mantém as informações coletadas recentemente em seu próprio banco de dados interno (em memória), atualizando inteligentemente somente aquelas áreas que estão sendo vistas pelo usuário. Usando esta técnica, o Lab128 oferece um retrato extensivo a um custo baixo para a instância Oracle que está sendo monitorada. Assim que o usuário desloca o foco da sua atenção para outra área de interesse, uma informação mais detalhada está imediatamente disponível. A equipe do desenvolvimento de Lab128 acredita que a usabilidade e a conveniência de uma aplicação possuem a mesma prioridade que sua sofisticação. Se alguma coisa não é conveniente, não será utilizada. A interface de usuário utiliza "hot links" e técnicas "drill-down" para fazer como que os detalhes mais intrincados sejam visualizados através de poucos cliques. Isso dá a um DBA sobrecarregado uma vantagem tremenda em observar os processos internos, rastrear problemas, ou aprender e compreender de forma simples como funciona uma instância Oracle. Alguns recursos disponíveis no modo como o Lab128 monitora, tais como o "Block Buffer Explorer" e outros, sequer foram explorados por outras ferramentas de monitoramento de instâncias Oracle.

Instalação e manutenção facilitadas.

Para instalar, apenas copie o programa Lab128 e execute-o. E isto é tudo ! Bem, para falar a verdade, você precisará também de um arquivo de Help file a menos que já esteja totalmente familiarizado com o funcionamento do Lab128. O programa praticamente não utiliza o Registro do Windows, e todas as as configurações necessárias são armazenados em arquivos de texto armazenados no mesmo diretório onde Lab128 de onde foi iniciado. É recomendada a criação de um diretório um diretório próprio, como por exemplo C:\Arquivos de Programas\Lab128, para manter os arquivos lá. Neste diretório você deverá ter os privilégios de escrita para permitir salvar as suas preferências (de uso do programa). Caso seja necessário desinstalar o programa Lab128, simplesmente remova o diretório onde depositou o programa Lab128.

Performance em estado de arte.

Há dois componentes para a performance de qualquer ferramenta de monitoramento: o impaco no sistema sendo monitorado e a rapidez de sua interface de usuário.

A filosofia por detrás do desenvolvimento da ferramenta Lab128 foi em apresentar a menor carga possível para uma instância Oracle. De forma a alcançar este objetivo, o Lab128 explora muitas técnicas. Por exemplo, ao invés de executar diversas consultas através de uma ou duas visões e juntá-las, seria muito melhor executar consultas simplesmente em cada uma destas visões para efetuar estas junções localmente na aplicação (Lab128). Similarmente, qualquer coisa acessada pelo Lab128 é mantido em um cache local de forma a evitar acessos desnecessários através de novas consultas, no futuro. Para conservar os recursos do lado de uma instância Oracle, a ferramenta Lab128 não utiliza a instância Oracle para armazenar quaisquer dados (tais como os dados de extensão de segmentos armazenados pela ferramenta de monitoramento da Quest) que serão utilizados localmente pela aplicação e nunca solicita à uma instância Oracle para executar algum processamento pela instância Oracle (tal qual uma pesquisa binária implementada em código PL/SQL code na ferramenta mencionada anteriormente) se ela pode ser executada localmente. Por exemplo, O "Block Buffer Explorer" do Lab128 pega os dados obtidos através da visão v$bh, mas todas os cálculos são feitos pela própria aplicação, localmente. E isto é verdadeiro para muitos outros processos.

Quanto à usabilidade, o desempenho da interface de usuário é um assunto de grande interesse. Existem algumas ferramentas escritas em Java, mas o desempenho da interface de usuário destas poderiam prejudicar a sua utilização diária. O Lab128 foi totalmente escrito em C++ e utiliza eficientes algoritmos de processamento de dados que podem processar as grandes quantidades de dados sendo armazenadas. Ele possui um mecanismo muito eficiente e com um baixo custo de processamento, e emprega multiprocessamento para manter todos os processos rodando na retaguarda interagindo com a interface de usuário. Como resultado, Lab128 roda bem em antigas estações Pentium de 90MHz, por exemplo. Como ele consome bem poucos recursos, ele pode permanecer em execução sem maiores impactos junto com outras aplicações.

O que a ferramenta Lab128 não é.

Você poderá encontrar muitos usos para o Lab128. Ele é uma ferramenta de monitoramento excelente mas não disponibiliza recursos para enviar alertas para o usuário, no momento. A ferramenta Lab128 assume uma certa iteração por parte do usuário porque são mais atos sobre ajustes e exploração avançada das milhares de estatísticas disponíveis. Esta ferramenta não foi criada para administrar instâncias Oracle, embora você possa utilizar o editor do "SQL Central" como se fosse um repositório estendido de consultas para executar serviços administrativos. Finalmente, esta ferramenta não fornece indicações sobre como resolver os seus problemas; somente sobre apresentar os fatos coletados. Nós respeitamos a seu conhecimento e a sua experiência em seu próprio ambiente de banco(s) de dados. Nós acreditamos que tomando suas próprias decisões baseados na coleta dos dados é a melhor forma de manter a performance para o(s) seu(s) banco(s) da melhor forma possível. 

Veja também: Um breve sumário dos recursos do Lab128.
Para ver algumas telas do Lab128:  Algumas telas do Lab128.
Para baixar (download) uma versão de avaliação: Download da ferramenta Lab128.

  Todos os direitos reservados para a 128 Consulting, USA