Thursday, December 28, 2017

ILM - Information Lifecycle Management

Introdução


O ILM "Information Lifecycle Management" é a estrategia implementada em banco de dados para  reduzir custo de armazenamento e melhorar o acesso aos dados,  adaptando-os de acordo com a necessidade de negocio de forma inteligente e automatica. Através do ILM é possivel "classificar" a informação e fazer a manutenção dos dados de forma inteligente e automática.

O ILM surgiu pois nem toda a informação no banco de dados é acessado da mesma maneira, dados novos são lidos com mais frequencia, conforme a informação vai se tornando velha os dados se tornam menos acessados, e por fim quase não são acessados, porém muitas vezes são mantidos no banco de dados. O ILM é o framework responsavel por automatizar a manutenção do dados, utilizando duas features, Compression e Storage Tiering.

OBS - Para fazer uso do ILM deve estar na versão Enterprise, ter a feature Advanced Compression e para 12.1 não estar dentro de um contexto de CDB.



Componentes

Os doiscomponentes para a manutenção do ciclo de vida das informação (ILM), são o mapa de calor (Heat Map) e o ADO (Automatic Database Optimization), otimização dos dados automatica.

A organização das informações é feito pelo através de um mapa de calor, heat map, assim o mecanismo de otimização, ADO Automatic Data Optimization, avalia as informações do mapa de calor e dispara uma ação de acordo com a politica definida. Politicas baseadas em linha são executadas assim que detectadas pelo MMON, politicas baseadas em segmentos são executadas na janela de manutenção.

Heat Map

O Heat Map é uma nova feature do Oracle 12c a qual faz um mapeamento da utilização dos dados a nivel de linhas e segmentos. É mapeado as modificações, leituras, acesso full e acesso via index, assim traçando um mapa de calor do que esta sendo utilizado, sendo a trigger para optimização do armazenamento dos dados, o mapeamento dos dados é feito através de acessos ao segmento e modificações a nivel de bloco e semento.

O primeiro passo para utilizar o ILM é habilitar o Mapa de Calor (Heat Map), o qual é controlado pelo parametro heat_map. Este parametro faz com que DML e acessos a segmentos sejam mapeados na memoria e futuramente armazenados na tablespace SYSAUX.

alter system set heat_map=on;

O Tracking dos dados é armazenado em memoria e pode ser consultado pela view V$HEAT_MAP_SEGMENT, periodicamente é armazenado em disco pela DMBS_SCHEDULER e pode ser consultados pelas views, DBA_HEAT_MAP_SEGMENT, DBA_HEAT_MAP_SEG_HISTOGRAM, DBA_HEATMAP_TOP_TABLESPACES.


Automatic Data Optimization (ADO) 


ADO prove a habilidade de declarar politicas em diferentes escopo de objetos no banco de dados, assim automatizando a manutenção dos dados de acordo com necessidade de negocio, tendo como base o heat map.

O ADO depende de algumas diretrizes para funcionar, basicamente depende do escopo, condição e uma ação.

Basicamente o ADO monitora através das politicas uma condição, como por exemplo N tempo sem acesso a um segmento pode disparar uma ação de compressão da tabela ou partição especifica.

  • Escopo Tablespace, tabela, partição, subpartição e linha
  • Classicação / Condição Ultimo Acesso, ultima modificação, data de criação
  • Ações compression, Storage Tiering
Abaixo temos as diretrizes que podemos utilizar para se criar uma politica.
















Existem alguma diretrizes que devem ser obervadas.
  • Quando o espoco é de linha, somente pode ser utilizada a condição de "não modificação".
  • Storage Tiering é feito somente com base em dados, ou seja quando a tablespace se encontra com thresshold de utilização acima do definido
Abaixo temos as possiveis relação de ação, objeto e condição:
















Exemplos


Politica a nivel de segmento

ALTER TABLE t1 ILM ADD POLICY
COLUMN STORE COMPRESS FOR QUERY HIGH
SEGMENT AFTER 90 DAYS OF NO MODIFICATION;

Na instrução temos para cada cor um aspecto da politica.

Ação - A ação que será executada quando encontrada a condição
Target - O Target, indica que o segmento inteiro receberá a ação
Condição - A condição que é espera para disparar o gatilho da ação.

Politica a nivel de linha

ALTER TABLE t2 ILM ADD POLICY
ROW STORE COMPRESS ADVANCED
ROW AFTER 90 DAYS OF NO MODIFICATION;

Na instrução temos para cada cor um aspecto da politica.

Ação - A ação que será executada quando encontrada a condição
Target - O Target, indica que a linha receberá a ação
Condição - A condição que é espera para disparar o gatilho da ação.

Casos especiais

Muitas politicas no mesmo segmento

É possivel habilitar muitas policitas desde que sejam seguidas algumas regras, são elas.

Todas as politicas deven seguir a mesma condição, seja ela no access, no modification ou creation time, essa deve seguir sempre com a mesma condição em todas as politicas.

A ação sempre deve ser uma ação em um nivel superior ao anterior, ou seja o nivel de compressão 
sempre deve ser maior, quando mais velho o dado maior o nivel da ação.

Linha

É aceito apenas uma politica a nivel de linha.

A unica condição aceita a nivel de linha é a "No Modification"

Politicas de segmento não sobrepoem politicas de Linhas.

Herança

Caso seja especificado uma politica para um objeto que tenha dependencias, por exemplo partições de uma tabela, as partições recebem a mesma politica como hereança da politica da tabela. Caso nessa tabela seja criada uma politica a nivel de partição, essa politica sobrepoem a politica de tabela para aquela partição.

Mecanismo

Para politicas de linha o ADO utiliza o processo de MMON, o qual a cada 15 minutos avalia as linhas / Politicas e realiza qualquer ação que tiver sua condição quebrada.

Para os demais objetos somente são avaliados e qualquer ação tomada dentro da janela de manutenção. Para quebrar essa regra podemos utilizar duas procedures:

Avalia a politica: DBMS_ILM_ADMIN.EXECUTE_ILM
Para executar a  Politica: DBMS_ILM_ADMIN.EXECUTE_ILM_TASK

Alguasm views que podem ser utilizadas para monitorar o ILM são

DBA_ILM_TASK
DBA_ILMEVALUATIONDETAILS
DBA_ILMRESULTS

Tipos de Compressão

Embora o ILM não trata dos detalhes de compressão, acho interessante ter em mente o básico de comprssão para entender muitas vezes o efeito esperado com o ILM.

  • Row Compression
O tipo de compressão a nivel de linha é feito pelo Oracle através do agrupamento das colunas de uma mesma linha e removida os valores duplicados, assim substituindo por ponteiro para o valor original, até a próxima linha, a qual é agrupada no mesmo bloco. Existe dois tipos de compressão pra linha, row basic e advanced.
    • Row Compression Basic
      • Nivel de compressão mais básico
      • Licença Enterprise Edition
      • Não Suporta DML
      • Metodos - Direct path insert, alter table move, redefinition
    • Advanced Row Compression
      • Adequado para OLT
      • Suporta DML
      • Requer licença especial de Advanced Compression

  • Hybrid Columnar Compression

A compressão colunar é um pouco diferente da linha, o agrupamento é feito por vetores na coluna, portanto é utilizado um grupo de linhas, e a compressão é feito na coluna e armazenada como compression unit, podendo estar fisicamente armazenado em vários blocos.

Basicamente existem dois tipos de compressão HCC, For Query e For Archive.

HCC Requires: Exadata, SuperCluster, Pillar Axiom or ZFSSA storage

  • Warehouse Compression
    • For Query Low
    • For Query High
  • Archive Compression
    • For Archive log
    • For Archive High
Sintaxe para cada tipo de compressão:


No comments: