4Dados Consultoria e Suporte Ltda

Oracle Partner Network

Monitorando Tablespace Temporária

Todas operações de ordenação(SORT) são realizadas em um segmento específico. No banco Oracle, essas são realizadas nas tablespace chamadas temporárias(TEMP).

A falta de espaço na tablespace temporária, pode acarretar em mensagens do tipo:

ORA-01652: unable to extend temp segment by string in tablespace string

Você pode verificar a existência desses erros verificando no alert.log.

No database Oracle você pode utilizar de duas abordagens para com tablespaces temporárias:

  • Criar a tablespace com autoextend de datafiles
  • Criar a tablespace sem autoextend de datafiles

Até a versão Oracle 10g, uma área temporária alocada indevidamente precisaria de um processo não tão simples para recuperar o espaço, a partir da versão Oracle 11g isso mudou um pouco, sendo possível realizar essa desalocação de uma  forma mais tranquila, mas, particularmente, prefiro utilizar sem autoextend, uma vez que essas tablespaces tendem a ter seu tamanho de alocação física estável, sendo alterado principalmente quando algum processo indevido é realizado, como por exemplo uma consulta com carga de ordenação acima do normal. E como não queremos processos INDEVIDOS rodando em nosso banco, vamos optar por essa abordagem.

A consulta abaixo, mostra o tamanho e a ocupação das tablespaces temporárias:

Observe o resultado:

Observamos é que este banco possui uma tablespace temporária(TEMP) que está 37,33% ocupada, entretando, não sabemos quais são as sessões que estão consumindo esse recurso.

A consulta abaixo, mostra exatamente essa informação, ou seja, quais são essas sessões.

Observe o resultado:

O retorno da consulta, mostra claramente que algumas poucas sessões são responsáveis pela ocupação da tablespace temporária.

Observe o resultado:

Observe que a área alocada pelas duas primeiras sessões está bem acima das demais, valores muito discrepantes devem ser analisados.

Agora que você já sabe o SID/SERIAL# da sessão e o SQL_ID da consulta, basta verificar na v$session e v$sql respectivamente, e analisar o que pode ser feito para melhorar o procedimento.

Até a próxima, e bons tunings!