Pular para o conteúdo

Aprenda como utilizar o In-Database Archiving no Oracle Database

In-Database Archiving

No Oracle Database 12c, foi introduzida uma nova feature, o In-Database Archiving.

O In-Database Archiving, permite que os usuários ou aplicações do banco de dados modifiquem o archive state para cada registro de uma tabela. Registros que estiverem marcados como archived, não serão visíveis, ao menos que seja habilitada a visibilidade na sessão.

Com o In-Database Archiving, mais dados podem ser armazenados em bancos de dados de produção por um longo período de tempo, sem comprometer o desempenho de aplicativos. Além disso, os dados arquivados podem ser comprimidos de forma agressiva, para ajudar a melhorar o desempenho de consultas e de backups.

Utilizar o In-Database Archiving no Oracle 12c é muito simples, você não precisa de nada para configurá-lo, nem mesmo um parâmetro de inicialização. É necessário apenas utilizar a cláusula “row archival” no DDL de definição da tabela. Uma vez feito isso, as linhas dentro dessa tabela podem ser arquivadas.

Para marcar os registros como arquivados, a coluna oculta “ora_archive_state” é adicionada a cada tabela para a qual o “row archival” foi ativado. Esta coluna tem um valor padrão zero, que significa não arquivado ou visível. Para marcar um registro como arquivado ou invisível você precisa alterar o valor dessa coluna para qualquer coisa diferente de zero (recomento utilizar o DBMS_ILM.ARCHIVESTATENAME).

SQL> create table tabela_teste(coluna1 number) row archival;
Table created.

insert into tabela_teste values(1);
insert into tabela_teste values(2);
insert into tabela_teste values(3);

SQL> commit;

Commit complete.

SQL> select coluna1,ora_archive_state from tabela_teste;

  COLUNA1  ORA_ARCHIVE_STATE
---------- --------------------
     1     0
     2     0
     3     0 

SQL> update tabela_teste set ora_archive_state=DBMS_ILM.ARCHIVESTATENAME(1) where coluna1=3;
1 row updated.

SQL> select coluna1,ora_archive_state from tabela_teste;

  COLUNA1  ORA_ARCHIVE_STATE
---------- --------------------
     1     0
     2     0

SQL> alter session set row archival visibility=all;
Session altered.

SQL> select coluna1,ora_archive_state from tabela_teste;

  COLUNA1      ORA_ARCHIVE_STATE
----------     --------------------
     1         0
     2         0
     3         1

SQL> alter session set row archival visibility=active;
Session altered.

SQL> select coluna1,ora_archive_state from tabela_teste;

  COLUNA1      ORA_ARCHIVE_STATE
----------     --------------------
     1         0
     2         0

Referências

Abraço

Alex Zaballa

Alex Zaballa

Alex Zaballa, formado em Análise de Sistemas, é especialista em Banco de Dados Oracle com sólidos conhecimentos em Servidores de Aplicação e Sistemas Operacionais; trabalha com Oracle há 15 anos, é ORACLE ACE Director, certificado OCM Database 11G / Cloud e conta com mais de 140 outras certificações em produtos da Oracle. Alex também é um dos fundadores do Grupo de Usuários Oracle de Angola (GUOA), participa do Grupo de Usuários de Tecnologia Oracle Brasil (GUOB) e é membro do time OraWorld.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

plugins premium WordPress