Casos do Dia a Dia: Transaction Log não diminui – Nível Hard
Olá Pessoal,
Recebi um alerta de LOG FULL em um dos clientes que realizo um monitoramento diário do BD com minha Consultoria SQL Server.
Até aí, nada de mais. Seria um atendimento de rotina onde provavelmente o Log não era limpo devido a algum problema no Backup de Log ou alguma transação que estaria segurando o arquivo de Log e não deixando ele ser limpo pelo backup.
O Log da base estava com 800 MB e com 80% de utilização.
A primeira coisa que fiz foi validar o backup de log que era executado a cada 10 minutos. O job de backup do log estava executando com sucesso para essa database, mas o log não estava sendo limpo.
O segundo passo foi analisar se tinha algum processo segurando o log desse banco de dados. No momento que estava atuando, o servidor estava praticamente parado. Não tinha nenhuma transação ativa na base, nenhum lock no banco, nenhum processo em execução e as conexões que existiam na base estavam todas como sleeping.
Matei algumas conexões que pareciam suspeitas, mas em seguida eu rodava o backup de log e nada do log limpar.
Usei a função fn_dblog para ler o Transaction Log dessa base e só eram retornadas 12 linhas. Como é possível um log ter mais de 500 MB de utilização e só ter 12 linhas???
Como eu disse no título desse post, esse problema no Log era Nível Hard!
Coloquei meu Networking de SQL Server para funcionar e, após algumas sugestões de amigos, o Demétrio (Blog) me passou um artigo do Sr. Paul Randal que quando lí, matou a charada na hora!!!
Paul Randal é o cara!!! Meu Networking também é o cara!!!
Segue o artigo:
http://www.sqlskills.com/blogs/paul/why-is-log_reuse_wait_desc-saying-log_backup-after-doing-a-log-backup/
Seguem as partes do artigo que mataram a charada:
If you have a transaction log that is not growing, and you’re taking regular log backups, but thelog_reuse_wait_desc remains LOG_BACKUP, this is because zero VLFs were cleared when the previous log backup was performed.
How can that happen?
Imagine a database where there’s very little insert/update/delete/DDL activity, so in between your regular log backups there are only a few log records generated, and they’re all in the same VLF. The next log backup runs, backing up those few log records, but it can’t clear the current VLF, so can’t clear log_reuse_wait_desc. As soon as there are enough changes in the database that the current VLF fills up and the next VLF is activated, the next log backup should be able to clear the previous VLF and then thelog_reuse_wait_desc will revert to NOTHING. Until the next log backup occurs and isn’t able to clear the current VLF, in which case it will go back to LOG_BACKUP again.
Olhando os VLFs do arquivo de log dessa base com o comando DBCC LOGINFO, verifiquei que um dos VLFs estava muito grande. Como o ambiente tinha pouca atualização e esse VLF era grande, o SQL não estava utilizando outros VLFs e por isso que o backup do Log não estava conseguindo limpar nenhum VLF, como o Paul Randal explicou no artigo dele.
O que fazer então?
Agora o problema mudou para o modo Easy.
Para resolver o problema, criei uma tabela nessa base e fiz um loop de insert para crescer o log.
Isso mesmo, gerei registros de log para poder limpar esse log depois. Estranho né!??
Após os inserts, o status de mais 2 VLFs foram alterados para o valor 2 conforme figura abaixo (A – como estava antes do insert | D – Os status alterados depois do insert).
Status VLF:
Feito isso, rodei novamente o job de backup do log e a utilização do log baixou para 1%. O SQL Server manteve o log ativo em outro VLF e conseguiu limpar o log do VLF gigante liberando o espaço utilizado no transaction log.
Eu estava na linha de que tinha algum processo perdido que não estava encontrando e estava segurando o log. Mas a solução estava na direção contrária.
Para evitar que esse problema volte a acontecer, tive que balancear os VLFs desse Transaction Log.
Segue abaixo um artigo excelente para te ajuda a balancear os VLFs. Nele também tem links para outros artigos para que você possa entender tudo sobre VLF:
http://edvaldocastro.com/vlf_control/
Como eu sempre digo, vivendo e aprendendo.
Fica de aprendizado para mim e agora também para vocês por meio desse Blog.
Gostou dessa dica?
Cadastre seu e-mail para receber novos Posts e curta minha Página no Facebook para receber Dicas de Leituras e Eventos sobre SQL Server.
Confira mais experiências do Dia a Dia de um DBA no meu Treinamento de Tarefas do Dia a Dia de um DBA.
Abraços,
Fabrício Lima
MCITP – Database Administrator
Consultor e Instrutor SQL Server
Trabalha com SQL Server desde 2006
Muito interessante, Fabricio!
Só uma curiosidade, qual era o valor do Autogrowth desta base para que este arquivo ficasse tão grande?
[]s
Obrigado Gustavo.
Provavelmente o crescimento default de 1 MB. Como é uma base do SAP, tem que pedir autorização até para o Papa para mudar essas configurações.
Olá Fabricio,
Não conheço SQL. Sou Analista de Suporte e estou com esse problema não para de chegar LOGs:
“The transaction log for database ‘ABACOS’ is full. To find out why space in the log cannot be reused, see the log_reuse_wait_desc column in sys.databases”
Visualizo os meus VLFs com o comando que mostro mas como vejo se ele está ggrande como era no seu caso? E você tem um passo a passo para eu poder executar aqui?
Qualquer ajuda é bem vinda.
Resultado do VLFs
Field FileSize StartOffset FSeqNo Status Parity CreatLSN
2 10420224 8192 34522 2 128 0
2 10420224 10428416 34519 2 128 0
2 10420224 20848640 34521 2 128 0
2 10674176 31268864 34520 2 64 0
2 390594560 41943040 34440 0 64 34439000001765400004
2 464453632 432537600 34444 0 64 34443000000262300005
2 11206656 896991232 34446 0 64 34445000001984600091
2 11206656 908197888 34447 0 64 34445000001984600091
2 11206656 919404544 34448 0 64 34445000001984600091
2 11206656 930611200 34449 0 64 34445000001984600091
2 11206656 941817856 34450 0 64 34445000001984600091
2 11206656 953024512 34451 0 64 34445000001984600091
2 11206656 964231168 34452 0 64 34445000001984600091
2 11272192 975437824 34453 0 64 34445000001984600091
2 12320768 986710016 34454 0 64 34453000002156600019
2 12320768 999030784 34455 0 64 34453000002156600019
2 12320768 1011351552 34456 0 64 34453000002156600019
2 12320768 1023672320 34457 0 64 34453000002156600019
2 12320768 1035993088 34458 0 64 34453000002156600019
2 12320768 1048313856 34459 0 64 34453000002156600019
2 12320768 1060634624 34460 0 64 34453000002156600019
2 12451840 1072955392 34461 0 64 34453000002156600019
2 13565952 1085407232 34462 0 64 34461000002358800502
2 13565952 1098973184 34463 0 64 34461000002358800502
2 13565952 1112539136 34464 0 64 34461000002358800502
2 13565952 1126105088 34465 0 64 34461000002358800502
2 13565952 1139671040 34466 0 64 34461000002358800502
2 13565952 1153236992 34467 0 64 34461000002358800502
2 13565952 1166802944 34468 0 64 34461000002358800502
2 13631488 1180368896 34469 0 64 34461000002358800502
2 14876672 1194000384 34470 0 64 34469000002595000115
2 14876672 1208877056 34471 0 64 34469000002595000115
2 14876672 1223753728 34472 0 64 34469000002595000115
2 14876672 1238630400 34473 0 64 34469000002595000115
2 14876672 1253507072 34474 0 64 34469000002595000115
2 14876672 1268383744 34475 0 64 34469000002595000115
2 14876672 1283260416 34476 0 64 34469000002595000115
2 15269888 1298137088 34477 0 64 34469000002595000115
2 16384000 1313406976 34478 0 64 34477000002934900019
2 16384000 1329790976 34479 0 64 34477000002934900019
2 16384000 1346174976 34480 0 64 34477000002934900019
2 16384000 1362558976 34481 0 64 34477000002934900019
2 16384000 1378942976 34482 0 64 34477000002934900019
2 16384000 1395326976 34483 0 64 34477000002934900019
2 16384000 1411710976 34484 0 64 34477000002934900019
2 16646144 1428094976 34485 0 64 34477000002934900019
2 18022400 1444741120 34486 0 64 34485000003177100549
2 18022400 1462763520 34487 0 64 34485000003177100549
2 18022400 1480785920 34488 0 64 34485000003177100549
2 18022400 1498808320 34489 0 64 34485000003177100549
2 18022400 1516830720 34490 0 64 34485000003177100549
2 18022400 1534853120 34491 0 64 34485000003177100549
2 18022400 1552875520 34492 0 64 34485000003177100549
2 18350080 1570897920 34493 0 64 34485000003177100549
2 19857408 1589248000 34494 0 64 34493000003509900553
2 19857408 1609105408 34495 0 64 34493000003509900553
2 20316160 1628962816 34496 0 64 34495000003827500003
2 20316160 1649278976 34515 0 64 34495000003827500003
2 20316160 1669595136 34523 2 64 34495000003827500003
2 20316160 1689911296 0 0 0 34495000003827500003
2 20316160 1710227456 0 0 0 34495000003827500003
2 20316160 1730543616 0 0 0 34495000003827500003
2 20316160 1750859776 0 0 0 34495000003827500003
2 20709376 1771175936 0 0 0 34495000003827500003
2 131072000 1791885312 0 0 0 34496000000848400007
2 131072000 1922957312 0 0 0 34496000000848400007
2 131072000 2054029312 0 0 0 34496000000848400007
2 131072000 2185101312 0 0 0 34496000000848400007
2 131072000 2316173312 0 0 0 34496000000848400007
2 131072000 2447245312 0 0 0 34496000000848400007
2 131072000 2578317312 0 0 0 34496000000848400007
2 131072000 2709389312 0 0 0 34496000000848400007
2 131072000 2840461312 0 0 0 34496000000848400007
2 131072000 2971533312 0 0 0 34496000000848400007
2 131072000 3102605312 0 0 0 34496000000848400007
2 131072000 3233677312 0 0 0 34496000000848400007
2 131072000 3364749312 0 0 0 34496000000848400007
2 131072000 3495821312 0 0 0 34496000000848400007
2 131072000 3626893312 0 0 0 34496000000848400007
2 131203072 3757965312 0 0 0 34496000000848400007
2 131072000 3889168384 0 0 0 34496000000928800004
2 131072000 4020240384 0 0 0 34496000000928800004
2 131072000 4151312384 0 0 0 34496000000928800004
2 131072000 4282384384 0 0 0 34496000000928800004
2 131072000 4413456384 0 0 0 34496000000928800004
2 131072000 4544528384 0 0 0 34496000000928800004
2 131072000 4675600384 0 0 0 34496000000928800004
2 131072000 4806672384 0 0 0 34496000000928800004
2 131072000 4937744384 0 0 0 34496000000928800004
2 131072000 5068816384 0 0 0 34496000000928800004
2 131072000 5199888384 0 0 0 34496000000928800004
2 131072000 5330960384 0 0 0 34496000000928800004
2 131072000 5462032384 0 0 0 34496000000928800004
2 131072000 5593104384 0 0 0 34496000000928800004
2 131072000 5724176384 0 0 0 34496000000928800004
2 131072000 5855248384 0 0 0 34496000000928800004
Que problema estranho hein… top a resolução.
num é… assim que aprendemos mais.