Como verificar o espaço livre do Oracle Extent disponível?

1

Eu preciso adicionar alguns índices a uma tabela moderadamente grande e gostaria de saber antecipadamente se o tablespace tem espaço para manter o índice. (As extensões devem aumentar automaticamente em tamanho, mas os DBAs nem sempre têm essa configuração correta e eu não quero ser aquele que trava o sistema.) Qual é o SQL que preciso executar para ver como muito espaço está disponível?

    
por jeffspost 23.09.2009 / 20:52

1 resposta

3
select tablespace_name, round(sum(bytes)/(1024*1024)) free_mb 
from dba_free_space group by tablespace_name;

Mas nem sempre é assim tão simples. Embora possa haver, por exemplo, 100 milhões disponíveis e você pode querer criar um índice que você estimar será 80 milhões, ele pode tentar pegar uma nova extensão de 120 milhões e falhar.

Além disso, se você tiver uma tabela de 50M e descartá-la, seus 100M disponíveis poderão ser dois blocos de 50M. Novamente, se o banco de dados tentar obter uma extensão de 100M, ele poderá falhar.

E se o espaço de tabelas não tiver espaço livre, mas estiver definido como autoextend (segment_space_management em dba_tablespaces), ele poderá aparecer como espaço insuficiente, mas funcionará. Ou não, dependendo se o sistema de arquivos subjacente tiver espaço suficiente.

    
por 24.09.2009 / 00:39

Tags