d'abord:
UPGRADE
Même si vous ne pouvez pas à 8,2, 8,3 ou 8,4 - au moins une mise à niveau au plus récent 8.1 (qui est 8.1.17 au moment, mais 8,1 .18 en 1-2 jours).
Deuxièmement: diagnostiquer quel est le problème.
Utilisez l'outil du pour diagnostiquer l'emplacement exact de l'espace. Quel répertoire occupe trop d'espace?
Vérifiez avec df quel est l'espace total utilisé, puis vérifiez le nombre de répertoires PostgreSQL.
La meilleure option est de:
cd YOUR_PGDATA_DIR
du -sk *
cd base
du -sk *
cd LARGEST DIR FROM PREVIOUS COMMAND
du -sk * | sort -nr | head
Maintenant que vous savez quel répertoire PGDATA utilise l'espace que vous pouvez faire quelque chose à ce sujet. Si c'est logs ou pg_temp - redémarrez pg ou supprimez les logs (pg_clog et pg_xlog ne sont pas des logs dans le sens commun du mot, ne supprimez jamais rien à partir de là!).
Si c'est quelque chose dans votre répertoire de base, puis:
répertoires numériques dans le répertoire de base se rapportent à des bases de données. Vous pouvez le vérifier avec:
select oid, datname from pg_database;
Lorsque vous connaissez la base de données qui utilise la plupart de l'espace, connectez-vous, et vérifier quels fichiers utilisent la plupart de l'espace.
Les noms de fichiers seront suffixe numérique avec option « .digits » - ce suffixe est (pour l'instant) hors de propos, et vous pouvez vérifier exactement ce que le fichier représente par l'émission:
select relname from pg_class where relfilenode = <NUMBER_FROM_FILE_NAME>;
Une fois que vous savez quels tableaux/indexes utilisent la plupart de l'espace - vous pouvez VACUUM FULL, ou (beaucoup mieux) émettre la commande CLUSTER sur eux.
Merci pour la réponse! Mon problème est que le disque est plein à 100%. Vide et cluster ont besoin d'espace disque libre pour fonctionner. Est-il possible de supprimer complètement les données de la base de données sans exécuter le vide/cluster? – jorgen
Trouvez une table que vous pouvez sacrifier et TRUNCATE. Il va libérer de l'espace immédiatement. –
Merci pour votre aide! – jorgen