- Este tópico contém 11 respostas, 4 vozes e foi atualizado pela última vez 14 anos, 9 meses atrás por
mpungan.
-
AutorPosts
-
20 de junho de 2011 às 4:03 pm #99719
mpungan
ParticipantePessoal, alguém poderia ajudar neste problema, que estou enfrentando em banco de produção. Da a mensagem abaixo e a carga da máquina esta subindo. Esta lotando a área de archive log.
Thread 1 cannot allocate new log, sequence 27721
Checkpoint not complete
Current log# 2 seq# 27720 mem# 0: /oracle/oradata/PIUMA/onlinelog/o1_mf_2_496vssnz_.log20 de junho de 2011 às 4:07 pm #99720Sousa04
Participanteao que parace a carga é muito grande mesmo.
Os redos estão enchendo tão rápido que todos eles foram preenchidos sem ocorrer um checkpoint sequer.
qual o tamanho dos redos?
20 de junho de 2011 às 4:16 pm #99721mpungan
Participante500 Mb cada redo. E qual a solução?
20 de junho de 2011 às 4:36 pm #99722Sousa04
Participanteé um banco de dw, transacional,
essa carga é frequente, mensal,isso pq a princípio banco de DW pode deixar em noarchivelog.
se for um banco transacional e essa carga é constante voce pode aumentar o tamanho dos seus redos.20 de junho de 2011 às 4:39 pm #99723mpungan
ParticipanteÉ um banco transacional, e se aumentar o número de redos. É uma alternativa ou não?
20 de junho de 2011 às 4:43 pm #99724Sousa04
Participantesim é uma alternativa. Voce tbm pode aumentar o número de redos.
Qts vc já tem?
20 de junho de 2011 às 4:45 pm #99725felipeg
Participante[quote=”mpungan”:3k3nydkx]É um banco transacional, e se aumentar o número de redos. É uma alternativa ou não?[/quote]
Olá,
Desculpem me intrometer mas se possível poderia nos retornar o resultado do comando abaixo
SELECT thread#,group#,sequence#,bytes,
members,archived,
status,first_change#,
TO_CHAR(first_time, 'DD-MM-YYYY HH24:MI:SS') first_time
FROM
sys.v_$log
ORDER BY
thread#,
group#;
De qualquer forma as opções são
1 – Adicionar mais redo logs
2 – Tornar os redos menores e verificar a quantidade de logs necessária
3 – Adicionar mais DBWriters para diminuir o tempo de checkpoint
(cuidado! essa alternativa pode degradar a performance do sistema como um todo)
4 – Setting archive_lag_target to 0 (disabled) fixed the issue (note 435780.1 da Oracle)O comando para o passo 3 é:
alter system set archive_lag_target=0 scope=both;
Só pra você entender a sua situação
- Você esta no redo número 1
- É feito um switch do log 1 para o 2
- Um checkpoint é feito no log 1
- É feito outro switch do 2 para o 3, porém o checkpoint do 1 ainda não terminou
- É feito um checkpoint no 2
- Durante o checkpoint do 1, o sistema tenta dar um switch do 3 para o 1
Nesse caso como o checkpoint ainda não terminou, o Oracle irá aguardar até o log ficar disponível causando lentidão e as mensagens que você está vendo no alert.
Atenciosamente,
Felipe.20 de junho de 2011 às 5:51 pm #99727mpungan
ParticipanteBom, o select esta ai abaixo. Acrescentamos mais redologs, e parece que o problema deixo de existir.
SELECT thread#,group#,sequence#,bytes,
members,archived,
status,first_change#,
TO_CHAR(first_time, ‘DD-MM-YYYY HH24:MI:SS’) first_time
FROM
sys.v_$log
ORDER BY
thread#,
group#1 1 27752 524288000 1 YES INACTIVE 40583949638 20-06-2011 10:00:13
1 2 27755 524288000 1 NO CURRENT 40584553864 20-06-2011 10:22:41
1 3 27750 524288000 1 YES INACTIVE 40583895653 20-06-2011 09:57:29
1 4 27751 524288000 1 YES INACTIVE 40583943871 20-06-2011 09:59:45
1 5 27753 524288000 1 YES INACTIVE 40584009648 20-06-2011 10:03:27
1 6 27754 524288000 1 YES INACTIVE 40584204763 20-06-2011 10:10:4820 de junho de 2011 às 5:56 pm #99728felipeg
Participante[quote=”mpungan”:20ggecwh]Bom, o select esta ai abaixo. Acrescentamos mais redologs, e parece que o problema deixo de existir.
SELECT thread#,group#,sequence#,bytes,
members,archived,
status,first_change#,
TO_CHAR(first_time, ‘DD-MM-YYYY HH24:MI:SS’) first_time
FROM
sys.v_$log
ORDER BY
thread#,
group#1 1 27752 524288000 1 YES INACTIVE 40583949638 20-06-2011 10:00:13
1 2 27755 524288000 1 NO CURRENT 40584553864 20-06-2011 10:22:41
1 3 27750 524288000 1 YES INACTIVE 40583895653 20-06-2011 09:57:29
1 4 27751 524288000 1 YES INACTIVE 40583943871 20-06-2011 09:59:45
1 5 27753 524288000 1 YES INACTIVE 40584009648 20-06-2011 10:03:27
1 6 27754 524288000 1 YES INACTIVE 40584204763 20-06-2011 10:10:48[/quote]Perfeito!
Agora uma dica de amigo, daqueles que não gostam de ver as pessoas sofrendo no futuro…
Multiplexe os seus redo logs.
http://download.oracle.com/docs/cd/B193 … m#i1006249
Atenciosamente,
Felipe.20 de junho de 2011 às 6:20 pm #99730CleitonHanzen
Participante[quote=”felipeg”:1obe41t8]
Perfeito!Agora uma dica de amigo, daqueles que não gostam de ver as pessoas sofrendo no futuro…
Multiplexe os seus redo logs.
http://download.oracle.com/docs/cd/B193 … m#i1006249
Atenciosamente,
Felipe.[/quote]Opá..
Concordo com o Felipe, multiplexar os redos é um boa prática que pode nos salvar de alguns problemas no futuro.
Outro detalhe: 500MB de redo?? Qual o tamanho dessa base?
O unico banco que temos 500MB de redo é numa base com 1TB, em RAC com 20 grupos por servidor. Em bancos menores, o melhor a ser feito é reduzir o tamanho e aumentar na quantidade (uso por padrão de 6 a 10 grupos de 50mb ou 100mb). Pq tamanho menor? Pq em caso de “perda” desse grupo de redo, a quantidade de alterações perdidas será bem menor. Depende a base, pode demorar dias para ter 500MB de alteração.
20 de junho de 2011 às 6:36 pm #99731felipeg
Participante[quote=”CleitonHanzen”:103x3qbe]
Opá..Concordo com o Felipe, multiplexar os redos é um boa prática que pode nos salvar de alguns problemas no futuro.
Outro detalhe: 500MB de redo?? Qual o tamanho dessa base?
O unico banco que temos 500MB de redo é numa base com 1TB, em RAC com 20 grupos por servidor. Em bancos menores, o melhor a ser feito é reduzir o tamanho e aumentar na quantidade (uso por padrão de 6 a 10 grupos de 50mb ou 100mb). Pq tamanho menor? Pq em caso de “perda” desse grupo de redo, a quantidade de alterações perdidas será bem menor. Depende a base, pode demorar dias para ter 500MB de alteração.[/quote]
Cleiton,
Dimensionar o tamanho dos redos é algo muito subjetivo que varia não apenas só pelo tamanho da base, mas por uma outra série de fatores, como , por exemplo, a quantidade de dados que são trabalhados e a frequencia.
Você pode ter um banco de 1TB e só realizar 50MB de transações por dia como pode ter um banco de 10Gb que faz 1Gb de transação por hora, varia muito.
O ideal é que o sistema realize switchs de 15 a 25 minutos.
Recomendo ler o note 781999.1 “General Guideline For Sizing The Online Redo Log Files”.
Nesse mesmo note ele comenta sobre essa questão de tamanho da seguinte forma:
“It may not always be possible to provide a specific size recommendation for redo log files, but redo log files in the range of a hundred megabytes to a few gigabytes are considered reasonable. Size your online redo log files according to the amount of redo your system generates. A rough guide is to switch logs at most once every twenty minutes.”
Ou seja, ele já começa sugerindo um mínimo de centenas de Mbs.
Esse post do chiappa cita a mesma coisa:
http://www.mail-archive.com/oracle_br@y … 38378.htmlAtenciosamente,
Felipe.20 de junho de 2011 às 9:13 pm #99736mpungan
ParticipanteValeu pelas dicas pessoal, já resolvemos o problema, acrescentamos mais redo log no banco e o problema foi corrigido.
-
AutorPosts
- Você deve fazer login para responder a este tópico.