Rastrear Alterações de Tabela com o Flashback Time Travel

Use o Flashback Time Travel para exibir estados passados de objetos de banco de dados ou para retornar objetos de banco de dados para um estado anterior sem usar a recuperação de mídia em data específica.

Sobre o Flashback Time Travel

O Flashback Time Travel permite rastrear e armazenar alterações transacionais em uma tabela durante sua vida útil. O Flashback Time Travel é útil para conformidade com as políticas de estágio de registro e relatórios de auditoria. Você também pode usar o Flashback Time Travel em vários cenários, como imposição de fragmentação digital, acesso a dados históricos e recuperação seletiva de dados.

O Flashback Time Travel era chamado de Flashback Data Archive nas versões anteriores do Oracle Database. As APIs do Flashback Time Travel e alguns termos do Flashback Time Travel, como o privilégio FLASHBACK ARCHIVE, mantêm a nomenclatura do Flashback Data Archive.

Cada instância do Autonomous Database tem um Flashback Archive chamado flashback_archive que suporta operações do Flashback Time Travel. O tempo de retenção padrão para flashback_archive é 60 dias. Consulte Modificar o Tempo de Retenção do Flashback Time Travel para obter informações sobre como alterar o tempo de retenção padrão.

Há restrições para ativar o Flashback Time Travel para uma tabela, incluindo estas:

  • Você deve ter o privilégio de objeto FLASHBACK ARCHIVE para flashback_archive. Por padrão, o usuário ADMIN tem esse privilégio.
  • A tabela não deve ser nenhum dos seguintes itens:
    • Uma tabela aninhada
    • Uma tabela temporária
    • Uma tabela remota
    • uma tabela externa
  • A tabela não pode conter colunas LONG.
  • A tabela não pode conter colunas aninhadas.

Consulte Observações do Flashback Time Travel para obter uma lista de restrições adicionais do Flashback Time Travel.

Consulte Usando o Oracle Flashback Technology para obter mais informações sobre o Flashback Technology.

Ativar o Flashback Time Travel para uma Tabela

Descreve etapas para ativar o Flashback Time Travel para uma tabela no Autonomous Database.

Por padrão, o Flashback Time Travel é desativado para tabelas novas e existentes.

A seguir, há um pré-requisito para ativar o Flashback Time Travel:
  • Você deve estar conectado como o usuário ADMIN ou ter o privilégio de objeto FLASHBACK ARCHIVE.

    O usuário ADMIN ou o usuário que tem o privilégio FLASHBACK ARCHIVE WITH GRANT OPTION pode conceder o privilégio de objeto FLASHBACK ARCHIVE a outro usuário.

    Por exemplo:

    GRANT FLASHBACK ARCHIVE ON FLASHBACK_ARCHIVE TO <username>
    GRANT FLASHBACK ARCHIVE ON FLASHBACK_ARCHIVE TO <username> WITH GRANT OPTION

    Consulte Gerenciar Atribuições e Privilégios de Usuário no Autonomous Database para obter mais informações.

Você pode ativar o Flashback Time Travel para uma tabela existente ou uma nova tabela que você está criando.

  1. Para ativar o Flashback Time Travel ao criar uma tabela:
    CREATE TABLE employee (EMPNO NUMBER(4) NOT NULL, ENAME VARCHAR2(10), JOB VARCHAR2(9), MGR NUMBER(4)) FLASHBACK ARCHIVE;
  2. Para ativar o Flashback Time Travel para uma tabela existente:
    ALTER TABLE departments FLASHBACK ARCHIVE;

Depois de ativar o Flashback Time Travel para uma tabela, você poderá desativar o Flashback Time Travel. Consulte Desativar o Flashback Time Travel para uma Tabela para obter mais informações.

Desativar o Flashback Time Travel para uma Tabela

Descreve o procedimento para desativar o Flashback Time Travel para uma tabela no Autonomous Database.

Depois que o Flashback Time Travel é ativado para uma tabela, você pode desativá-lo como usuário ADMIN ou se tiver o privilégio de objeto FLASHBACK ARCHIVE.

Por exemplo, para desativar o Flashback Time Travel para a tabela employee:
ALTER TABLE employee NO FLASHBACK ARCHIVE;

Modificar o Tempo de Retenção do Flashback Time Travel

Descreve o procedimento para modificar o tempo de retenção do Flashback Time Travel no Autonomous Database.

Você poderá modificar o tempo de retenção do Flashback Time Travel se estiver conectado como usuário ADMIN ou se tiver privilégio EXECUTE em DBMS_CLOUD_ADMIN.

Por exemplo, para definir o tempo de retenção como 365 dias:
BEGIN
  DBMS_CLOUD_ADMIN.SET_FLASHBACK_ARCHIVE_RETENTION
   (retention_days => 365);
END;
/

Consulte Procedimento SET_FLASHBACK_ARCHIVE_RETENTION para obter informações detalhadas sobre o procedimento.

Limpar Dados Históricos do Flashback Time Travel

Descreve o procedimento para limpar dados históricos do Flashback Time Travel no Autonomous Database.

Você poderá expurgar dados históricos do Flashback Time Travel se estiver conectado como o usuário ADMIN ou se tiver o privilégio EXECUTE em DBMS_CLOUD_ADMIN.

Por exemplo, para limpar todos os dados históricos do Flashback Time Travel:
BEGIN
  DBMS_CLOUD_ADMIN.PURGE_FLASHBACK_ARCHIVE
   (scope => 'ALL');
END;
/
Exemplo para limpar os dados históricos do Flashback Time Travel antes de um timestamp especificado:
BEGIN
  DBMS_CLOUD_ADMIN.PURGE_FLASHBACK_ARCHIVE
   (scope => 'TIMESTAMP', before_timestamp => '12-JUL-2023 10:24:00');
END;
/
Exemplo para expurgar dados históricos do Flashback Time Travel com mais de 1 dia:
BEGIN
  DBMS_CLOUD_ADMIN.PURGE_FLASHBACK_ARCHIVE
   (scope => 'TIMESTAMP', before_timestamp => SYSTIMESTAMP - INTERVAL '1' DAY);
END;
/
Exemplo para limpar os dados históricos do Flashback Time Travel antes do scn especificado:
BEGIN
  DBMS_CLOUD_ADMIN.PURGE_FLASHBACK_ARCHIVE
   (scope => 'SCN',before_scn=> '5928826');
END;
/

Consulte PURGE_FLASHBACK_ARCHIVE Procedimento para obter informações detalhadas sobre o procedimento.

Exibir Informações do Flashback Time Travel

Descreve as views do dicionário de dados para exibir informações sobre arquivos do Flashback Time Travel no Autonomous Database.

Você pode exibir informações sobre os arquivos do Flashback Time Travel nas views de dicionário de dados estáticos.

Exibir Descrição
*_FLASHBACK_ARCHIVE Exibe informações sobre os arquivos do Flashback Time Travel.
*_FLASHBACK_ARCHIVE_TS Exibe tablespaces de arquivos do Flashback Time Travel.
*_FLASHBACK_ARCHIVE_TABLES Exibe informações sobre tabelas que têm o Flashback Time Travel ativado.

Observações do Flashback Time Travel

Fornece observações e restrições ao usar o Flashback Time Travel no Autonomous Database.

Observe as seguintes restrições do Flashback Time Travel:

  • Não é possível ativar o Flashback Time Travel em tabelas com o tipo de dados LONG ou colunas de tabelas aninhadas.

  • Não é possível ativar o Flashback Time Travel em uma tabela aninhada, tabela temporária, tabela externa, view materializada, tabela de Consulta Avançada (AQ), tabelas híbridas particionadas ou em um objeto que não seja tabela.

  • O Flashback Time Travel não suporta instruções DDL que movem, dividem, mesclam ou unem partições ou subpartições, movem tabelas ou convertem colunas LONG em colunas LOB.

  • Falha ao adicionar ou ativar uma Restrição, incluindo a Restrição de Chave Estrangeira, em uma tabela que foi ativada para o Flashback Time Travel com ORA-55610.

    Há suporte para eliminar ou desativar uma Restrição (incluindo Restrição de Chave Estrangeira) em uma tabela que foi ativada para o Flashback Time Travel.

  • Depois de ativar o Flashback Time Travel em uma tabela, a Oracle recomenda inicialmente aguardar pelo menos 20 segundos antes de inserir dados na tabela e aguardar até 5 minutos antes de usar o Flashback Query na tabela.
  • Há um Flashback Data Archive por instância do Autonomous Database, chamado flashback_archive, e você não pode criar Flashback Data Archives adicionais.

  • Você não pode eliminar o Flashback Data Archive, flashback_archive, em uma instância do Autonomous Database.

  • Você não pode criar, modificar ou eliminar tablespaces para o Flashback Data Archive. Portanto, não é possível executar estas instruções:

    • ALTER FLASHBACK ARCHIVE flashback_archive ADD TABLESPACE;
    • ALTER FLASHBACK ARCHIVE flashback_archive MODIFY TABLESPACE;
    • ALTER FLASHBACK ARCHIVE flashback_archive REMOVE TABLESPACE;
  • Se você ativar o Flashback Time Travel em uma tabela, mas o Gerenciamento Automático de Undo (AUM) estiver desativado, o erro ORA-55614 ocorrerá quando você tentar modificar a tabela.

  • Para ativar o Flashback Time Travel em uma tabela, a tabela não pode usar nenhuma das seguintes palavras reservadas do Flashback Time Travel como nomes de coluna:
    • STARTSCN
    • ENDSCN
    • RID
    • XID
    • OP
    • OPERATION