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).
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
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:
Postar um comentário