Automatic Database Diagnostic Monitor – ADDM

A cada snapshot gerado pelo MMON e salvo no AWR, o Oracle executa o ADDM, Automatic Database Diagnostic Monitor, em que ele compara os dois últimos snapshots, fazendo uma análise, avisa se existe algum problema e até mesmo sugere a solução.

Mas, se quiser rodar o ADDM manualmente também é possível. Pode-se rodar para o database, útil em ambientes RAC em que ele irá analisar todas as instâncias pertencentes ao RAC. Ou executar apenas para uma instância especifica.

SQL> DECLARE
  2    tname VARCHAR2(30);
  3  BEGIN
  4    tname := 'ADDM TESTE';
  5    DBMS_ADDM.ANALYZE_DB(task_name      => tname,
  6                         begin_snapshot => 7,
  7                         end_snapshot   => 10);
  8  END;
  9  /

PL/SQL procedure successfully completed.

SQL>

O exemplo acima é para o banco inteiro, onde é informado o nome da task e qual a faixa de snapshots a serem analisados. Se quiser executar para apenas uma instância, a procedure será a ANALYZE_INST, tendo que informar apenas mais um parâmetro, que no caso seria o instance_number.

E para verificar o relatório do ADDM? Também é simples, através da função DBMS_ADDM.GET_REPORT, que retorna um CLOB, e o parâmetro de entrada é o task_name. Abaixo tem um exemplo, como o meu banco de dados é uma VM apenas de testes, ele não teve muito uso, então não teve nenhuma recomendação.

SQL> SELECT DBMS_ADDM.GET_REPORT('ADDM TESTE')AS ADDM_TESTE FROM DUAL;

ADDM_TESTE
--------------------------------------------------------------------------------
          Relatório ADDM da Tarefa 'ADDM TESTE'
          -------------------------------------
 
Período da Análise
------------------
Faixa de snapshot de AWR de 7 para 10.
O período é iniciado em 19/08/2019 09:16:08
O período termina em 19/08/2019 12:00:41
 
Alvo da Análise
---------------
Banco de dados 'ORCL' com ID de BD 1544246049.
Versão do banco de dados 12.2.0.1.0.
A análise foi solicitada para todas as instâncias, mas o ADDM analisou a 
instância orcl, numerada com 1 e hospedada em terciocosta.ol77.
Consulte a seção "Informações Adicionais" para obter mais informações sobre as 
instâncias solicitadas.
 
Atividade Durante o Período de Análise
--------------------------------------
O tempo total do banco de dados foi 32 segundos.
O número médio de sessões ativas foi 0.
O ADDM analisou 1 das 1 instâncias solicitadas.
 
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
Não há descobertas a serem relatadas.
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
          Informações Adicionais
          ----------------------
 
Informações Diversas
--------------------
Não havia atividade de banco de dados significativa para executar o ADDM.

O que pode ajudar também é as views :

  • DBA_ADVISOR_FINDINGS – Exibe todos os findings de todos os advisors
  • DBA_ADDM_FINDING – É um subconjunto da view anterior, mostrando apenas os findings do ADDM.
  • DBA_ADVISOR_FINDING_NAMES – Lista de todos os nomes dos findings.
  • DBA_ADVISOR_RECOMMENDATIONS – Lista os resultados do diagnóstico juntamente com a recomendação para cada problema identificado. A coluna BENEFIT exibe o quanto a performance pode melhorar aplicando a recomendação.
  • DBA_ADVISOR_TASKS – Mostra informações sobre as tasks existeintes, como nome, id e etc.

No exemplo mostrado anteriormente, no meu banco de testes, o ADDM não fez nenhuma recomendação. Mas, para mostrar um exemplo de uma recomendação, finding, real, segue:

FINDING 1: 31% impact (7798 seconds) 
------------------------------------ 
SQL statements were not shared due to the usage of literals. This resulted in 
additional hard parses which were consuming significant database time.

RECOMMENDATION 1: Application Analysis, 31% benefit (7798 seconds)
  ACTION: Investigate application logic for possible use of bind variables
    instead of literals. Alternatively, you may set the parameter 
    "cursor_sharing" to "force".
  RATIONALE: SQL statements with PLAN_HASH_VALUE 3106087033 were found to be
    using literals. Look in V$SQL for examples of such SQL statements.

Veja, que o problema esta na aplicação, as consulta sendo utilizadas, não estão usando bind variables. Como resultado disso, o cursor não esta sendo reutilizado, e esta forçando muito parse, consumindo muitos recursos.

A recomendação seria mudar a aplicação, ou então alterar um parâmetro do Oracle, no caso o cursor_sharing para FORCE. Aplicando a recomendação teríamos um ganho de 31% de performance!

Uma observação, é que para utilizar tanto o AWR como o ADDM, o banco Oracle tem que estar na versão Enterprise com a option Diagnostics Pack!

Anúncios

Meu nome é Tércio Costa, sou formado em Ciências da Computação pela UFPB, tenho a certificação Oracle SQL Expert e OCP PL/SQL, mantendo um blog reconhecido pela OTN(oraclepress.wordpress.com), no qual também publico artigos técnicos no portal OTN, no portal http://www.profissionaloracle.com.br/gpo e na revista SQL Magazine. Além de tudo isto sou um Oracle ACE Associate por estar sempre contribuindo para a comunidade com um bom nível de expertise.

Marcado com: , , , , , , , , ,
Publicado em AWR

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.

Esse Blog é reconhecido pela
Certificações
Sou articulista

Clique para seguir este blog e receber notificações via email de novos posts.

Tércio Costa

Tércio Costa

Meu nome é Tércio Costa, sou formado em Ciências da Computação pela UFPB, tenho a certificação Oracle SQL Expert e OCP PL/SQL, mantendo um blog reconhecido pela OTN(oraclepress.wordpress.com), no qual também publico artigos técnicos no portal OTN, no portal http://www.profissionaloracle.com.br/gpo e na revista SQL Magazine. Além de tudo isto sou um Oracle ACE Associate por estar sempre contribuindo para a comunidade com um bom nível de expertise.

Links Pessoais

Serviços verificados

Visualizar Perfil Completo →

Total de Visualizações da Página
  • 138.077 Visualizações
%d blogueiros gostam disto: