Quem está consumindo meu TEMP??

Consumo excessivo de área temporáriaOlá Amigo, fã, colega, participantes do projeto DBA, todo mundo…. rsrsrs

BOM DIA, BOA TARDE, BOA NOITE!!!

Meu amigo que correria! Projeto pra começar, aulas sendo produzidas, projetos em clientes “bombando” he he he, na verdade é assim que eu gosto: “Com emoção…”

Com tudo isso acontecendo acabei negligenciando um pouco a criação de posts no blog, mas vamos lá.
O assunto que escolhi para hoje é algo bem interessante e que já me ocasionou problemas no final de semana, aquele do plantão sabe?
Pois é… Certa vez em um cliente agendaram uma atividade para final de semana que inicialmente não envolveria muito o DBA (será que tem DBA que ainda acredita quando dizem isso???) pois era apenas uma pequena geração de relatórios criados pela equipe de desenvolvimento.
Ok! Como o plantão era remoto, me preocupei apenas em manter o telefone funcionando internet ok e fui pra casa… No sábado pela manhã o setor da monitoramento me liga que o usuário que está tentando rodar o tal relatório está tendo o erro:

ORA-01652 unable to extend temp segment by xxx in tablespace temp

Pois é, acho que você já entendeu o que aconteceu né? Estouro do tablespace temporário. Este erro ocorre normalmente quanto temos grandes processos de sort (ordenação) armazenados em um tablespace temporário que talvez não seja muito grande, ou o processo foi escrito errado (a query).

Nesta hora é necessário dar “Nome aos Bois” e descobrir exatamente quem está utilizando o tablespace temporário, pois apenas ficar aumentando ele não faz sentido.

Para isso existe uma query que uso sempre e muito me ajuda nestes casos. Inclusive podendo ser utilizada para montar monitoramento.

SELECT sysdate,a.username, a.sid, a.serial#, a.osuser, b.blocks, c.sql_text
  FROM v$session a, v$sort_usage b, v$sqlarea c
  WHERE b.tablespace = ‘TEMP’
  and a.saddr = b.session_addr
  AND c.address= a.sql_address
  AND c.hash_value = a.sql_hash_value
  AND b.blocks* 8192 > [metrica]
  ORDER BY b.tablespace, b.blocks;

No campo métrica você poderá pedir para listar apenas aqueles que estejam consumindo acima de uma determinada quantidade de Bytes.

Com o resultado dela poderemos descobrir quem está consumindo, quanto e qual a query. De posse dessas informações poderemos analisar se realmente é preciso tantos order by, group by. Muitas vezes são colocados apenas por convenção e podem ser removidos sem prejuízo para resultado.

 Bem era isso que tinha pra hoje. Quero aproveitar e agradecer a todos que já estão inscritos no Projeto DBA e dizer que já está quase tudo pronto para disponibilização da primeira aula que ocorrerá no dia 15/09.

Também quero aproveitar para convidar você que ainda não se inscreveu para que o faça o quanto antes. Ainda dá tempo!!!

Para facilitar segue abaixo instruções clicando em Participar:

[easy-pricing-table id=”487″]

Sobre raul andrade

DBA e Instrutor Oracle, apaixonado pela minha família e por ensinar.
Esta entrada foi publicada em DBA Oracle, Scripts e marcada com a tag , , , , . Adicione o link permanente aos seus favoritos.

Deixe um comentário