Par défaut, les blocs de données ne sont pas protégées par des sommes de contrôle, mais ceci peut être activé en option pour une instance. Une fois activé, chaque bloc de données inclut une somme de contrôle qui est mise à jour quand la page est écrite et vérifiée chaque fois que le bloc est lu. Seuls les blocs de données sont protégés par des sommes de contrôle ; les structures de données internes et les fichiers temporaires ne le sont pas.
Les sommes de contrôle sont habituellement activées quand l'instance est initialisée en utilisant initdb. Elles peuvent aussi être activées ou désactivées plus tard lors d'une opération où l'instance est arrêtée. Les sommes de contrôle sont activées ou désactivées au niveau de l'instance et ne peuvent pas activées spécifiquement pour certaines bases ou tables.
L'état actuel des sommes de contrôle dans l'instance peut être vérifié en
regardant la valeur de la variable de configuration en lecture seule data_checksums, par exemple en exécutant la commande SQL
SHOW data_checksums
.
Lors d'une tentative de récupération suite à une corruption de blocs, il pourrait être nécessaire de contourner la protection par somme de contrôle. Pour cela, utilisez temporairement le paramètre de configuration ignore_checksum_failure.
L'outil pg_checksums peut être utilisé pour activer ou désactiver les sommes de contrôle, ainsi que pour vérifier ces sommes, toujours sur une instance arrêtée.