LOGs gigantes, o que fazer?

terça-feira, 29 de setembro de 2009

Me deparei com a seguinte situação:

Servidor com cinco instâncias SQL, sendo três 2000 e duas 2005. Onde eu precisava criar outras duas (uma 2000 e outra 2005). A máquina tem Win 2003 Server, mas com 10 GB no C:\. Estas cinco instâncias iniciais continham os mdf´s e ldf´s na partição E:\.

Legal... Como organizar esse server?

Primeiro, foi necessário fazer a instalação de ambas instâncias.
Segundo, o cliente me disponibilizou arquivos .BAK para restaurar nessas novas instâncias (cerca de 30 de tamanhos variados).

Pouco a pouco foi restaurando os databases, mas um determinado BAK tinha um LOG gigantesco e para ajudar, os bancos tinham o Recovery Model FULL... Para o tamanho deste servidor e levando em consideração as demais instâncias, seria inviável continuar a restaurar os demais backups. Então fiz o seguite:


- Find no server para todos os LDF´s;
- Depois descobri este comandinho:
DBCC SQLPERF (LOGSPACE):



Database Name Log Size (MB) Log Space Used (%) Status
--------------- ------------- ------------------ -----------
master 0.4921875 45.43651 0
tempdb 0.4921875 58.26358 0
model 0.4921875 47.22222 0
msdb 2.242188 35.25697 0
DFIN465 0.9921875 33.95669 0
DCRD705 10.92969 93.71873 0



- Identificados os databases respectivos, reduzi o log de cada um da seguinte maneira:

USE dbTeste2
GO

SP_HELPDB dbTeste2 -- VERIFICAR DADOS DE ARQUIVOS FÍSICOS QUE COMPÕE O BANCO DE DADOS
GO



name db_size owner dbid created status compatibility_level
-------- ------------- ------- ------ ------------ -------------------------------------------------------------------------------------------------------- ------ ----------- ---------------------------------------------------------------------------------------------------- -------------------
dbTeste2 9.50 MB USER1 8 Oct 1 2009 Status=ONLINE, Updateability=READ_WRITE, UserAccess=MULTI_USER, Recovery=FULL, Version=539, Collation=SQL_Latin1_General_CP1_CI_AS, SQLSortOrder=52, IsTornPageDetectionEnabled, IsAutoCreateStatistics, IsAutoUpdateStatistics 80

name fileid filename filegroupsize maxsize growth usage
-------------- --------------------------------------------------- -------------- --------- ----------------- ---------
dbTeste2_Data 1 E:\MSSQL\BNBSQL00H\DATA\BRQ_DCRD705_Data.mdf PRIMARY 4608 KB Unlimited 1024 KB data only
dbTeste2_Log 2 F:\MSSQL\BNBSQL00H\LOG\BRQ_DCRD705_Log.ldf NULL 5120 KB Unlimited 1024 KB log only



CHECKPOINT -- EFETUA ESCRITA DE DADOS GRAVADOS NO LOG DIRETAMENTE NO DISCO
GO

BACKUP LOG dbTeste2 WITH TRUNCATE_ONLY -- LIMPA OS DADOS DO LOG
GO

DBCC SHRINKFILE(dbTeste2_Log,1) -- TRUNCAR O LOG NÃO SIGNIFICA QUE O ARQUIVO DE DADOS ESTÁ LIMPO. ESTE COMANDO DIMINUI O ARQUIVO FÍSICO PARA O TAMANHO ESPECIFICADO DE 1 MB
GO

DBCC SHRINKFILE(dbTeste2_Log,1) -- NOVAMENTE EXECUTADO ESTE COMANDO PARA GARANTIR O PROCESSO
GO

SP_HELPDB dbTeste2 -- VERIFICAR NOVAMENTE O TAMANHO DOS DADOS

Repara que a coluna size para o log agora tem 1024 KB!

Pronto... depois disso consegui seguir com minha atividade.

Próximo passo é migrar estas novas intâncias para um novo servidor, afinal, o limite está próximo.

DBA de saia

Olá... Sou Renata, formada em "Criação e Desenvolvimento de Web Sites" pela Anhembi Morumbi, pós graduada em "Administração em Banco de Dados Oracle" pela FIAP e após um curso de 1 ano como cabeleireira (para desbaratinar), estou concluindo os cursos de SQL Server 2008 na Braz e Figueiredo. Os cursos são 6231, 6232 e 2778.

Gente, adoro SQL Server, plataforma Microsoft e coisas usuais, intuitivas, interfaces gráficas e tudo o que facilita a vida da gente.

DBA´s das antigas gostam muito de montar e rodar scripts manualmente. Me encaixo em outra geração, a que preza a facilidade e rapidez, sem deixar de lado a qualidade.

Embora ainda trabalhe com Oracle, gosto mais do SQL e pretendo ser uma excelente DBA.

Este blog foi criado para ajudar a mim e a quem se encaixar nesse perfil!

Lets Go!!!