- Este tópico contém 8 respostas, 3 vozes e foi atualizado pela última vez 13 anos, 2 meses atrás por
Doug.
-
AutorPosts
-
20 de março de 2012 às 4:40 pm #103124
Doug
ParticipanteBom Dia Pessoal.
Oracle – 10.2.0.5
Ambiente – RAC
S.O – RedHatEstou precisando de um help.
Seguidamente em meu alert do nó 1 tenho constatado o erro ORA-1555.
Até mesmo já aumentei a retenção da undo, mas o erro persiste. Hoje o mesmo ocorreu por volta de 4 a.m…logo na execuçao do bkp…
INST_ID NAME VALUE
1 undo_management AUTO
1 undo_tablespace UNDOTBS1
1 undo_retention 1500
2 undo_management AUTO
2 undo_tablespace UNDOTBS2
2 undo_retention 1500
Tue Mar 20 04:34:56 BRT 2012
ORA-01555 caused by SQL statement below (SQL ID: gt3h9v12f8bps, Query Duration=0 sec, SCN: 0x0a0a.b5b6da61):
Tue Mar 20 04:34:56 BRT 2012
SELECT "A4"."USER_UNF_ID",TO_CHAR("A4"."DT_REL_DIARIO",:"SYS_B_00"),SUM(CASE WHEN ("A3"."TP_SERVICO"<>:"SYS_B_01" AND "A3"."TP_SERVICO"<>:"SYS_B_02" AND ("A1"."CD_ESPECIE"=:"SYS_B_03" OR "A1"."CD_ESPECIE"=:"SYS_B_04" OR "A1"."CD_ESPECIE"=:"SYS_B_05" OR "A1"."CD_ESPECIE"=:"SYS_B_06" OR "A1"."CD_ESPECIE"=:"SYS_B_07" OR "A1"."CD_ESPECIE"=:"SYS_B_08" OR (("A1"."CD_ESPECIE"=:"SYS_B_09" OR "A1"."CD_ESPECIE"=:"SYS_B_10") AND ("A3"."TP_SERVICO"=:"SYS_B_11" OR "A3"."TP_SERVICO"=:"SYS_B_12" OR "A3"."TP_SERVICO"=:"SYS_B_13" OR "A3"
Alguem ja passou por esse problema ?
[ ] ´s
20 de março de 2012 às 5:03 pm #103126rman
Participante@Doug
O backup que você está se referindo é um EXPDP ou RMAN? Estou supondo que é EXPDP…
O ora-01555 pode ser resolvido de 2 formas: configurando o undo_retention ou tamanho de undo.
Para descobrir se deve aumentar o undo_retention ou a undo segue um artigo:
http://www.oraclehome.com.br/2011/09/02 … ot-to-old/
20 de março de 2012 às 5:06 pm #103127Doug
ParticipanteBlz rman…Com relação ao bkp so quis explanar que a bendita query foi executada na hora do mesmo…nao significa que o problema seja no bkp..hehhe..durante o dia tbm tive esses mesmos erros…vou dar uma lida no artigo….
[ ] ´s
20 de março de 2012 às 5:16 pm #103128Doug
ParticipanteAte executei o script que me trouxe que houve erro, mas nao é de espaço…
select inst_id,
to_char(begin_time, 'MM/DD/YYYY HH24:MI') begin_time,
UNXPSTEALCNT as "# UnexpiredStolen",
EXPSTEALCNT as "# ExpiredReused",
SSOLDERRCNT as "ORA-1555Error",
NOSPACEERRCNT as "Out-Of-spaceError",
MAXQUERYLEN as "Max QueryLength"
from gv$undostat
where begin_time between
to_date('20/03/2012 04:20', 'DD/MM/YYYY HH24:MI:SS') and
to_date('20/03/2012 04:30', 'DD/MM/YYYY HH24:MI:SS')
order by inst_id, begin_time;
Resultado :
INST_ID BEGIN_TIME # UnexpiredStolen # ExpiredReused ORA-1555Error Out-Of-spaceError Max QueryLength
1 1 03/20/2012 04:26 0 0 1 0 0
2 2 03/20/2012 04:26 0 0 0 0 0
20 de março de 2012 às 5:20 pm #103129rman
Participante@Doug
Tem que aumentar o undo_retention mesmo. Configura pra 45 minutos, se continuar configura pra 60.
20 de março de 2012 às 5:25 pm #103130Doug
ParticipanteBlz…vou aumentar para 45 e monitorar …
[ ] ´s
21 de março de 2012 às 4:53 pm #103149Regis Araujo
Participante@Doug
@rmanBom dia..!!
Senhores.. desculpa me intrometer.. Mas mesmo que você aumente o tempo de retenção pelo parametro undo_retention, não quer dizer que o Oracle ira armazenar a imagem do bloco alterado por este tempo o oracle somente irá garantir esta copia do bloco se a opção GUARANTEE estiver habilitada na tablespace de undo.. por default ela é NOGUARANTEE… E com a opção de retention como NOGUARANTEE, mesmo que você sete o undo_retention para 24 horas.. se o oracle precisar usar o espaço na tablespace de undo, ele irá usar antes das 24 horas.. O undo_retention sem o GUARANTEE diz ao Oracle que se ele tiver espaço, deverá manter a imagem do bloco por 24 horas.. mas se precisar usar.. ele poderá usar…!!!
Mas tenho um certo receio em ficar setando o parametro undo_retention para um valor “elevado”, pois se sua base possuir muitas transações DML e o switch for muito alto entre os redos online.. devido ao parametro undo_retention estar setado para um valor “alto” e a opção GUARANTEE estiver setada, seu banco pode simplesmente parar, pois devido a necessidade do banco alocar o espaço na tablespace de undo e ele não poder ser liberado devido a “garantia” exigida, assim você terá problemas..
Mas mesmo com o undo_retention setado para um valor baixo, a imagem do bloco alterado pode ficar guardada na tablespace de undo por um bom tempo, até alem do periodo de retenção.. isto pode ocorrer se no seu banco não houver tantas transações DML, se o seu banco for altamente transacional, sugiro aumentar o tamanho os grupos de redo online, assim você garante um melhor desempenho do seu banco e até mesmo das leituras consistentes.. lembrando que por default o undo_retention é de 3600 segundos (1hora).
Normalmente, repito, normalmente… Snapshot Too Old não é problema de banco de dados, é problema de aplicação, onde a aplicação não foi desenhada corretamente para poder ler os dados com rapidez.. mas sempre é bom investigar por qual motivo o processo está demorando.. as vezes um plano errado pode provocar isto..
Sugiro também verificar qual o plano de execução do procedimento.. assim você terá mais informações.. pois se somente olhar para a undo, você pode estar “tapando o sol com a peneira”.
Bom.. desculpa me intrometer novamente.. esta é minha opinião e sugestão..!!!
Abraços..!
21 de março de 2012 às 7:40 pm #103166rman
Participante@Thunder_Catz
Bacana do detalhe da opção GUARANTEE. Já recebi o ORA-01555 no expdp, neste caso não tem o que fazer, ou aumenta o undo ou o undo_retention.
Mas no caso de um query do sistema tem que otimizar a query. Mas nem sempre é possível fazer isso, ainda mais quando o sistema é terceirizado. Mas realmente o problema está na aplicação.
Ah, o default do undo_retention tanto no 10g e no 11g é 900 segundos (15 minutos).
21 de março de 2012 às 9:58 pm #103179Doug
ParticipanteIntrometer ? Imagina
Realmente aumentei o valor mas nao adiantou…O problema é de apps mesmo…como ninguem reclamou irei aguardar…
abs
-
AutorPosts
- Você deve fazer login para responder a este tópico.