none
Banco em recovery RRS feed

  • Pergunta

  • Boa tarde.

    Tenho uma máquina que tem alguns bancos de dados. Essa maquina é desligada todos os dias.

    Muitas vezes acontece de alguns databases entrar em recovery e ficar um bom tempo nesse modo, depois de um tempo volta ao normal. Porque isso acontece?

    Obrigada

     

    quarta-feira, 26 de outubro de 2011 15:44

Respostas

  • Boa Noite,

    Honestamente falando não é uma boa prática "desligar" o servidor de banco de dados. Servidores não foram feito para serem desligados, mas pelo contrário. Devem ficar ligados até onde for possível, pois, quanto mais tempo eles ficarem ligados, maior será sua taxa de disponibilidade. Há alguma razão para "desligar" todos os dias ?

    Todas as operações de escrita de um banco de dados são gravados no log de transações e o processo de checkpoint assegura que essas alterações são transpostas para os arquivos de dados. Ocorre que o "desligamento" deve ocorrer no meio de um checkpoint deixando o arquivo de dados "no meio do caminho" e portanto inconsistente. Quando o SQL Server sobe, ele precisa reaplicar o que ficou pra trás (REDO) e desfazer o que ficou no meio (UNDO). Até que essas tarefas sejam executadas, o banco não está íntegro. No caso do Enterprise, só com o REDO, a base já fica liberada (o que estiver no UNDO fica bloqueado até que esse processo termine).

    Isso ocorre sempre que o SQL Server é reiniciado. Às vezes o RECOVERY ocorre tão rápido que você nem visualiza a base em Recovery, mas no seu caso, é bem possível que houvesse uma longa transação em andamento.

    [ ]s,

    Gustavo Maia Aguiar
    Blog: http://gustavomaiaaguiar.wordpress.com
    Vídeos: http://www.youtube.com/user/gmasql


    Classifique as respostas. O seu feedback é imprescindível
    quinta-feira, 27 de outubro de 2011 00:24

Todas as Respostas

  • Elisangela,

     

    Creio que seja o banco voltando-se a um estado consistente a partir do arquivo de log das bases.


    Fabrizzio A. Caputo
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com
    quarta-feira, 26 de outubro de 2011 15:50
    Moderador
  • Boa Noite,

    Honestamente falando não é uma boa prática "desligar" o servidor de banco de dados. Servidores não foram feito para serem desligados, mas pelo contrário. Devem ficar ligados até onde for possível, pois, quanto mais tempo eles ficarem ligados, maior será sua taxa de disponibilidade. Há alguma razão para "desligar" todos os dias ?

    Todas as operações de escrita de um banco de dados são gravados no log de transações e o processo de checkpoint assegura que essas alterações são transpostas para os arquivos de dados. Ocorre que o "desligamento" deve ocorrer no meio de um checkpoint deixando o arquivo de dados "no meio do caminho" e portanto inconsistente. Quando o SQL Server sobe, ele precisa reaplicar o que ficou pra trás (REDO) e desfazer o que ficou no meio (UNDO). Até que essas tarefas sejam executadas, o banco não está íntegro. No caso do Enterprise, só com o REDO, a base já fica liberada (o que estiver no UNDO fica bloqueado até que esse processo termine).

    Isso ocorre sempre que o SQL Server é reiniciado. Às vezes o RECOVERY ocorre tão rápido que você nem visualiza a base em Recovery, mas no seu caso, é bem possível que houvesse uma longa transação em andamento.

    [ ]s,

    Gustavo Maia Aguiar
    Blog: http://gustavomaiaaguiar.wordpress.com
    Vídeos: http://www.youtube.com/user/gmasql


    Classifique as respostas. O seu feedback é imprescindível
    quinta-feira, 27 de outubro de 2011 00:24