none
Diminuir o tamanho do log RRS feed

  • Pergunta

  • Ae galera,

    seguinte estou com uma dúvida, notei que meus logs estão com 20 gb sendo que a base está com 4 gb....

    Realizei os seguintes processos afim de diminuir o log porém não foi reduzido drasticamente....

    Clique sobre a base e fui Task>Shrink>Data base

    Selecionei a opção para reorganizar e deixar no maximo de 1% espaço livre.

    Realizei o mesmo processo Task>Shrink>File

    Para os arquivos e logs

    Porém notei que a redução foi simbolica....

    Quais sujestões a comunidade pode me dar para reduzir os logs....

    Meu ambiente: Windows 2003 Server Enterprise com SQL Server Management Studio 2005

    Obrigado.


    O sábio nunca diz tudo o que pensa, mas pensa sempre tudo o que diz.
    terça-feira, 9 de novembro de 2010 15:46

Respostas

  • Saudações Maik.

    Com relação ao tamanho de log, temos algumas considerações que, no meu entender, precisam ser citadas antes de qualquer ação;

    - Como está o Recovery Model de sua base?
    Ao verificar esta opção, busque entender os tipos Simple, Full e Bulk-Logged.

    - Sua base recebe cargas de dados com frequência?
    Dependendo de como está configurada a opção Recovery Model, cargas de dados e bases com constantes atualizações tendem a ter um log de transação extenso.

    - Você já possui uma política de backup?
    Em sua política de backup, você "poderá" inserir o passo de backup do log de transação de sua base, fazendo com que o mesmo sofra uma redução, após a rotina.

    Ao analisar/pesquisar os tópicos acima, você irá colher informações para sanar e impedir o crescimento indesejado de seu log de transações.
    No entando, para agir de forma imediatista e contornar a atual situação, sugiro o seguinte:

    No SMS digite:

    Use < nome da sua base >
    go

    CheckPoint

    -- Liberando VLF inativos
    Declare @nomebanco VarChar(100)
    Set @nomebanco = db_name()
    Backup Log @nomebanco with no_log
    print @nomebanco

    Para "encolher" o arquivo de log ( apesar de não ser a saida mais elegante )  você precisa:

    - Saber o nome de seu arquivo de log: sp_helpdb < nome da sua base>
    - Executar o comando: DBCC ShrinkFile ( < nome do arquivo de log > , < tamanho > )

    Onde <tamanho> será o novo tamanho de seu arquivo de log.

     Atenciosamente,

    Marcos Oliveira.

     

     

     

    • Marcado como Resposta Junior Galvão - MVPMVP, Moderator quinta-feira, 11 de novembro de 2010 13:20
    • Não Marcado como Resposta MaikCosta terça-feira, 23 de novembro de 2010 15:44
    • Não Marcado como Resposta MaikCosta terça-feira, 23 de novembro de 2010 15:44
    • Marcado como Resposta MaikCosta terça-feira, 23 de novembro de 2010 15:44
    • Marcado como Resposta MaikCosta terça-feira, 23 de novembro de 2010 15:44
    terça-feira, 9 de novembro de 2010 16:46

Todas as Respostas

  • Saudações Maik.

    Com relação ao tamanho de log, temos algumas considerações que, no meu entender, precisam ser citadas antes de qualquer ação;

    - Como está o Recovery Model de sua base?
    Ao verificar esta opção, busque entender os tipos Simple, Full e Bulk-Logged.

    - Sua base recebe cargas de dados com frequência?
    Dependendo de como está configurada a opção Recovery Model, cargas de dados e bases com constantes atualizações tendem a ter um log de transação extenso.

    - Você já possui uma política de backup?
    Em sua política de backup, você "poderá" inserir o passo de backup do log de transação de sua base, fazendo com que o mesmo sofra uma redução, após a rotina.

    Ao analisar/pesquisar os tópicos acima, você irá colher informações para sanar e impedir o crescimento indesejado de seu log de transações.
    No entando, para agir de forma imediatista e contornar a atual situação, sugiro o seguinte:

    No SMS digite:

    Use < nome da sua base >
    go

    CheckPoint

    -- Liberando VLF inativos
    Declare @nomebanco VarChar(100)
    Set @nomebanco = db_name()
    Backup Log @nomebanco with no_log
    print @nomebanco

    Para "encolher" o arquivo de log ( apesar de não ser a saida mais elegante )  você precisa:

    - Saber o nome de seu arquivo de log: sp_helpdb < nome da sua base>
    - Executar o comando: DBCC ShrinkFile ( < nome do arquivo de log > , < tamanho > )

    Onde <tamanho> será o novo tamanho de seu arquivo de log.

     Atenciosamente,

    Marcos Oliveira.

     

     

     

    • Marcado como Resposta Junior Galvão - MVPMVP, Moderator quinta-feira, 11 de novembro de 2010 13:20
    • Não Marcado como Resposta MaikCosta terça-feira, 23 de novembro de 2010 15:44
    • Não Marcado como Resposta MaikCosta terça-feira, 23 de novembro de 2010 15:44
    • Marcado como Resposta MaikCosta terça-feira, 23 de novembro de 2010 15:44
    • Marcado como Resposta MaikCosta terça-feira, 23 de novembro de 2010 15:44
    terça-feira, 9 de novembro de 2010 16:46
  • Acho muito importante uma lida no ótimo artigo do Gustavo Maia sobre este assunto:

    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!671.entry

    *Leia também no mesmo artigo a Parte I logo no início.


    http://muramatsu.com.br
    quarta-feira, 10 de novembro de 2010 12:38
  • Pode executar os seguintes comandos:

     exec sp_dboption 'nome_banco','trunc. log on chkpt.','true'
     exec sp_dboption 'nome_banco','autoshrink','true'
     DBCC SHRINKDATABASE (nome_banco, 10)

    Na linha   DBCC SHRINKDATABASE (nome_banco, 10), o valor 10 representa o percentual que vc quer deixar livre alocado. Se sua base tiver uma movimentação muito intensa, esse percentual pode ser maior. As minhas sempre deixo 10, mesmo as mais movimentadas.

    Esse comando é usado apenas em bases onde vc NÃO faz o backup transacional. Pelos seguintes motivos: primeiro que ao rodar esse comando, ele irá alterar o recovery model da base para Simple, impedindo o backup transacional; outra coisa porque se vc faz o backup transacional, no momento do backup,o log já será enxugado.

    Eu costumo colocar esses comandos em um job a agendo para rodar todos os dias à noite.

    Espero ter ajudado!!!

    quinta-feira, 11 de novembro de 2010 14:13
  • Boa Tarde Pessoal,

    DBCC ShrinkFile (TESTE_TI,10)

    teve uma redução de 20 gb para 10 mb.....

    0.o

    nossa fiquei assustado o que isso podera influenciar na consistencia das informações?

    Me informe qual sera a desvantagem de realizar esse procedimento?

    Obrigado a todos os posts.


    O sábio nunca diz tudo o que pensa, mas pensa sempre tudo o que diz.
    terça-feira, 16 de novembro de 2010 15:37
  • Alguem pode me responder qual é a desvantagem deste comando?

    realizei a base teste foi lindo mas estou com um certo receio em realizar o mesmo na base oficial.


    O sábio nunca diz tudo o que pensa, mas pensa sempre tudo o que diz.
    terça-feira, 23 de novembro de 2010 13:20
  • Maik,

    A desvantagem é se vc faz backup de log e o mesmo não estiver atualizado. Pois com isso o SQL irá matar todo o log apagando todas as transações de comandos delete, insert, etc que foram feitos.

    Agora se vc não usa este tipo de backup, manda bala. (Claro, sempre com um backup atualizado).

     

    Att.,


    Marco Antônio Pinheiro / MCTS - Database Developer 2008 http://marcoantoniopinheiro.blogspot.com Se o post foi útil, não esqueça de marcá-lo.
    terça-feira, 23 de novembro de 2010 13:26