12c - 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

0 comentários: