Pular para o conteúdo
Visualizando 12 posts - 1 até 12 (de 12 do total)
  • Autor
    Posts
  • #99719
    mpungan
    Participante

      Pessoal, 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_.log

      #99720
      Sousa04
      Participante

        ao 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?

        #99721
        mpungan
        Participante

          500 Mb cada redo. E qual a solução?

          #99722
          Sousa04
          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.

            #99723
            mpungan
            Participante

              É um banco transacional, e se aumentar o número de redos. É uma alternativa ou não?

              #99724
              Sousa04
              Participante

                sim é uma alternativa. Voce tbm pode aumentar o número de redos.

                Qts vc já tem?

                #99725
                felipeg
                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.

                  #99727
                  mpungan
                  Participante

                    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

                    #99728
                    felipeg
                    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.

                      #99730
                      CleitonHanzen
                      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.

                        #99731
                        felipeg
                        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.html

                          Atenciosamente,
                          Felipe.

                          #99736
                          mpungan
                          Participante

                            Valeu pelas dicas pessoal, já resolvemos o problema, acrescentamos mais redo log no banco e o problema foi corrigido.

                          Visualizando 12 posts - 1 até 12 (de 12 do total)
                          • Você deve fazer login para responder a este tópico.