Meus usuários estão lançando um UPDATE feio com subseleções vinculadas, uma consulta on-line coexistindo em um ambiente on-line muito agressivo.
No rastreamento, vi uma estimativa da retenção UNDO necessária, que é aproximadamente 10x a nossa retenção atual para UNDO.
Como DBA novato, meu instinto me diz que otimizar a consulta pode ajudar e resolver o UPDATE sem ORA-01555.
Estou completamente errado?
Muito obrigado!
O banco de dados Oracle [exclusivamente] executa todas as consultas a partir do carimbo de data e hora em que a consulta/transação foi iniciada. Para conseguir isso, ele efetivamente "flashback" cada bloco de dados que usa, na memória, para esse carimbo de data/hora, usando os segmentos de Desfazer disponíveis. Se não houver suficiente nos buffers de Desfazer para conseguir isso, Bang! Você recebe o erro ORA-01555.
Portanto, esta é uma consulta que usa muitos dados e leva muito tempo para ser executada, de modo que é necessário muito desfazer para obter todos os dados "de volta" a um carimbo de data/hora consistente.
Ai!
Só para ficar claro; seus usuários estão logados no banco de dados de produção e executando consultas de atualização ? Nesse caso, você tem problemas muito, muito maiores, esperando nos bastidores.
Esperançosamente, isso é algo que eles estão executando por meio de um aplicativo.
Nesse caso, esse problema deveria ter sido encontrado durante o teste deste aplicativo e sua consulta, especificamente o teste de desempenho .
Se seus desenvolvedores não estão fazendo isso, eles deveriam estar .
Bom instinto!
Ajuste sua carga de trabalho , não seu banco de dados .