quinta-feira, 28 de dezembro de 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.


Oracle 12c Information Lifecycle Management
Oracle ILM (Information Lifecycle)

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.

Oracle 12 Automatic Data Optimization
Oracle ADO (Automatic Data Optimization)















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:

Oracle Compression















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:

Oracle Compression Method

Nenhum comentário: