Preparando o Oracle Database para o Exadata Machine Utilizando o Exadata Simulation (Parte I)

Por Flávio Soares (OCE) e Joel Pérez Oracle ACE Director
Postado em Julho 2016

Revisado por Marcelo Pivovar - Solution Architect

É possível estimar os benefícios do Exadata, sem estar no Exadata?

O Exadata conta com uma série de recursos (físicos e lógicos) que fazem com que a máquina trabalhe com notável desempenho, capacidade e mestria, executando atividades de maneira como nenhuma outra existente hoje no mercado para banco de dados.

O próprio Infiniband, que é um padrão de comunicação interconnect (db nodes e storage cells) que desempenha um excelente throughput de dados entre os servidores. Podemos listar outras features como o Smart Scan, Smart Flash, Storage Index, Column Projection, Offloading De Dados e Predicate Filtering, todas elas mudam completamente a forma como uma instrução é tratada no Exadata.

A abordagem ideal em uma migração não-Exadata para Exadata, seria trabalhar em um cenário real: executar todas as cargas e processos do seu database no próprio hardware Exadata e comparar os resultados obtidos. Infelizmente, nem todos tem o privilégio de ter uma máquina dessas encostada no DataCenter, só para realizar esse tipo de teste. Muita das vezes, o esforço, tempo, planejamento e principalmente o investimento para se obter um teste desse, acaba não sendo justificado.

Pensando em tudo isso, a Oracle a partir do Oracle Database 11g Release 2, adicionou no SQL Performance Analyzers (SPA) a possibilidade de processar sua carga de trabalho real em um “simulador do storage cell”.

A ideia basicamente consiste em coletar a sua carga de trabalho e deixar armazenado em um SQL Tuning Set (SQLTSET). O SPA então executa o SQLTSET duas vezes, a primeira execução é processada normalmente sem nenhum alteração no banco de dados, já a segunda ele ativa o modo “cell storage simulation” e registra as informações obtidas. Após as duas execuções, o SPA avalia a mudança de comportamento através da coluna io_interconnect_bytes (v$SQL), apresentando no final um relatório com a comparação das duas execuções.

Com esse tipo de relatório em mãos, fica fácil de responder algumas perguntas como:

  • Como será o desempenho do Exadata com a minha carga de trabalho atual?
  • Será que o Exadata, é a máquina certa para o meu ambiente?
  • Os ganhos da performance do Exadata serão grandes o bastante para justificar o custo dessa máquina?

O Exadata simulation tem a capacidade de suportar apenas cargas de trabalhos de DW e DSS. O segredo do molho do Exadata nos ambientes OLTP é o acesso ao Smart Flash Cache. Como o Exadata Simulation não consegue calcular/reproduzir os acessos de blocos via Flash, torna a sua utilização nesse caso para cargas OLTP inviável de ser testado e não costumam apresentar grande mudanças de comportamento. Já cargas do estilo DW/DSS, que contém um alto número de acessos, grande retorno de linhas e um elevados full scans nas tabelas/indexes, torna o melhor candidato para ser reproduzido no Exadata Simulation.

Capturando os dados

É possível capturar os dados para o SQLSET, de duas formas:

1) Snapshot do AWR.
Nesse caso, você captura os dados de uma carga que aconteceu no passado via snapshot do AWR:

sys@sl01$1 SQL> COLUMN snaphist_begin_time      HEADING BEGIN_TIME    FORMAT a28 
sys@sl01$1 SQL> COLUMN snaphist_end_time        HEADING END_TIME      FORMAT a28 
sys@sl01$1 SQL> COLUMN snaphist_snap_id         HEADING SNAP_ID       FORMAT 999999
sys@sl01$1 SQL> COLUMN snaphist_dbid            HEADING DBID          FORMAT 99999999999
sys@sl01$1 SQL> COLUMN snaphist_inst_id         HEADING INST_ID       FORMAT 999999
sys@sl01$1 SQL> SELECT DISTINCT
2    dbid snaphist_dbid,
3    snap_id snaphist_snap_id, 
4    TO_CHAR(begin_interval_time, 'DD/MM/YYYY  HH24:MI') snaphist_begin_time,
5    TO_CHAR(end_interval_time, 'DD/MM/YYYY  HH24:MI') snaphist_end_time,
6    error_count
7    FROM dba_hist_snapshot
8    WHERE end_interval_time 
9    BETWEEN TO_TIMESTAMP('18-06-2016 00:00:00',  'DD-MM-YYYY HH24:MI:SS') 
AND TO_TIMESTAMP('20-06-2016 23:59:59', 'DD-MM-YYYY  HH24:MI:SS')
10    ORDER BY snaphist_dbid, snaphist_snap_id,  2;

DBID                  SNAP_ID  BEGIN_TIME                  END_TIME                      ERROR_COUNT
------------------- ---------  --------------------------  ---------------------------- ------------
3642494801              19504  18/06/2016 00:00             18/06/2016 00:15                       0
                        19505  18/06/2016 00:15             18/06/2016 00:30                       0
			19506  18/06/2016 00:30             18/06/2016 00:45                       0
			19507  18/06/2016 00:45             18/06/2016 01:00                       0
			19508  18/06/2016 01:00             18/06/2016 01:15                       0
			19509  18/06/2016 01:15             18/06/2016 01:30                       0
			19510  18/06/2016 01:30             18/06/2016 01:45                       0
			19511  18/06/2016 01:45             18/06/2016 02:00                       0
			19512  18/06/2016 02:00             18/06/2016 02:15                       0
			19513  18/06/2016 02:15             18/06/2016 02:30                       0
			19514  18/06/2016 02:30             18/06/2016 02:45                       0
			19515  18/06/2016 02:45             18/06/2016 03:00                       0
			19516  18/06/2016 03:00             18/06/2016 03:15                       0
			19517  18/06/2016 03:15             18/06/2016 03:30                       0
			19518  18/06/2016 03:30             18/06/2016 03:45                       0
			19519  18/06/2016 03:45             18/06/2016 04:00                       0
			19520  18/06/2016 04:00             18/06/2016 04:15                       0
			19521  18/06/2016 04:15             18/06/2016 04:30                       0
			19522  18/06/2016 04:30             18/06/2016 04:45                       0
			19523  18/06/2016 04:45             18/06/2016 05:00                       0
			19524  18/06/2016 05:00             18/06/2016 05:15                       0
			19525  18/06/2016 05:15             18/06/2016 05:30                       0
			19526  18/06/2016 05:30             18/06/2016 05:45                       0
			19527  18/06/2016 05:45             18/06/2016 06:00                       0
			19528  18/06/2016 06:00             18/06/2016 06:15                       0
			19529  18/06/2016 06:15             18/06/2016 06:31                       0
			19530  18/06/2016 06:31             18/06/2016 06:45                       0
			19531  18/06/2016 06:45             18/06/2016 07:00                       0
			19532  18/06/2016 07:00             18/06/2016 07:15                       0
			19533  18/06/2016 07:15             18/06/2016 07:30                       0
			19534  18/06/2016 07:30             18/06/2016 07:45                       0
			19535  18/06/2016 07:45             18/06/2016 08:00                       0
			19536  18/06/2016 08:00             18/06/2016 08:15                       0
			19537  18/06/2016 08:15             18/06/2016 08:30                       0
			19538  18/06/2016 08:30             18/06/2016 08:45                       0
			19539  18/06/2016 08:45             18/06/2016 09:00                       0
			19540  18/06/2016 09:00             18/06/2016 09:15                       0
			19541  18/06/2016 09:15             18/06/2016 09:30                       0
			19542  18/06/2016 09:30             18/06/2016 09:45                       0
			19543  18/06/2016 09:45             18/06/2016 10:00                       0
			19544  18/06/2016 10:00             18/06/2016 10:15                       0
			19545  18/06/2016 10:15             18/06/2016 10:30                       0
			19546  18/06/2016 10:30             18/06/2016 10:45                       0
			19547  18/06/2016 10:45             18/06/2016 11:00                       0
			19548  18/06/2016 11:00             18/06/2016 11:15                       0
			19549  18/06/2016 11:15             18/06/2016 11:30                       0
			19550  18/06/2016 11:30             18/06/2016 11:45                       0
			19551  18/06/2016 11:45             18/06/2016 12:00                       0
			19552  18/06/2016 12:00             18/06/2016 12:15                       0
			19553  18/06/2016 12:15             18/06/2016 12:30                       0
			19554  18/06/2016 12:30             18/06/2016 12:45                       0
			19555  18/06/2016 12:45             18/06/2016 13:00                       0
			19556  18/06/2016 13:00             18/06/2016 13:15                       0
			19557  18/06/2016 13:15             18/06/2016 13:30                       0
			19558  18/06/2016 13:30             18/06/2016 13:45                       0
			19559  18/06/2016 13:45             18/06/2016 14:00                       0
			19560  18/06/2016 14:00             18/06/2016 14:15                       0
			19561  18/06/2016 14:15             18/06/2016 14:30                       0
			19562  18/06/2016 14:30             18/06/2016 14:45                       0
			19563  18/06/2016 14:45             18/06/2016 15:00                       0
			19564  18/06/2016 15:00             18/06/2016 15:15                       0
			19565  18/06/2016 15:15             18/06/2016 15:30                       0
			19566  18/06/2016 15:30             18/06/2016 15:45                       0
			19567  18/06/2016 15:45             18/06/2016 16:00                       0
			19568  18/06/2016 16:00             18/06/2016 16:15                       0
			19569  18/06/2016 16:15             18/06/2016 16:30                       0
			19570  18/06/2016 16:30             18/06/2016 16:45                       0
			19571  18/06/2016 16:45             18/06/2016 17:00                       0
			19572  18/06/2016 17:00             18/06/2016 17:15                       0
			19573  18/06/2016 17:15             18/06/2016 17:30                       0
			19574  18/06/2016 17:30             18/06/2016 17:45                       0
			19575  18/06/2016 17:45             18/06/2016 18:00                       0
			19576  18/06/2016 18:00             18/06/2016 18:15                       0
			19577  18/06/2016 18:15             18/06/2016 18:30                       0
			19578  18/06/2016 18:30             18/06/2016 18:45                       0
			19579  18/06/2016 18:45             18/06/2016 19:00                       0
			19580  18/06/2016 19:00             18/06/2016 19:15                       0
			19581  18/06/2016 19:15             18/06/2016 19:30                       0
			19582  18/06/2016 19:30             18/06/2016 19:45                       0
			19583  18/06/2016 19:45             18/06/2016 20:00                       0
			19584  18/06/2016 20:00             18/06/2016 20:15                       0
			19585  18/06/2016 20:15             18/06/2016 20:30                       0
			19586  18/06/2016 20:30             18/06/2016 20:45                       0
			19587  18/06/2016 20:45             18/06/2016 21:00                       0
			19588  18/06/2016 21:00             18/06/2016 21:15                       0
			19589  18/06/2016 21:15             18/06/2016 21:30                       0
			19590  18/06/2016 21:30             18/06/2016 21:45                       0
			19591  18/06/2016 21:45             18/06/2016 22:00                       0
			19592  18/06/2016 22:00             18/06/2016 22:15                       0
			19593  18/06/2016 22:15             18/06/2016 22:30                       0
			19594  18/06/2016 22:30             18/06/2016 22:45                       0
			19595  18/06/2016 22:45             18/06/2016 23:00                       0
			19596  18/06/2016 23:00             18/06/2016 23:15                       0
			19597  18/06/2016 23:15             18/06/2016 23:30                       0
			19598  18/06/2016 23:30             18/06/2016 23:45                       0
			19599  18/06/2016 23:45             19/06/2016 00:00                       0
			19600  19/06/2016 00:00             19/06/2016 00:15                       0
			19601  19/06/2016 00:15             19/06/2016 00:30                       0
			19602  19/06/2016 00:30             19/06/2016 00:45                       0
			19603  19/06/2016 00:45             19/06/2016 01:00                       0
			19604  19/06/2016 01:00             19/06/2016 01:15                       0
			19605  19/06/2016 01:15             19/06/2016 01:30                       0
			19606  19/06/2016 01:30             19/06/2016 01:45                       0
			19607  19/06/2016 01:45             19/06/2016 02:00                       0
			19608  19/06/2016 02:00             19/06/2016 02:15                       0
			19609  19/06/2016 02:15             19/06/2016 02:30                       0
			19610  19/06/2016 02:30             19/06/2016 02:45                       0
			19611  19/06/2016 02:45             19/06/2016 03:00                       0
			19612  19/06/2016 03:00             19/06/2016 03:15                       0
			19613  19/06/2016 03:15             19/06/2016 03:30                       0
			19614  19/06/2016 03:30             19/06/2016 03:45                       0
			19615  19/06/2016 03:45             19/06/2016 04:00                       0
			19616  19/06/2016 04:00             19/06/2016 04:15                       0
			19617  19/06/2016 04:15             19/06/2016 04:30                       0
			19618  19/06/2016 04:30             19/06/2016 04:45                       0
			19619  19/06/2016 04:45             19/06/2016 05:00                       0
			19620  19/06/2016 05:00             19/06/2016 05:15                       0
			19621  19/06/2016 05:15             19/06/2016 05:30                       0
			19622  19/06/2016 05:30             19/06/2016 05:45                       0
			19623  19/06/2016 05:45             19/06/2016 06:00                       0
			19624  19/06/2016 06:00             19/06/2016 06:15                       0
			19625  19/06/2016 06:15             19/06/2016 06:30                       0
			19626  19/06/2016 06:30             19/06/2016 06:45                       0
			19627  19/06/2016 06:45             19/06/2016 07:00                       0
			19628  19/06/2016 07:00             19/06/2016 07:15                       0
			19629  19/06/2016 07:15             19/06/2016 07:30                       0
			19630  19/06/2016 07:30             19/06/2016 07:45                       0
			19631  19/06/2016 07:45             19/06/2016 08:00                       0
			19632  19/06/2016 08:00             19/06/2016 08:15                       0
			19633  19/06/2016 08:15             19/06/2016 08:30                       0
			19634  19/06/2016 08:30             19/06/2016 08:45                       0
			19635  19/06/2016 08:45             19/06/2016 09:00                       0
			19636  19/06/2016 09:00             19/06/2016 09:15                       0
			19637  19/06/2016 09:15             19/06/2016 09:30                       0
			19638  19/06/2016 09:30             19/06/2016 09:45                       0
			19639  19/06/2016 09:45             19/06/2016 10:00                       0
			19640  19/06/2016 10:00             19/06/2016 10:15                       0
			19641  19/06/2016 10:15             19/06/2016 10:30                       0
			19642  19/06/2016 10:30             19/06/2016 10:45                       0
			19643  19/06/2016 10:45             19/06/2016 11:00                       0
			19644  19/06/2016 11:00             19/06/2016 11:15                       0
			19645  19/06/2016 11:15             19/06/2016 11:30                       0
			19646  19/06/2016 11:30             19/06/2016 11:45                       0
			19647  19/06/2016 11:45             19/06/2016 12:00                       0
			19648  19/06/2016 12:00             19/06/2016 12:15                       0
			19649  19/06/2016 12:15             19/06/2016 12:30                       0
			19650  19/06/2016 12:30             19/06/2016 12:45                       0
			19651  19/06/2016 12:45             19/06/2016 13:00                       0
			19652  19/06/2016 13:00             19/06/2016 13:15                       0
			19653  19/06/2016 13:15             19/06/2016 13:30                       0
			19654  19/06/2016 13:30             19/06/2016 13:45                       0
			19655  19/06/2016 13:45             19/06/2016 14:00                       0
			19656  19/06/2016 14:00             19/06/2016 14:15                       0
			19657  19/06/2016 14:15             19/06/2016 14:30                       0
			19658  19/06/2016 14:30             19/06/2016 14:45                       0
			19659  19/06/2016 14:45             19/06/2016 15:00                       0
			19660  19/06/2016 15:00             19/06/2016 15:15                       0
			19661  19/06/2016 15:15             19/06/2016 15:30                       0
			19662  19/06/2016 15:30             19/06/2016 15:45                       0
			19663  19/06/2016 15:45             19/06/2016 16:00                       0
			19664  19/06/2016 16:00             19/06/2016 16:15                       0
			19665  19/06/2016 16:15             19/06/2016 16:30                       0
			19666  19/06/2016 16:30             19/06/2016 16:45                       0
			19667  19/06/2016 16:45             19/06/2016 17:00                       0
			19668  19/06/2016 17:00             19/06/2016 17:15                       0
			19669  19/06/2016 17:15             19/06/2016 17:30                       0
			19670  19/06/2016 17:30             19/06/2016 17:45                       0
			19671  19/06/2016 17:45             19/06/2016 18:00                       0
			19672  19/06/2016 18:00             19/06/2016 18:15                       0
			19673  19/06/2016 18:15             19/06/2016 18:30                       0
			19674  19/06/2016 18:30             19/06/2016 18:45                       0
			19675  19/06/2016 18:45             19/06/2016 19:00                       0
			19676  19/06/2016 19:00             19/06/2016 19:15                       0
			19677  19/06/2016 19:15             19/06/2016 19:30                       0
			19678  19/06/2016 19:30             19/06/2016 19:45                       0
			19679  19/06/2016 19:45             19/06/2016 20:00                       0
			19680  19/06/2016 20:00             19/06/2016 20:15                       0
			19681  19/06/2016 20:15             19/06/2016 20:30                       0
			19682  19/06/2016 20:30             19/06/2016 20:45                       0
			19683  19/06/2016 20:45             19/06/2016 21:00                       0
			19684  19/06/2016 21:00             19/06/2016 21:15                       0
			19685  19/06/2016 21:15             19/06/2016 21:30                       0
			19686  19/06/2016 21:30             19/06/2016 21:45                       0
			19687  19/06/2016 21:45             19/06/2016 22:00                       0
			19688  19/06/2016 22:00             19/06/2016 22:15                       0
			19689  19/06/2016 22:15             19/06/2016 22:30                       0
			19690  19/06/2016 22:30             19/06/2016 22:45                       0
			19691  19/06/2016 22:45             19/06/2016 23:00                       0
			19692  19/06/2016 23:00             19/06/2016 23:15                       0
			19693  19/06/2016 23:15             19/06/2016 23:30                       0
			19694  19/06/2016 23:30             19/06/2016 23:45                       0
			19695  19/06/2016 23:45             20/06/2016 00:00                       0
			19696  20/06/2016 00:00             20/06/2016 00:15                       0
			19697  20/06/2016 00:15             20/06/2016 00:30                       0
			19698  20/06/2016 00:30             20/06/2016 00:45                       0
			19699  20/06/2016 00:45             20/06/2016 01:00                       0
			19700  20/06/2016 01:00             20/06/2016 01:15                       0
			19701  20/06/2016 01:15             20/06/2016 01:30                       0
			19702  20/06/2016 01:30             20/06/2016 01:45                       0
			19703  20/06/2016 01:45             20/06/2016 02:00                       0
			19704  20/06/2016 02:00             20/06/2016 02:15                       0
			19705  20/06/2016 02:15             20/06/2016 02:30                       0
			19706  20/06/2016 02:30             20/06/2016 02:45                       0
			19707  20/06/2016 02:45             20/06/2016 03:00                       0
			19708  20/06/2016 03:00             20/06/2016 03:15                       0
			19709  20/06/2016 03:15             20/06/2016 03:30                       0
			19710  20/06/2016 03:30             20/06/2016 03:45                       0
			19711  20/06/2016 03:45             20/06/2016 04:00                       0
			19712  20/06/2016 04:00             20/06/2016 04:15                       0
			19713  20/06/2016 04:15             20/06/2016 04:30                       0
			19714  20/06/2016 04:30             20/06/2016 04:45                       0
			19715  20/06/2016 04:45             20/06/2016 05:00                       0
			19716  20/06/2016 05:00             20/06/2016 05:15                       0
			19717  20/06/2016 05:15             20/06/2016 05:30                       0
			19718  20/06/2016 05:30             20/06/2016 05:45                       0
			19719  20/06/2016 05:45             20/06/2016 06:00                       0
			19720  20/06/2016 06:00             20/06/2016 06:15                       0
			19721  20/06/2016 06:15             20/06/2016 06:30                       0
			19722  20/06/2016 06:30             20/06/2016 06:45                       0
			19723  20/06/2016 06:45             20/06/2016 07:00                       0
			19724  20/06/2016 07:00             20/06/2016 07:15                       0
			19725  20/06/2016 07:15             20/06/2016 07:30                       0
			19726  20/06/2016 07:30             20/06/2016 07:45                       0
			19727  20/06/2016 07:45             20/06/2016 08:00                       0
			19728  20/06/2016 08:00             20/06/2016 08:15                       0
			19729  20/06/2016 08:15             20/06/2016 08:30                       0
			19730  20/06/2016 08:30             20/06/2016 08:45                       0
			19731  20/06/2016 08:45             20/06/2016 09:00                       0
			19732  20/06/2016 09:00             20/06/2016 09:15                       0
			19733  20/06/2016 09:15             20/06/2016 09:30                       0
			19734  20/06/2016 09:30             20/06/2016 09:45                       0
			19735  20/06/2016 09:45             20/06/2016 10:00                       0
			19736  20/06/2016 10:00             20/06/2016 10:15                       0
			19737  20/06/2016 10:15             20/06/2016 10:30                       0
			19738  20/06/2016 10:30             20/06/2016 10:45                       0
			19739  20/06/2016 10:45             20/06/2016 11:00                       0
			19740  20/06/2016 11:00             20/06/2016 11:15                       0
			19741  20/06/2016 11:15             20/06/2016 11:30                       0
			19742  20/06/2016 11:30             20/06/2016 11:45                       0
			19743  20/06/2016 11:45             20/06/2016 12:00                       0
			19744  20/06/2016 12:00             20/06/2016 12:15                       0
			19745  20/06/2016 12:15             20/06/2016 12:30                       0
			19746  20/06/2016 12:30             20/06/2016 12:45                       0
			19747  20/06/2016 12:45             20/06/2016 13:00                       0
			19748  20/06/2016 13:00             20/06/2016 13:15                       0
			19749  20/06/2016 13:15             20/06/2016 13:30                       0
			19750  20/06/2016 13:30             20/06/2016 13:45                       0
			19751  20/06/2016 13:45             20/06/2016 14:00                       0
			19752  20/06/2016 14:00             20/06/2016 14:15                       0
			19753  20/06/2016 14:15             20/06/2016 14:30                       0
			19754  20/06/2016 14:30             20/06/2016 14:45                       0
			19755  20/06/2016 14:45             20/06/2016 15:00                       0
			19756  20/06/2016 15:00             20/06/2016 15:15                       0
			19757  20/06/2016 15:15             20/06/2016 15:30                       0
			19758  20/06/2016 15:30             20/06/2016 15:45                       0
			19759  20/06/2016 15:45             20/06/2016 16:00                       0
			19760  20/06/2016 16:00             20/06/2016 16:15                       0
			19761  20/06/2016 16:15             20/06/2016 16:30                       0
			19762  20/06/2016 16:30             20/06/2016 16:45                       0
			19763  20/06/2016 16:45             20/06/2016 17:00                       0
			19764  20/06/2016 17:00             20/06/2016 17:15                       0
			19765  20/06/2016 17:15             20/06/2016 17:30                       0
			19766  20/06/2016 17:30             20/06/2016 17:45                       0
			19767  20/06/2016 17:45             20/06/2016 18:00                       0
			19768  20/06/2016 18:00             20/06/2016 18:15                       0
			19769  20/06/2016 18:15             20/06/2016 18:30                       0
			19770  20/06/2016 18:30             20/06/2016 18:45                       0
			19771  20/06/2016 18:45             20/06/2016 19:00                       0
			19772  20/06/2016 19:00             20/06/2016 19:15                       0
			19773  20/06/2016 19:15             20/06/2016 19:30                       0
			19774  20/06/2016 19:30             20/06/2016 19:45                       0
			19775  20/06/2016 19:45             20/06/2016 20:00                       0
			19776  20/06/2016 20:00             20/06/2016 20:15                       0
			19777  20/06/2016 20:15             20/06/2016 20:30                       0
			19778  20/06/2016 20:30             20/06/2016 20:45                       0
			19779  20/06/2016 20:45             20/06/2016 21:00                       0
			19780  20/06/2016 21:00             20/06/2016 21:15                       0
			19781  20/06/2016 21:15             20/06/2016 21:30                       0
			19782  20/06/2016 21:30             20/06/2016 21:45                       0
			19783  20/06/2016 21:45             20/06/2016 22:00                       0
			19784  20/06/2016 22:00             20/06/2016 22:15                       0
			19785  20/06/2016 22:15             20/06/2016 22:30                       0
			19786  20/06/2016 22:30             20/06/2016 22:45                       0
			19787  20/06/2016 22:45             20/06/2016 23:00                       0
			19788  20/06/2016 23:00             20/06/2016 23:15                       0
			19789  20/06/2016 23:15             20/06/2016 23:30                       0
			19790  20/06/2016 23:30             20/06/2016 23:45                       0
288 rows selected.
sys@sl01$1 SQL>

 

Veja que estou solicitando todos os snapshots entre os dias 18 e 20. A partir disso, iniciamos a captura do workload desse intervalo de tempo.

sys@sl01$1 SQL> exec DBMS_SQLTUNE.CREATE_SQLSET('EXA_SQLSET01');
PL/SQL procedure successfully completed.
sys@sl01$1 SQL> DECLARE
2    baseline_ref_cursor  DBMS_SQLTUNE.SQLSET_CURSOR;
3    BEGIN
4       OPEN baseline_ref_cursor FOR
5     select VALUE(p) from  
TABLE(DBMS_SQLTUNE.SELECT_WORKLOAD_REPOSITORY(19504, 19790, NULL, NULL, NULL,  NULL, NULL, NULL, NULL, 'ALL')) p;
6  
7       DBMS_SQLTUNE.LOAD_SQLSET('EXA_SQLSET01',  baseline_ref_cursor);
8     END;
9    /
PL/SQL procedure successfully completed.

 

Temos agora, o nosso SQLSET criado a partir dos snapshots 19504 e 19790.

Conferindo…

sys@sl01$1 SQL> select id, name, owner, created, last_modified, statement_count 
                from DBA_SQLSET ORDER BY id, created;

      ID NAME                     OWNER                   CREATED             LAST_MODIFIED       STATEMENT_COUNT
-------- ------------------------ ----------------------- ------------------- ------------------- ---------------
       3 EXA_SQLSET01             SYS                     21/06/2016 07:36:37 21/06/2016 07:40:12             475

 

2) Carga de trabalho atual – Cursor Cache

Outra maneira de capturar o workload do seu database é através do cursor de dados. Nesse método nada mais é do que ativar um tempo estimado e deixar capturando as cargas em tempo real que está acontecendo no momento.

No exemplo abaixo, decidimos capturar o nosso SQL Tuning set baseado no workload de 2 horas do nosso database.

sys@sl01$1 SQL> BEGIN
2        DBMS_SQLTUNE.CREATE_SQLSET(sqlset_name=>'EXA_SQLSET02');
3  END;
4  /
PL/SQL procedure successfully completed.

sys@sl01$1 SQL> BEGIN
2         DBMS_SQLTUNE.CAPTURE_CURSOR_CACHE_SQLSET (
3          sqlset_name     => 'EXA_SQLSET02',
4          time_limit      => 7200,
5          repeat_interval => 10
6  ); END;
7  /
PL/SQL procedure successfully completed.

 

Executando o Exadata Simulation – tcellsim.sql

Uma vez que o SQLSET está criado, o próximo passo é executar o Exadata Simulation através do script tcellsim.sql

O script tcellsim.sql fica localizado no $ORACLE_HOME/rdbms/admin do binário do Oracle.

Veja abaixo a execução:

sys@sl01$1 SQL> @?/rdbms/admin/tcellsim

10 Most active SQL tuning sets
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

NAME                OWNER             SQL_COUNT  DESCP
------------------- ----------------- ---------- --------------------
EXA_SQLSET02        SYS               1598
 
Specify the name and owner of SQL tuning set to use
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Enter value for sts_name: EXA_SQLSET02
Enter value for sts_owner: SYS
 
>> SQL tuning set specified: EXA_SQLSET02 owned by SYS
 
Run Cell simulation
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> 1. create a spa analysis task to test cell simulation
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> Name of SPA analysis task: TASK_484
>> 2. Test execute statements with cell simulatin DISABLED
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> 3. Test execute statements with cell simulation ENABLED
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> 4. Compare peformance and generate analysis report
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

General Information
---------------------------------------------------------------------------------------------

Task Information:        Workload Information:
---------------------------------------------  ---------------------------------------------
Task Name    : TASK_484         SQL Tuning Set Name        : EXA_SQLSET02
Task Owner   : SYS              SQL Tuning Set Owner       : SYS
Description  :                  Total SQL Statement  Count  : 1598

Execution Information:
---------------------------------------------------------------------------------------------
Execution Name             : EXEC_462                  Started             : 06/21/2016 18:44:27
Execution Type             : COMPARE PERFORMANCE       Last Updated        : 06/21/2016 20:44:27
Description                :                           Global Time  Limit   : UNLIMITED
Scope                      : COMPREHENSIVE             Per-SQL Time Limit  : UNUSED
Status                     : COMPLETED                 Number of Errors    : 3
Number of Unsupported  SQL  : 2

Analysis Information:
---------------------------------------------------------------------------------------------
Before Change  Execution:                        After  Change Execution:
---------------------------------------------    ---------------------------------------------
Execution Name      : cell_simulation_DISABLED   Execution Name      : cell_simulation_ENABLED
Execution Type      : TEST EXECUTE               Execution Type      : TEST EXECUTE
Scope               : COMPREHENSIVE              Scope               : COMPREHENSIVE
Status              : COMPLETED                  Status              : COMPLETED
Started             : 06/21/2016 21:33:00        Started             : 06/21/2016 21:38:45
Last Updated        : 06/21/2016 21:38:43        Last Updated        : 06/21/2016 21:44:25
Global Time Limit   : UNLIMITED                  Global Time Limit   : UNLIMITED
Per-SQL Time Limit  : UNUSED                     Per-SQL Time Limit  : UNUSED
Number of Errors    : 3                          Number of Errors    : 3
 
---------------------------------------------
Comparison Metric: IO_INTERCONNECT_BYTES
------------------
Workload Impact Threshold:  1%
--------------------------
SQL Impact Threshold: 1%
----------------------
 
Report Summary
---------------------------------------------------------------------------------------------
Projected Workload Change Impact:
-------------------------------------------
Overall Impact      :   6.06%
Improvement Impact  :   18.50%
Regression Impact   :   -4.01%

SQL Statement Count
-------------------------------------------
SQL Category  SQL Count   Plan Change Count
Overall          1598                    0
Improved          340                    0
Regressed           2                    0
Unchanged        1251                    0
with Errors         3                    0
Unsupported         2                    0

Top 10 SQL Sorted by Absolute Value of Change Impact on the  Workload
---------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------
|             |               | Impact on | Execution |  Metric     |   Metric     |   Impact |
| object_id   | sql_id        | Workload  | Frequency | Before     |    After     |   on SQL |
---------------------------------------------------------------------------------------------
| 12341       |  05quhx2czmaau |   7.41%   |        582 | 3987577734 |   93984294  |    97.64% |
| 98271       |  07n9yv8rac2qq |   4.22%   |         38 |   85698319 |    3989341   |   95.34% |
| 24183       |  09p5nmnfq5gwg |   2.19%   |         41 |        779 |          0   |     100% |
| 82348       |  0za8d11cxbpr2 |   -.09%   |       2317 |   53382262 |   59460726   |  -11.39% |
| 24210       |  00ajuu5902429 |  -3.22%   |      22122 |       3894 |          0   |     100% |
| 22349       |  10s3r3f17ccu3 |   -.02%   |        314 |    5505024 |     294712   |   94.70% |
| 18820       |  1gfaj4z5hn1kf |   -.02%   |    1234112 |   13153621 |      32768   |   99.75% |
-----------------------------------------------------------------------------------------
Note: time statistics are displayed in microseconds
---------------------------------------------------------------------------------------------

 

O Exadata Simulation executa o SQL Set duas vezes, assim como falamos e no final apresenta o report.

Várias consultas foram mensuradas pelo Exadata simulation com uma melhora significativa, como é o caso da consulta 05quhx2czmaau que apresentou uma melhoria de 97.64%. Outros sqlids como os 09p5nmnfq5gwg e 00ajuu5902429, o Exadata Simulation calcula uma melhora de 100%.

Como apresentamos acima, o Exadata Simulation é uma ótima ferramenta e de fácil acesso para avaliar o desempenho do seu banco de dados em um storage cell do Exadata (offloading de dados, rede infiniband, etc ..). É claro, que uma avaliação como essa não substituí um teste real em um HW Exadata com todas as features trabalhando em conjunto, mas é um ponto de partida para não trabalhar no escuro.


Flávio Soares é um Oracle DBA Sênior, Exadata DMA, Troubleshooter e Consultor Oracle, certificado em OCP/OCE RAC. Especialista em Exadata, alta disponibilidade e replicação de dados com soluções Oracle. Flávio disponibiliza frequentes informações para a comunidade Oracle através do seu blog http://flaviosoares.com/pt

Joel Pérez é um DBA (Oracle ACE Director, Maximum Availability OCM, OCM Cloud Admin. & OCM12c/11g) Especialista com mais de 16 anos de experiência real no mundo da tecnologia Oracle, especializada na concepção e implementação de soluções: Nuvem, alta disponibilidade, recuperação de desastres, Upgrades, replicação e toda a área relacionada com bancos de dados Oracle. Joel serve como "Chief Technologist & MAA, TEM Architect" para www.Enmotech.com Yunhe ENMO (Beijing) Technology Co. Ltd. Beijing, China. OCM Perfil Joel Perez: http://education.oracle.com/education/otn/JoelPerez.htm

Este artigo foi revisto pela equipe de produtos Oracle e está em conformidade com as normas e práticas para o uso de produtos Oracle.