AWR – Medindo IOPS e Throughput de I/O do Oracle Database
agosto 27, 2014

Uma conseqüência natural do trabalho de um DBA é passar horas e horas em cima de um relatório AWR identificando problemas e causas de performance do banco de dados.

Um dos enganos mais comum da maioria é conseguir identificar o IOPS e throughput de I/O dentro do próprio Oracle AWR. Esse ponto é essencial para você conseguir definir a sua infra-estrutura de I/O para combinar com a sua aplicação e além de conseguir levantar dados para debater de forma inteligente com sua equipe de storage.

Antes, vamos realmente entender o que é IOPS e throughput de dados, que são termos completamente diferentes:

IOPS – É a unidade padrão que mensura uma operação de Input/Output (I/O) por segundo. Usado para descrever I/O rate de aplicações principalmente utilizado para acessos randômicos I/O (leituras de indexes) e aplicações do tipo OLTP.

Throughput (Mbytes/s) – Usado para mensurar grandes taxas de transferências de blocos. Usado principalmente para aplicações seqüenciais de dados como DSS e OLAP. (full table scan)

O relatório de AWR pode ser seu aliado para identificar essas métricas de I/O na sessão Instance Activity Stats:

IOPS = “physical read total I/O requests” + “physical write total I/O requests”
MBytes/s = “physical read total bytes” + “physical write total bytes”

Ou você pode utilizar a seguinte consulta para mostrar esses valores:

select min(begin_time), max(end_time),
sum(case metric_name when 'Physical Read Total Bytes Per Sec' then average end) Physical_Read_Total_Bps,
sum(case metric_name when 'Physical Write Total Bytes Per Sec' then average end) Physical_Write_Total_Bps,
sum(case metric_name when 'Physical Read Total IO Requests Per Sec' then average end) Physical_Read_IOPS,
sum(case metric_name when 'Physical Write Total IO Requests Per Sec' then average end) Physical_write_IOPS,
snap_id
from dba_hist_sysmetric_summary group by snap_id
order by snap_id;

Exemplo relatório AWR:

physical read total IO requests   =  1,257.23
physical write total IO requests  =  1,746.11
physical read total bytes         =  76,314,718.10
physical write total bytes        =  85,321,521.11

Com os dados acima do AWR reportado, temos: ~ 3003 IOPS e ~ 155 Mbytes/s

Esse método é interessante ser utilizado após mudança de equipamentos/aplicação ou até mesmo identificar gargalos do ambiente e resing necessários de Hardware. Com isso em mãos fica mais fácil dialogar sobre esses temas.

Com o Oracle 11g é possível obter dados de IOPS e throughput através do Oracle Calibrate (DBMS_RESOURCE_MANAGER.CALIBRATE_IO) que é utilizado para identificar até onde o meu Hardware pode chegar, assim o Oracle acaba utilizando esse método para várias operações internas, como por exemplo o AUTO DOP. Aqui o contexto é um pouco diferente, através das métricas de IOPS e throughput identificados pelo AWR, eu consigo além de definir por tempo, posso alcançar a métrica onde minha aplicação ou hardware está mais consumindo de I/O.

Considerações finais:

- Para ambientes RAC, você deve agregar os valores de IOPS e MBytes/s para todas as instâncias do RAC. Assim o IOPS e MBbytes no ambiente cluster será a soma de todos os valores de cada node.

- Utilize o AWR em cima dos horários de maior utilização do ambiente.

- Nunca utilize relatórios AWR mais do que 1 hora. É comum encontramos relatórios AWR das 09 as 18 horas por exemplo, isso pode mascarar o real problema do seu banco de dados. Utilize tempos curtos de 1 hora baseado nos picos de maior cargas no banco de dados.

- Para alcançar IOPS e Throughput desejado, não apenas discos pode ser a razão e sim uma série de fatores agrupados, como o próprio banco de dados, o block device manager, multipathing driver, SCSI driver, HBA, System Bus, Switch/iSCSI, Storage Array, Disks, RAID e etc .. por isso é importante avaliar cada quesito em particular quando se fala em performance de I/O.

AWR Formatter
agosto 4, 2011

Olá Pessoal

Já tenho utilizado a algum tempo é muito bom, principalmente para quem tem iniciado agora na analise de relatórios AWR.

Com o AWR Formatter você transforma aquele “HTML”zão  cheios de números em um formato muito mais legível, simples e de fácil entendimento, tem até comentários do próprio Tyler Muth no seu AWR, tenho aprendido muito … vale a pena.

O AWR Formatter é uma extensão (plugin) do chrome, com apenas 1 clique você instala com 2 você configura e  pronto! Já pode utilizar … Até o Tom Kyte (dispensa apresentação) já confessou que usa o AWR Formatter http://tkyte.blogspot.com/2011/04/two-things.html

 

Veja no próprio site do Tyler como instalar e configurar:
http://tylermuth.wordpress.com/2011/04/20/awr-formatter/

Gerar AWR linha comando
maio 10, 2011

O relatório AWR é muito para verificar waits, consultas entre outras de um determinado período. Existe uma maneira muito rápida de gerar relatório AWR através do SQL PLUS.

[oracle@oel510gfs ~]$  sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Wed Mar 9 12:57:45 2011

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

Conectado a:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options

SQL> @?/rdbms/admin/awrrpt.sql

Current Instance
~~~~~~~~~~~~~~~~

DB Id        DB Name      Inst Num  Instance
----------- ------------ -------- ------------
560958117     ORCL        1         orcl

Specify the Report Type
~~~~~~~~~~~~~~~~~~~~~~~
Would you like an HTML report, or a plain text report?
Enter 'html' for an HTML report, or 'text' for plain text
Defaults to 'html'
Informe o valor para report_type: [ Pressione Enter, para gerar no padrão HTML ]

Type Specified:  html

Instances in this Workload Repository schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

DB Id         Inst Num    DB Name   Instance    Host
------------ -------- ------------ ------------ ------------
* 560958117     1        ORCL       orcl         oel510gfs.localdomain

Using  560958117 for database Id

Using          1 for instance number

Specify the number of days of snapshots to choose from
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Entering the number of days (n) will result in the most recent
(n) days of snapshots being listed.  Pressing  without
specifying a number lists all completed snapshots.

Informe o valor para num_days: 2 

Listing the last 2 days of Completed Snapshots

Snap
Instance      DB Name      Snap Id    Snap Started      Level
------------ ------------ --------- ------------------ -----
vsteste       VSTESTE       5101 08 Mar 2011 00:00   1
5102      08 Mar 2011 01:00   1
5103      08 Mar 2011 02:00   1
5104      08 Mar 2011 03:00   1
5105      08 Mar 2011 04:00   1
5106      08 Mar 2011 05:00   1
5107      08 Mar 2011 06:00   1
5108      08 Mar 2011 07:00   1
5109      08 Mar 2011 08:00   1
5110      08 Mar 2011 09:00   1
5111      08 Mar 2011 10:00   1
5112      08 Mar 2011 11:00   1
5113      08 Mar 2011 12:00   1
5114      08 Mar 2011 13:00   1
5115      08 Mar 2011 14:00   1
5116      08 Mar 2011 15:00   1
5117      08 Mar 2011 16:00   1
5118      08 Mar 2011 17:00   1
5119      08 Mar 2011 18:00   1
5120      08 Mar 2011 19:00   1
5121      08 Mar 2011 20:00   1
5122      08 Mar 2011 21:00   1
5123      08 Mar 2011 22:00   1
5124      08 Mar 2011 23:00   1
5125      09 Mar 2011 00:00   1
5126      09 Mar 2011 01:00   1
5127      09 Mar 2011 02:00   1
5128      09 Mar 2011 03:00   1
5129      09 Mar 2011 04:00   1
5130      09 Mar 2011 05:00   1
5131      09 Mar 2011 06:00   1
5132      09 Mar 2011 07:00   1
5133      09 Mar 2011 08:00   1
5134      09 Mar 2011 09:00   1
5135      09 Mar 2011 10:00   1
5136      09 Mar 2011 11:00   1
5137 09 Mar 2011 12:00   1

Specify the Begin and End Snapshot Ids
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Informe o valor para begin_snap: 5101
Begin Snapshot Id specified: 5101

Informe o valor para end_snap: 5137
End   Snapshot Id specified: 5137

Specify the Report Name
~~~~~~~~~~~~~~~~~~~~~~~
The default report file name is awrrpt_1_5101_5137.html.  To use this name,
press  to continue, otherwise enter an alternative.

Informe o valor para report_name: /oracle/temp/awrrpt_09032011.html

Using the report name /oracle/temp/awrrpt_09032011.html

...

Report written to /oracle/temp/awrrpt_09032011.html

SQL>

 

Erro ao gerar AWR
maio 10, 2011

Quando tentar obter um AWR e seguinte mensagem for mostrada:

WARNING (-20023)
ORA-20023: Missing start and end values for time model stat: parse time elapsed

WARNING (-20016)
ORA-20016: Missing value for SGASTAT: free memory

WARNING (-20009)
ORA-20009: Missing System Statistic logons current

Isso pode ser resolvido de duas formas:

Tentar alterar o parâmetro control_management_pack_access para DIAGNOSTIC+TUNING

SQL> show parameter control_management_pack_access

NAME                                     TYPE          VALUE
------------------------------------ ----------- ------------------------------
control_management_pack_access       string

SQL> alter system set control_management_pack_access='DIAGNOSTIC+TUNING';

Sistema alterado.

Espere um ou dois dias e execute novamente o AWR. Se o problema persistir o seu banco pode estar com problema e de acordo com o nota do metalink 1181573.1 será necessário aplicar o Patch 7532789.