É viável definir uma retenção de desfazer muito alta, para permitir consultas de flashback várias semanas atrás no tempo?
Naturalmente, espaço suficiente deve estar disponível nos tablespaces de undo para conter a quantidade de dados de undo necessários. Existem outras limitações das quais devo estar ciente?
O que acontece se não houver espaço suficiente para desfazer disponível? A produção será afetada de alguma forma, ou é apenas uma questão de flashback e reversão sendo limitada (instantâneo muito antigo etc).
Atualizar:
Com uma geração de desfazer típica de pouco menos de 1 GB por dia por instância e até 64 GB de espaço de desfazer por instância, parece viável executar com uma meta de retenção de desfazer de 30 dias. Não?
Muito alto é um termo relativo que depende da perspectiva. Você pode significar 1 hora, 1 mês, 1 ano, etc. Supondo que você queira dizer algo entre um minuto e um mês, a resposta dependerá de quanto desfazer está sendo produzido e quanto armazenamento você tem disponível. Não vi nada superior a duas semanas.
O Oracle gerencia automaticamente o espaço de desfazer e diminuirá dinamicamente a retenção abaixo da configuração de retenção de desfazer se as restrições de espaço exigirem. A ressalva a isso é quando o tablespace undo tem retenção garantida.
O Oracle Database Administrator's Guide cobre todas essas informações em uma página . Aqui estão alguns trechos:
Embora eu não tenha tentado, eu tenderia a suspeitar que você terá problemas quando
UNDO_RETENTION
exceder o período de tempo que o Oracle mantém seu SCN para mapeamento de carimbo de data/hora. Se não me falha a memória, isso é aproximadamente 1 semana (bem, se não me falha a memória, foi 1 semana nos dias de 10g e não tenho conhecimento de nada que teria mudado isso em 11.2). Eu tenderia a suspeitar que a Oracle usaria esse mapeamento para determinar quaisUNDO
segmentos são antigos o suficiente para serem limpos e que você começaria a encontrar problemas se excedesse esse limite.No meu sistema 11.2, por exemplo, posso converter 7 dias atrás para um SCN e depois voltar para um registro de data e hora, mas não 8 dias atrás
Eu tenderia a suspeitar em meu sistema, portanto, que se eu tentasse reter 8 dias
UNDO
daquele Oracle geralmente teria um problema de conformidade. Levaria uma semana para verificar de uma forma ou de outra, mas se eu tivesse que apostar, tenderia a apostar que tentar segurar mais de uma semanaUNDO
falharia.Mesmo que você pudesse segurar
UNDO
tanto tempo, formular a consulta de flashback seria um grande desafio, já que você não poderia especificar um carimbo de data/hora. Você poderia potencialmente manter seu próprio mapeamento (mais de longo prazo) entre SCN e carimbo de data/hora escrevendo um trabalho automatizado que capturaria ambos a cada poucos segundos e os manteria por semanas ou meses seguidos e depois especificariaAS OF SCN
em suas consultas de flashback. Eu tenderia a esperar que o mais velhoUNDO
fosse embora, mas pode funcionar.