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.