MSSQL – TEMPDB – O que fazer quando receber um alarme por falta de espaço

18 05 2012

   Inicio esse post com uma parte do artigo do MSDN explicando o que é uma TEMPDB.

   O banco de dados do sistema tempdb é um recurso global disponível a todos os usuários conectados a uma instância de SQL Server e é usado para manter o seguinte:
  • Os objetos de usuário temporários criados explicitamente como: tabelas temporárias globais ou locais, procedimentos armazenados temporários, variáveis de tabela ou cursores.
  • Objetos internos criados por Mecanismo de Banco de Dados do SQL Server, por exemplo, tabelas de trabalho para armazenar resultados intermediários para spool ou classificação.
  • Versões de linha geradas por transações de modificação de dados em um banco de dados que usa a leitura de confirmados usando transações de isolação de controle de versão de linha ou isolação de instantâneo.
  • As versões de linhas geradas por meio de transações de modificação de dados para recursos como: operações de índice on-line, vários conjuntos de resultados ativos (MARS) e gatilhos AFTER.
   As operações em tempdb são registradas minimamente. Isso permite que transações sejam revertidas. tempdb é recriado cada vez que SQL Server é iniciado, de modo que o sistema sempre começa com uma cópia limpa do banco de dados. As tabelas temporárias e procedimentos armazenados são descartados automaticamente ou desconectados e nenhuma conexão fica ativa quando o sistema é desligado. Portanto, nunca há nada em tempdb a ser gravado de uma sessão de SQL Server para outra. As operações de backup e restauração não são permitidas em tempdb.

  Muitas vezes em determinados momentos, você DBA pode se deparar com o um alarme que o database TEMPDB, que é um recurso de armazenamento global temporário esta próximo de atingir 100% de ocupação.
Isso é um problema, mas que pode ser resolvido com algumas ações:

Passo 1 – Identificar a query ofensora

     A melhor forma de identificar é executando uma query de monitoramento que retorne as informações que você precisa para a analise. Para isso execute no console:

select top 10
t1.session_id,
t1.request_id,
t3.hostname,
t3.loginame,
t3.program_name,
db_name (t3.dbid) as dbname,
t1.task_alloc  * (8.0/1024.0) as Alocado_MB, --qtd de paginas
t1.task_dealloc  * (8.0/1024.0)as Desalocado_MB, --qtd de paginas

    (SELECT SUBSTRING(text, t2.statement_start_offset/2 + 1,
          (CASE WHEN statement_end_offset = -1
              THEN LEN(CONVERT(nvarchar(max),text)) * 2
                   ELSE statement_end_offset
              END - t2.statement_start_offset)/2)
     FROM sys.dm_exec_sql_text(t2.sql_handle)) AS query_text,
(SELECT query_plan from sys.dm_exec_query_plan(t2.plan_handle)) as query_plan

from      (Select session_id, request_id,
sum(internal_objects_alloc_page_count +   user_objects_alloc_page_count) as task_alloc,
sum (internal_objects_dealloc_page_count + user_objects_dealloc_page_count) as task_dealloc
       from sys.dm_db_task_space_usage
       group by session_id, request_id) as t1,
       sys.dm_exec_requests as t2,
       sys.sysprocesses as t3
where
t3.loginame <> '' and
t1.session_id = t2.session_id and
(t1.request_id = t2.request_id) and
t1.session_id = t3.spid and
      t1.session_id > 50
order by t1.task_alloc DESC

   O importante nesse caso é analisar o que essa query esta fazendo e o quanto está alocando no momento do pico.
Aguarde alguns segundos e execute novamente, e nesse caso, analise o próximo campo que será o quanto esta liberando de espaço. O que isso quer dizer:
Na verdade se a query esta usando muito espaço, mas ao executar novamente verifica-se que o valor livre esta crescendo, quer dizer que essa query já fez o que precisava e gradativamente esta devolvendo esse espaço a TEMPDB. Nesse caso somente aguarde que a TEMPDB será liberada em breve e o alarme vai parar. O ultimo campo não exibido aqui é o plano de execução.
Caso a query continue crescendo e consumindo um espaço exorbitante da TEMPDB a ação correta a tomar é a seguinte:

Passo 2 – Analizar as configurações da TEMPDB

   A TEMPDB está setada com um valor X pré-supondo que é o necessário para o armazenamento necessário das transações.
Para verificar essas informações clique com o botão direito no database TEMPDB > Properties, como mostra a figura abaixo.

   Clique em files, como mostra a figura abaixo:

   O arquivo lógico que precisamos analisar chama-se TEMPLOG, verifique para qual caminho fisico que ele esta apontando, que nesse caso é o *E:* (Não exibido aqui, mas fica ao lado da imagem abaixo) e clique  no botão ao lado das informações de tamanho como mostra a figura a seguir

Nesse momento será exibidos os parâmetros de crescimento do templog, como mostra a figura aseguir.
Caso haja um crescimento de informações, ela irá crescer gradativamente, desde que o parâmetro AutoGrowth esteja setado.
No parâmetro File Growth está definido como será esse crescimento, nesse caso a cada 1GB.
E  por fim analisar o parâmetro Maximum File Size, que define o valor máximo total que esse database pode crescer fisicamente no disco, nesse caso 20GB.

Antes de alterar qualquer parâmetro é importante saber o quanto espaço temos livre no disco em que o database esta armazenado, como vimos anteriormente.
Caso o disco tenha espaço aumente o valor máximo, gradativamente a cada 10GB, até que seja sanado o problema. Depois, quando tudo terminar volte o valor, pois essa é apenas uma medida paliativa.

Passo 3 – Estudando a query ofensiva e sugerindo tunning para melhoria.

Aumentar tamanho de disco, na verdade é uma medida de emergência.
O que deve ser feito com calma é um estudo da query ofensiva e resolver definitivamente o problema. Para isso é necessário analizar o plano de execução dessa query para entender onde esta o auto consumo do banco.
Para isso clique no link que o aparece no resultado da execução da query de monitoramento ( query mostrada no inicio desse documento ).
Será exibido uma pagina em xml com o plano de execução, como mostra a figura a seguir:

    Esse é o plano de execução da query ofensiva. O SQL Server automaticamente detecta onde esta o problema e sugere uma ação de “tunning” para melhorar a query. Essa sugestão é mostrada no cabeçalho da página como mostra o topo da imagem.
Ao executar a query de monitoramento sabemos qual host, login e programa esta executando a tal query. Entre em contato com o departamento responsável por essa query notificando o auto consumo.

Passo 4 – Matando o SQL Ofensor !!!

Quando nada resolver … é só matar essa query.
Para isso é necessário primeiro descobri o SPID dessa query com o comando a seguir.

SELECT @@SPID AS 'ID', SYSTEM_USER AS 'Login Name', USER AS 'User Name'

Agora é só matar o processo com o comando:

kill SPID

Passo 5 – Algumas referência.


Artigo Completo MSDN Sobre TEMPDB

http://www.red-gate.com/specials/Grant.htm

Juarez Silva, DBA Senior  que contribuiu com o desenvolvimento do script de monitoração.

Espero ter ajudado um pouco …

Abraços

Kenia Milene





Galaxy Note … é o que tem de melhor em SmartPhones !!!!

10 05 2012

Bom …. depois da espera finalmente meu Galaxy Note chegou ….

É o que estão chamando de Flobet, ou seja, a união de smartphone com Tablet.

Confesso que estou adorando !!!!!

O unico problema é que são tantos recursos que a bateria só dura um dia !!!!!!

Eu recomendo !!!!!

Abraços

Kenia Milene





Agora eu Também tenho Twitter

10 05 2012

Pois é …..

Depois de muito relutar amigos do blog … acabei cedendo …

Agora eu também tenho twitter @keniamilene

Agora fica mais fácil a comunicação !!!!

Abraços a Todos

@keniamilene





Uma Rapidinha com AIX

4 08 2010

Alguem conhece o Mução ??? aquele das pegadinha nordestinas ????
Pois então …. te apresento o AIX …

Pegadinha do AIX … hehehehehehe

(AIX) Alo …
(DBA) Sim ….
(AIX) Seu script não esta funcionando …
(DBA) Como assim ????
(AIX) Não esta !!!! esta retornando um erro …
(AIX) … Seu incompetente … o problema é no seu banco !!!!
(DBA) RRRRRR quem vc pensa que é ?????
(DBA) Deixa eu ver o erro …
(AIX) 3074FEB7 0515214310 T H fscsi0 ADAPTER ERROR
(DBA) Que estranho ….
(DBA) Isso é erro de disco … não de banco …
(AIX) Se vira nego … seu script que retornou !
(DBA) Ta bem mané .. vou te provar que o problema é de Hardware e não do banco …
(DBA) E só pra calar sua boca … o script é de gerenciamento de disco … mas vamos lá
(AIX) Ta … to aguardando !!!
(DBA)

# errpt -aj 3074FEB7 > disk_error.txt
vi disk_error.txt
/3074FEB7

LABEL: FSCSI_ERR4
IDENTIFIER: 3074FEB7

Date/Time: Fri May 14 10:05:32
Sequence Number: 84628
Machine Id: XXXXXXXXXXXX
Node Id: SERVER
Class: H
Type: TEMP
Resource Name: fscsi0
Resource Class: driver
Resource Type: efscsi
Location: U0.1-P2-I3/Q1

Description
ADAPTER ERROR

Probable Causes
ADAPTER HARDWARE OR CABLE
ADAPTER MICROCODE
FIBRE CHANNEL SWITCH OR FC-AL HUB

Failure Causes
ADAPTER
CABLES AND CONNECTIONS
DEVICE

Recommended Actions
PERFORM PROBLEM DETERMINATION PROCEDURES
CHECK CABLES AND THEIR CONNECTIONS
VERIFY DEVICE CONFIGURATION</
p>

(DBA) Alo … AIX ????
(AIX) Sim …
(DBA) Não disse ???
(DBA) O problema é no disco mané …
(DBA) VocÊ tem um problema físico …
(DBA) Pode ser o disco, os cabos, HBA, etc ….
(DBA) Sendo assim … liga pro seu adm. de rede !!
(AIX) HUMMM …..
(AIX) Ta ….
(DBA) Da proxima vez tenta ser mais esperto ta bem ???
(DBA) tu tu tu tu tu tu tu tu tu tu tu tu tu tu tu (Desligou o telefone)

É isso ai minha gente ….
Mais uma vez provando que nem sempre o problema é do banco …
Fiz uma brincadeira pra descontrair … mas a coisa é séria …

Fica a dica …
Ate +
Kenia Milene





Sincronizar BlackBerry Com Evolution (Ubuntu – Jaunty)

14 04 2010

Bom galera,

Depois de apanhar e perder a minha agenda do BlackBerry fazendo testes hehehehe, consegui fazer o maldito sync.

Ainda tenho alguns problemas de duplicação de dados, mas eu ainda estou trabalhando nisso. Segue como fazer:

1 - Adicione a entrada a seguir no source-list e atualize a lista com apt-get update

deb http://cz.archive.ubuntu.com/ubuntu jaunty main universe

2 - Instale os seguintes pacotes:

libopensync0
opensync-plugin-evolution
opensync-plugin-file
opensyncutils
multisync-tools
libmultisync-plugin-evolution
multisync0.90
opensync-plugin-barry
libbarry0
barrybackup-gui
barry-util
opensync-plugin-barry

3 - Feche o evolution e execute o comando  a seguir para ter certeza de que fechou:

evolution –force-shutdown

Desligando evolution-data-server-2.26 (Backend para arquivo e webcal da agenda do Evolution / Backend para arquivo do Catálogo de Endereços do Evolution)
Desligando evolution-alarm-notify (Serviço de notificação de alarme da agenda do Evolution)

4 - Conecte o BlackBerry na USB

5 - Crie um novo grupo para BB ( Nesse caso, criei somente para a agenda), e adicione as 2 funcionalidades a ele:

msynctool –addgroup BlackBerry_Calendar (Grupo)
msynctool –addmember BlackBerry_Calendar evo2-sync (Sync com evolution)
msynctool –addmember BlackBerry_Calendar barry-sync (Sync com dispositivo)

6 - Configure o sync com evolution, alterando para os caminhos que apontam para o evolution (Alterando o XXXX para o usuário que esta configurando).

msynctool –configure BlackBerry_Calendar 1

<config>
<address_path>file:///home/XXXX/.evolution/addressbook/local/system</address_path>
<calendar_path>file:///home/XXXX/.evolution/calendar/local/system</calendar_path>
<tasks_path>file:///home/XXXX/.evolution/tasks/local/system</tasks_path>
</config>

7 - Para configurar a segunda parte, você precisa do número do PIN do seu dispositivo. Não sei se é a melhor forma, os especialistas em BlackBerry podem ter ideias melhores, mas eu consegui da seguinte forma:

msynctool –showgroup BlackBerry_Calendar

irá mostrar algumas informações, uma delas é o PIN e mais 2 parâmetros depois

#DebugMode
Device 3009efe 1 1
#Password secret

Pegue o IPN e digite:

btool -p 3009efe

Não sei porque cargas d’agua ele diz que esse PIN não existe e mostra o verdadeiro numero do PIN:

Blackberry devices found:
Device ID: 0x988dba0. PIN: 403c0953, Description: RIM BlackBerry Device
PIN 3009efe3 not found

Ai sim .. vc pega esse numero de pin e altera na segunda parte da configuração:

msynctool –configure BlackBerry_Calendar 2

#DebugMode
Device  403c0953 1 0
#Password secret

Após o PIN eu deixei 1 0 porque o primeiro parâmetro é se quero sincronizar a agenda e o segundo contatos. Como nesse caso quero só agenda, desabilitei o segundo.

8 - Sincronize:

msynctool –sync BlackBerry_Calendar

Pronto, esta sincronizado. Apartir desse momento você pode usar a interface gráfica para fazer o sync, mas comigo a interface gráfica só funcionou depois que fiz esse procedimento primeiro …

Para facilitar a minha vida e não bagunçar meus contatos do evolution, eu criei uma nova agenda chamada BlackBerry, criei um novo grupo chamado BlackBerry_AdressBook e antes de fazer o sync eu entrei na ferramenta gráfica cliquei em editar e alterei a agenda para Blackberry e na configuracao deixei os ultimos parametros como 0 1.

É isso ai minha gente, não sei se é a melhor forma, mas é a forma que eu consegui fazer…

Se alguem tiver outra forma mais eficiente e fácil de se fazer .. por favor poste !!!!

Abraços

Kenia Milene





BlackBerry 8350i Red Nextel

13 04 2010

É isso ai galera, agora eu também tenho um blackberry, e o meu é Nextel.

No começo eu achei ele muito grande e desajeitado … mas depois acabei me acostumando.

Vou dizer que gostei muito das funcionalidades, consigo ler, responder e escrever email com eficiência, acessar msn e todos os comunicadores possiveis, o tal APP WORLD que tem um monte de coisas bacanas pra vc gastar a sua banda hehehehe (temas, jogos, aplicativos …. )

Se você tiver tempo e paciência … vai passar algumas muitas horas pra explorar tudo que ele e o serviço BlackBerry pode oferecer …

Maaaas nem tudo são flores…..

Como todo mundo sabe, eu uso linux como desktop (Ubuntu) e estou enfrentando N dificuldades pra sincronizar minha agenda do Evolution com ele !!!!

Pra ele ser perfeito pra mim, só falta isso funcionar. Vou continuar garimpando … Assim que descobrir eu posto aqui !!!

É isso ai Pessoal .. Boa sorte pra quem também tem um, e quem não tem … pode comprar que é bacana !!!!

Kenia Milene





Sonhar Mais Um Um Sonho !!!!

15 02 2010

Eu sempre lutei por tudo que conquistei até hoje, e tenho certeza que vou ter que lutar por muita coisa ainda ….

Muitos obstaculos são encontrados pela frente … mas isso é só para a gente poder dar valor ao que foi conquistado.

Para aqueles que desistem quando encontram o primeiro obstáculo…. Segue uma música que ouvi hoje e que resume a luta de quem mata um leão por dia pra conseguir o que quer !!!!

Sonho Impossível – Maria Bethania (MP3)

Sonho Impossível

Maria Bethânia

Composição: J.Darion / M.Leigh / Ruy Guerra

Sonhar mais um sonho impossível
Lutar quando é fácil ceder
Vencer o inimigo invencível
Negar quando a regra é vender
Sofrer a tortura implacável
Romper a incabível prisão
Voar num limite provável
Tocar o inacessível chão
É minha lei, é minha questão
Virar este mundo, cravar este chão
Não me importa saber
Se é terrível demais
Quantas guerras terei que vencer
Por um pouco de paz
E amanhã se esse chão que eu beijei
For meu leito e perdão
Vou saber que valeu
Delirar e morrer de paixão
E assim, seja lá como for
Vai ter fim a infinita aflição
E o mundo vai ver uma flor
Brotar do impossível chão

Força Minha Gente !!!!!

Abraços

Kenia Milene





Como Fazer Reorg do SQL Server 2005

30 10 2009

Mudar  a Forma do Recovery

O primeiro passo seria  separar o Log e os Datafiles , mas como o banco será alterado para o modo Recovery Simple essa ação não será necessário.

Recovery Simple

Esse é o método que será adotado para as bases de dados. O simple não vai fazer gerar mais logs de transações, mais o backup full continuará sendo feito normalmente.

Ao fazer uma transação, essa é armazenada no datafile e no log de transação ao mesmo tempo, com o simple essa transação será armazenada somente no datafile.

Alterar o modo do banco para Simple:

ALTER DATABASE BANCO SET RECOVERY SIMPLE

Ou ainda pelo Management Studio

simple

Comando para fazer o backup da base de dados:

BACKUP DATABASE BANCO TO DISK = ‘CAMINHO\BANCO.BAK’

Ou pelo management Studio

backup

Reindex do Banco

Outro ponto importante é fazer o reindex dos índices das tabelas.

Existe uma Stored Procedure chamada sp_MSforeachtable que permite executar de forma recursiva umreindex para todas as tabelas dentro de um banco de dados com a utilização de uma única linha de código.

EXEC sp_MSforeachtable @command1= “DBCC DBREINDEX (‘?’, ”, 80)”

Importante saber que ao fazer o reindex o SQL faz um clone do banco, sendo assim ele cresce 100%, providencie espaço caso não haja.

SHRINK

No Microsoft SQL Server 2005, você pode reduzir um arquivo de log de transação ou os datafiles de um banco de dados para remover páginas não utilizadas. O mecanismo de banco de dados reutiliza espaço com eficiência.

Primeiramente faça o shrink do banco:

DBCC SHRINKDATABASE (N ‘BANCO’ )

Logo em seguida faça o Shirink dos arquivos ( datafiles, log)

DBCC SHRINKFILE (N ‘DATAFILE’ , 0, TRUNCATEONLY)

DBCC SHRINKFILE (N ‘LOG’ , 0, TRUNCATEONLY)

TRUNCATEONLY

Libera o espaço livre no final do arquivo para o sistema operacional, mas não realiza qualquer movimento dentro do arquivo. O datafile é reduzida apenas a ultima extensão alocada.

Ou pelo Manager

shrirink

Olha …. Consegui números bem significativos …

BANCO 1
Antes:  Database – 23GB   / Log – 180MB
Depois:  Database – 22GB / Log – 20MB
Tempo: Reindex – 31 Min / Shrink – 10Min

BANCO2
Antes: Database – 5GB / Log – 504KB
Depois:  Database – 2,8GB / Log – 504KB
Tempo: Reindex – 30 Min / Shrink – 5Min

BANCO3

Antes: Database – 20GB / Log – 7,5GB
Depois:  Database – 20GB / Log – 20MB
Tempo: Reindex – 45 Min / Shrink – 15Min

E é isso ai minha gente

Beijão

Kenia Milene





Teorias Sobre Deus e Steve Wonder

8 07 2009

Deus é amor.
O amor é cego.
Steve Wonder é cego.
Logo, Steve Wonder é Deus.
Disseram-me que eu sou ninguém.
Ninguém é perfeito.
Logo, eu sou perfeito.
Mas só Deus é perfeito.
Portanto, eu sou Deus.
Se Steve Wonder é Deus
Eu sou Steve Wonder!
Meu Deus, eu sou cego!

Eu não poderia deixar de postar essa !!!!!

Abraços a todos

Kenia Milene





Finalmente Desbloqueando o Modem Huawei E226

28 05 2009

Pois é minha gente todo mundo tanto pediu que eu consegui !!! eu consegui desbloquear o modem….
Tudo começou com um plano de dados super bacana que a oi me ofereceu e eu aceitei. Porém, como já sou usuária há um bom tempo do modem, mas com plano da TIM …. tive que desbloquear o bichinho !!!!
Bom primeiro passo é baixar o update do firmware do modem respeitando a operadora de cada um: http://www.huawei.com/pt/catalog.do?id=1626
2 – Instale o software que vem no modem da TIM normalmente (Caso seja uma nova instalação)
2 – Instale a atualização, importante instalar os 2 pacotinhos nessa ordem:
1 – E226Update_11.310.16.00.133.B409.exe
2 – UTPS11.002.03.20.133_MAC11.201.03.00.133.exe
Depois da instalação do primeiro pacote é necessário reiniciar, senão a instalação do segundo pacote da erro !!!
Após a segunda instalação reinicie e vamos configurar as bandas.
PS: Um técnico da OI indicou que após a atualização do firmware eu reinstalasse o software de conexão da TIM que a velocidade talvez aumentasse. Fiz o procedimento, mas a velocidade continuou a mesma, sendo assim, não é necessário.
Abra o software da TIM e clique em ferramentas/opções. No gerenciamento de perfil adicione o perfil de acordo com o seu plano.

TIM
Nome: TIM CONNECT FAST
APN: tim.br
User: tim
Senha: tim

OI
Nome: OI CONNECT FAST
APN: gprs.oi.com.br
User : oi
Senha: oi

CLARO
Nome: CLARO CONNECT FAST
APN: claro.com.br
User: claro
Senha: claro

VIVO
Nome: VIVO CONNECT FAST
APN: zap.vivo.com.br
User: vivo
Senha: vivo

Clique em avançado/ definições de protocolo de autenticação e clique em PAP

Bom… era isso pessoal, testei com todos os chips e todos eles funcionaram !!!

Estou testando o tal pacote de dados da OI, por enquanto no centro de são Paulo esta uma média de 200kbps em comparação a 800kbps da vivo por exemplo …..

De qualquer forma é uma nova banda .. e ainda não cobre todas as áreas.

Demorou mas saiu …. Antes tarde do que mais tarde !!!!
Abraços
Kenia Milene








Seguir

Get every new post delivered to your Inbox.

Junte-se a 26 outros seguidores