Oracle Exadata Database Machine: "Write-Back Flash Cache"

Deiby Gómez Robles , Yenugula Venkata RaviKumar (OCM) e David Siqueira
Postado en março 2014

Desde o surgimento do "Oracle Exadata", em 2008, em sua primeira versão otimizada para "Data Warehousing", gradativamente foram adicionados novos recursos para aumentar sua capacidade de trabalho para banco de dados "data warehousing" (volumes elevados de consultas e dados) e OLTP (Volume de leituras e Escritas elevados) ou até   mesmo para o multipropósito.

Obter um ótimo desempenho sempre foi o principal objetivo da solução "Oracle Exadata", e isso se tornou possivel com os novos recusos que foram incorporados ao longo dos anos, tais como, "Smart Scan", "Smart Flash Cache","Smart Flash Log","Storage Indexes", entre outros. Um dos ultimos recursos adicionados para assegurar melhor performance do "Oracle Exadata" foi o "Flash Cache Write-Back", que veio para combinar o uso de hardware ( Flash Drives) e Software ( Exadata Storage Server Software).

Há duas caracteristicas que o software possui os “Storage Servers” que otimizam o "Hardware” do “Exadata” e fazem do “ExadataDatabase Machine” um sistema de implanatação rápida para bases de dados Oracle “Single” ou “RAC”

  1. “Exadata Smart Flash Cache”: Fornece a capacidade de armazenar objetos ativos dentro dos dispositivos de flash.
  2. “Exadata Smart Flash Log”: Aumenta as funções críticas de escritas feitas nos “Redo logs” para uma base de dados.

O uso de um banco de dados requer a realização de um compromisso com o desempenho na entrega das informações para que o software " Exadata Storage Servers" em conjunto com o banco de dados Oracle facilite o cumprimento deste compromisso, forneceram um novo recurso chamado "Flash Cache Write-Back".

“Write-Back Flash Cache” fornece a capacidade de executar operações de escrita diretamente nos dispositivos de “flash, sem perder a capacidade de realizar operações de  leitura também. Se uma aplicação com volume de escritas muito intenso começam a gerar eventos de “free buffer waits”, então  “Write-Back Flash Cache” é uma ótima opção para solucionar este tipo de contenção no ambiente.

Qualquer hardware "Exadata" da versão três (X3) pode tirar proveito deste recurso. Os  Exadatas Versão (X2)  também pode usar esse recurso desde que a versão do software que você está usando seja 11.2.3.2.1 ou superior.

A partir da versão 11.2.3.2.1, “FlashCache” é auto,aticamente ajustado para o uso de “Write-Through”.  O comando “ALTER CELL” é utilizado para trocar o modo para  “Write-Back”.

“Write-Back Flash Cache” melhora significativamente as operações que sofre de escrita intensa pelo fato de que a escrita em um dispositivo de "flash" é mais rápida do que escritas para discos rígidos. Dependendo da aplicação, nas máquinas X3-2 o desempenho de escritas pode ser melhorada em até 20 vezes as escritas para discos rígidos e em 10X com relação a gravações em disco nas máquinas X2-2.

O atributo de "flashCacheMode" dentro dos "Storage Servers" determinam o uso do recurso. Os valores possíveis para este parâmetro são:

  • WriteThrough
  • WriteBack

 

O comando “LIST CELL” mostra o valor atual do parametro.

Por Exemplo:

CELLCLI>  list  cell attributes flashcachemode
WriteBack

 CELLCLI>list cell detail



Características de Write-BackFlash Cache:

  • Flash Cache oferece melhor desempenho para leituras e escritas.
  • A Versão 11.2.3.2.1 do software nos Storage Servers é a versão minima  requerida que permite a escrita dentro do Flash Cache.
  • Isto significa que as escritas do primeiro banco de dados serão escritas em Flash Cache e banco de dados apenas retornará uma mensagem indicando o conhecimento dos dados e que estes são persistentes, mas que ainda não foram sincronizados com as unidades de disco rígido.
  • Inicialmente, quando uma operação de inserção (Insert Into) é realizada, um bloco é gravado no cache do Flash e rotulados imediatamente como "Dirty" para indicar que esta é a última cópia do bloco e eventualmente, sincronizar com os discos rígidos usando o algoritmo Last Recently Used (LRU). Se uma operação de modificação (Update) é usada, os  blocos que devem ser modificados não são colcoados em Flash Cache, então ele é lido a partir dos discos rígidos e colocados no  cache do Flash, e então atualizado e marcado como "Dirty". Se uma transação está solicitando um bloco, e este bloco esta em Flash Cache, lê-se a partir daí, reduzindo assim as latências de leituras. Um bloco localizado Flash Cache muito acessado pode chegar a ficar por anos em  Flash Cache , no entanto, se o bloco é acessado poucas vezes, será transferido para as unidades de disco rígido.

 

Beneficios do Write-Back Flash Cache:

  • Melhora o rendimento das operações de escritas que são realizadas intensamente, pois escreve em dispositivos de Flash que são muito mais rápidos que escrever em discos rigidos (100,000 IOPS vs 3,600 IOPS).
  • O rendimento das escritas em  Exadata X3-2 podem ser melhorados em até 20 vezes mais, em relação aos rendimentos das escritas realizadas em discos rígidos.
  • O rendimento das escritas em  Exadata X2-2 podem ser melhorados em até 10 vezes mais em relação as escritas realizadas em discos rígidos.
  • Write-Back Flash Cache aumenta as leituras e escritas de maneira transparente aos usuários para todas as cargas do tipo OLTP e DW.
  • Write-Back Flash Cache reduz a latência de escritas nos  Redo Logs quando os dispositivos de  Flash compartilham discos com dados relacionados ao negócio.
  • Se houver espera significativa para o evento de “free buffer waits” ou uma série de esperas, gargalos mencionadas dentro dos relatórios de AWR ( Automatic Workload Repositoty), neste caso é altamente recomendado o uso do Write-Back Flash Cache.

 

Como habilitar a caracteristica Write-Back Flash Cache?

Dois métodos estão disponiveis:

  1. Método escalonado
  2. Método não escalonado

Nota:  Antes de realizar os passos a seguir, realice as seguintes verificações com o usuário root apartir de um dos servidores de banco de dados:

Verifique todos os grid disks e assegure que os parametros"asmdeactivationoutcome" e "asmmodestatus" estejam com a opção "Yes" e "ONLINE" respectivamente:

# dcli -g cell_group -l root cellcli -e list griddisk  attributes asmdeactivationoutcome, asmmodestatus

Verifique se todos os objetos no Flash Cache estejam em estado "normal" e que nenhum disco Flash esteja em estado degradado ou critico.


Método Continuo:

Essas etapas pressupõe, que as instâncias de banco de dados e instancias de ASM e o Write-Back Flash Cache sejam habilitados em um Storage Server de cada vez.

  1. Logar no Storage Server.
  2. Remover o Flash Cache em todo o Storage Server:
    #cellcli –e dropflashcache
  3. Verificar se o status do  ASM e dos GridDisks estão OFFLINE. O seguinte comando deveria retornar "Yes" para os GridDisks que foram listados:
    # cellcli  -e list griddisk attributes name,asmmodestatus,asmdeactivationoutcome
  4. Desabilitar os GridDisks no Storage Server.
    #  cellcli –e alter griddisk all inactive
  5. Apagar el servço CELLSRV
    #  cellcli -e alter cell shutdown services cellsrv 
  6. Configurar o FlashCache do Storage Server para "WriteBack"
    #  cellcli -e "alter cell flashCacheMode=writeback"
  7. Iniciar o serviço CELLSRV
    #  cellcli -e alter cell startup services cellsrv 
  8. Ativar os GridDisk no Storage Server
    #  cellcli –e alter griddisk all active
  9. Verificar se todos os  GridDisksestán estão funcionando corretamente e restabelecer o status de  ONLINE usando o seguinte comando:
    #  cellcli -e list griddisk attributes name, asmmodestatus
  10. Recriar o  Flash Cache
    # cellcli -e  createflashcacheall 
  11. Revisar o status do  Storage Server para confirmar que agora está trabalhando em  modo "Write-Back":
    #  cellcli -e list cell detail | grep flashCacheMode
  12. Repetir os mesmos passos em cada um dos Storage Servers restantes. No entanto, antes de colocar outro Storage Server para o estado offline, você deve executar o seguinte para confirmar se o parametro "asmdeactivationoutcome" mostra "YES" no valor:
    # cellcli  -e list griddisk attributes name,asmmodestatus,asmdeactivationoutcome

Método não continuo:

Essas etapas pressupõem, que as instancias de banco de dados e ASM não estejam  iniciadas enquanto o processo de ativação do Write-Back  esteja executando.

Eliminar todos os Flash Cache do Storage Server

# cellcli -e dropflashcache

  1. Apagar o serviço CELLSRV
  2. #  cellcli -e alter cell shutdown services cellsrv
    

  3. Habilitar o Flash Cache do Storage Server para o modo "WriteBack"
  4. #  cellcli -e "alter cell flashCacheMode=writeback"
    

  5. Reiniciar o serviço CELLSRV
  6. #  cellcli -e alter cell startup services cellsrv
    

  7. Recriar o Flash Cache
  8. # cellcli -e createflashcacheall
    

 

Desabilitar o Write-Back Flash Cache quando não há uso:

É possivel deshabilitar o  Write-Back Flash Cache dos Diskgroups que não necessitam desta caracteristica, tais como RECO (Diskgroup utilizado para guardar backups). Iso beneficiará liberando espaço no Flash Cache.

CACHINGPOLICY: Pode ser usado para trocar a  política de Flash Cache nos Grid Disks.

Antes de trocar a politica de Flash Cache modifique o valor  "default" para "none", garanta que não hajam dados nenhum no Flash Cache para o Grid Disk.

Para novas criações de Grid Disks:

CellCLI>  create griddisk all harddisk prefix=RECO, size=1006, cachingPolicy="none“

Para os Grid Disk que já haviam sido criados:

CELLCLI>ALTER  GRIDDISK grid_disk_name FLUSH
CELLCLI>ALTER GRIDDISK grid_disk_name CACHINGPOLICY="none"

 

Baixar dados do Flash Cache para os Discos (Método Manual):

Os dados que não estão sincronizados com os Grid Disks podem ser sincronizados manualmente usando a função “FLUSH” :

CELLCLI>ALTER  GRIDDISK grid_disk_name FLUSH

Use o seguinte comando para revisar o progresso da atividade:
CELLCLI>LIST  GRIDDISK ATTRIBUTES name, flushstatus, flusherr


Re-Habilitar o modo  WriteThrough no Flash Cache:

Os seguintes requisitos devem ser considerados :

  • Para voltar ao modo WriteThrough, o Flash Cache debe ser descarregado para o disco previamente.
  • O Flash Cache debe ser eliminado eo serviço de CELLSRV locado.
  1. CELLCLI>  alter flashcacheallflush
  2. CELLCLI> drop flashcache
    CELLCLI> alter cell shutdown services cellsrv
  3. CELLCLI>  alter cellflashCacheMode = WriteThrough
  4. CELLCLI> alter cell startup  services cellsrv

Monitorar o uso do  Flash Cache:

Para monitorar o quanto de uso do  Flash Cache para determinar se é melhor habilitar a característica de Write-Back Flash Cache, ou desabilita-la, pode-se usar o seguinte comando:

CELLCLI> list metricdefinition attributes name, description where  name like '.*_DIRTY‘

Os significados dos campos são os seguintes :

CD_BY_FC_DIRTY:             Numero de bytes que ainda não foram descarregados para disco em um  CELL DISK
FC_BY_DIRTY:                    Numero de bytes que ainda não foram descarregados para o Flash Cache.
FC_BY_STALE_DIRTY:      Numero de bytes ainda não foram transferidos para o disco a partir do Flash Cache, mas eles não podem ser transferidos porque as unidades de flash não estão acessiveis.
GD_BY_FC_DIRTY:            Numero de bytes queainda não foram descarregados para disco do Flash Cache para um Grid Disk.

 


Deiby Gomez é um  DBA com vasta experiencia em  Oracle Exadata Database Machine e soluções de Alta Dipsonibilidade. Deiby frequentemente ministra palestras em importantes eventos  Oracle na Guatemala tais como "Oracle Technology Network Tour", "Java Day", "Primer Simposio de Oracle" e em varias Universidades de seu país de residencia (Guatemala). Deiby é o primeiro Oracle ACE da Guatemala. É "Oracle RAC 11g and Grid Infraestructure Administrator", "OCP 11g & 12c", "ExadataDatabase Machine X3 Administrator", "Oracle Linux CertifiedImplementationSpecialist" e  "Oracle SOA Implementation Certified Expert".

Yenugula Venkata Ravikumar é um DBA com mais de 15 anos de experiencia com Oracle e em ambientes de alta disponibilidade (RAC, Data Guard, dentre outros), tuning e desempenho, migrações, backup e recover, Oracle Exadata X2 e X3, é Expert em sistemas operacionais tais como  como AIX, HP-UX e Linux. Já participou como conferencista de Oracle pela India, ode mora atualmente. Obteve o titulo de "Oracle Certified Master (OCM 10g)" em 2009.

David Siqueira DBA desde 2001, atuante no mercado de São Paulo Brasil, trabalhou nas principais consultorias sempre buscando melhorar conhecimentos e agregar valor aos ambientes por onde passou, é OCP 10 e 11g, OCE SQL Expert, OCE RAC 10g, OCE Exadata Essentials e foi nomeado Oracle ACE em Dezembro de 2011. Atua com ambientes de Alta Disponibilidade Oracel RAC 11g, Exadata X2-2 e Administração de Banco de Dados em Geral. Também possui conhecimentos em sistemas operacionais Oracle VM server e Oracle Businnes Intelligence.