Tenho tentado tornar nossos clientes de banco de dados pró-ativos sobre não preencher a partição na qual reside o banco de dados que estão usando.
Como todos os nossos clientes estão no mesmo host que o gerenciador de banco de dados, deve ser fácil o suficiente para tablespaces criados pelo usuário; o cliente pode procurar o caminho do sistema de arquivos para o espaço de tabela (em spclocation) e usar chamadas do sistema operacional para verificar quanto espaço disponível está disponível:
adb=> select * from pg_tablespace;
spcname | spcowner | spclocation | spcacl
------------+----------+-------------------+---------------------
pg_default | 10 | |
pg_global | 10 | |
adb | 2033793 | /database/adb | {adb=C/adb}
Não consigo ver como, do cliente, obter o caminho para onde o tablespace global está armazenado; uma string vazia é retornada para ele na consulta acima.
Infelizmente, temos muitos sistemas legados no campo usando um banco de dados específico criado no tablespace global, e seria um esforço monumental transferi-lo para um tablespace criado pelo usuário.
Espero que eu esteja perdendo algo realmente simples.