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