HCM - Acertos - Erro ORA-22924 Snapshot too old: rollback segment number with name "" too small ORA - 22924: snapshot old
Atenção! Este artigo é um artigo interno e não deve ser divulgado aos clientes! Em caso de dúvidas no procedimento, peça auxílio.
Incidente
No módulo Controle de tempo ao realizar o acesso à tela de acertos na data é apresentada a mensagem: Erro ORA-22924 Snapshot too old: rollback segment number with name "" too small ORA - 22924: snapshot old.
Causa
Esta mensagem é apresentada, pois o tempo de retenção do banco de dados é muito pequeno, e quando existem muitas transações sendo executadas ao mesmo tempo.
Solução
Para corrigir este incidente pode-se executar o SQL abaixo:
SELECT D.UNDO_SIZE/(1024*1024) ACTUAL UNDO SIZE [MBYTE],
SUBSTR(E.VALUE,1,25) UNDO RETENTION [SEC],
ROUND((D.UNDO_SIZE / (TO_NUMBER(F.VALUE) *
G.UNDO_BLOCK_PER_SEC))) OPTIMAL UNDO RETENTION [SEC]
FROM (
SELECT SUM(A.BYTES) UNDO_SIZE
FROM V$DATAFILE A,
V$TABLESPACE B,
DBA_TABLESPACES C
WHERE C.CONTENTS = 'UNDO'
AND C.STATUS = 'ONLINE'
AND B.NAME = C.TABLESPACE_NAME
AND A.TS# = B.TS#
) D,
V$PARAMETER E,
V$PARAMETER F,
(
SELECT MAX(UNDOBLKS/((END_TIME-BEGIN_TIME)*3600*24))
UNDO_BLOCK_PER_SEC
FROM V$UNDOSTAT
) G
WHERE E.NAME = 'UNDO_RETENTION'
AND F.NAME = 'DB_BLOCK_SIZE'
Observação: O mesmo baseia-se no histórico dos últimos 7 dias das execuções mais demoradas para calcular o tamanho da UNDO. A coluna OPTIMAL UNDO RETENTION [Sec] informa a você qual o melhor valor para ser colocado no parâmetro undo_retation.
Atenção! Antes de realizar qualquer alteração, analise o impacto que poderá ter em outros lançamentos/processos do sistema.