Restore de log travado em 100% no SQL Server

Já observaram algum caso que o restore de um log acabou exibindo o percent_complete da sys.dm_exec_requests em 100 mas continuou lá por um bom tempo? Ou está presenciando isso agora? Meu restore de log está travado ou bugado?

Provavelmente não…. mesmo que seu restore de log esteja em execução há 2+ horas. Tudo vai depender das transações que existem nesse arquivo de backup de log. Primeiro vamos entender por que o valor de 100% é exibido por tanto tempo.

A operação de restore consiste em três fases. São elas:

1 – Data Copy Phase
2 – Redo Phase
3 – Undo Phase

Durante a fase de Data Copy, todos os dados contidos nos arquivos de backup são lidos e distribuídos/movidos para os arquivos de banco de dados (database files). No termino desta fase, o SQL Server irá reportar que o processo de restore atingiu o 100%. Ou seja, o percentual apresentado lá no percent_complete da sys.dm_exec_requests faz referencia apenas a atividade desta fase.

Na fase de Redo, todas as transações comitadas presentes no arquivo de transaction log quando o backup do log foi realizado são persistidas (rolled forward).

Na fase de Undo, todas as transações não comitadas presentes no arquivo de transaction log quando o backup do log foi realizado são descartadas (rolled back). Se o restore for realizado com a opção NORECOVERY, a fase de Undo é pulada (ou postergada).

Dito isso, fica claro o por que ser exibido o valor de 100% no processo de restore por tanto tempo. O percentual apresentado se refere exclusivamente a fase de Data Copy. Mas como eu descubro em qual percentual ou qual atividade/step estamos após o termino da fase de Data Copy? Bem….. até o momento que eu escrevia esse post não encontrei resposta para tal questão.

Lembrando que existem outros fatores que podem influenciar no tempo necessário para realização de um restore. Alguns são o número de VLF’s, fator I/O, fator Memoria e manipulação de datafile (crescimento/redução).

Fazia tempo que não postava nada por aqui 🙂 ….. Por agora é tudo….

Mais?

Understanding How Restore and Recovery of Backups Work in SQL Server

Esse post foi publicado em SQLServer e marcado , , , , , , , , . Guardar link permanente.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s