Os erros prováveis que geram "instantâneos muito antigos" durante a exportação do datapump estão bem documentados em toda a Internet, como:
- parâmetro undo_retention sendo muito curto
- os grupos de redo logs são muito pequenos ou muito poucos
- desfazer tablespace é muito pequeno
Existe uma maneira de monitorar esses casos de falha enquanto o trabalho está sendo executado?
O tipo de solução que estou procurando seria uma consulta que relatasse:
- porcentagem total do uso do espaço de tabela de desfazer do instantâneo até que ele precise se estender automaticamente ou atingir o máximo
- porcentagem total de uso de redo logs até que ele se sobrescreva
- tempo restante até que a retenção de desfazer seja alcançada pelo instantâneo
Qualquer consulta que faça parte dessas coisas seria bem-vinda. Procurar essas informações requer pacotes analíticos do oracle? É possível consultar tal coisa?
Você precisa entender completamente como desfazer funciona para solucionar esse erro. Recomendo esta postagem no blog:
http://blog.oracle48.nl/wordpress/oracle-database-undo-space-explained/
Você pode usar esta consulta para ver o perfil atual de seu(s) tablespace(s) Undo:
ACTIVE
as extensões contêm transações não confirmadas ou em processo de reversão.UNEXPIRED
extensões contêm transações que devem ser mantidas no tablespace Undo para atender ao parâmetro undo_retentionEXPIRED
extensões são transações ainda no tablespace Undo que são mais antigas que o parâmetro undo_retention.O banco de dados excluirá as extensões expiradas mais antigas para liberar espaço para as novas ativas. Se não houver extensões expiradas, ele tentará alocar uma nova extensão. Se isso significa estender o arquivo de dados, ele fará isso.
Se o arquivo de dados não puder ser estendido, o banco de dados excluirá algumas extensões não expiradas para liberar espaço, violando o valor undo_retention. Portanto, o parâmetro undo_retention não é uma garantia, mas uma diretriz que o banco de dados tentará seguir da melhor maneira possível.
Agora, existem dois modos de falha comuns aqui:
Se uma consulta tentar ler de uma extensão excluída, ela falhará com
ORA-01555 Snapshot Too Old
Se todo o tablespace de undo ficar cheio de undo ativo, as transações falharão com
ORA-30036 unable to extend segment in Undo tablespace
Se a soma dos bytes ativos e não expirados em DBA_UNDO_EXTENTS estiver próxima do tamanho do espaço de tabela de undo relevante, você poderá experimentar um ORA-01555.
Se a soma dos bytes ativos estiver próxima do tamanho do espaço de tabela de desfazer relevante, é provável que ocorra um erro ORA-30036.
Não estou ciente de nada que você possa alterar na configuração do log refazer que afetará os erros do Snapshot Too Old. Onde você conseguiu esta informação?
É muito difícil, se não impossível, fazer isso com precisão, porque depende de todas as outras transações no banco de dados. Se você subtrair o tempo de execução da consulta do parâmetro undo_retention, terá uma boa ideia, mas isso pressupõe apenas que o tablespace de undo era grande o suficiente para atender ao valor de undo_retention. Assim que essa linha for cruzada, todas as apostas serão canceladas.