Les vérifications des défaillances de Sun Cluster HA pour Oracle, Sun Cluster HA pour Sybase et Sun Cluster HA pour Informix surveillent de façon semblable le serveur de base de données. Les vérifications des défaillances du SGBD-HD se configurent par le lancement d'un des utilitaires, soit haoracle(1M), hasybase(1M) soit hainformix(1M). (Pour une description détaillée des options de ces utilitaires, voir les pages de manuel en ligne.)
Une fois que les utilitaires ont été configurés et activés, deux processus sont démarrés sur le noeud local, et deux autres sont lancés sur le noeud à distance, simulant ainsi un accès client. Le vérificateur de défaillances distant est amorcé par le démon ha_dbms_serv et démarré lorsque hareg -y dataservicename est lancé.
Le module SGBD-HD se sert de deux méthodes pour déterminer si le service SGBD est disponible. Tout d'abord, SGBD-HD extrait des données du SGBD lui-même :
Sous Oracle, le tableau V$SYSSTAT est consulté.
Sous Sybase, les variables globales @@io_busy, @@pack_received, @@pack_sent, @@total_read, @@total_write et @@connections sont consultées.
Sous Informix, le tableau SYSPROFILE est consulté.
Si les données extraites révèlent que des tâches sont exécutées pour des clients, aucune autre vérification du SGBD n'est effectuée. Ensuite, si les données du SGBD précisent qu'aucune tâche n'est réalisée, SGBD-HD présente une petite transaction d'essai au SGBD. Si tous les clients sont au repos, les données du SGBD indiquent qu'aucune tâche n'est exécutée. Autrement dit, la transaction d'essai fait la distinction entre une panne de la base de données et une situation de repos normale. Etant donné que la transaction d'essai n'est exécutée que si les données indiquent qu'aucune activité n'a lieu, elle n'impose aucune charge additionnelle si la base de données est active. La transaction d'essai consiste à :
Créer un tableau portant le nom HA_DBMS_REM ou HA_DBMS_LOC
Entrer des valeurs dans le tableau créé
Mettre à jour la valeur introduite
Effacer le tableau créé
SGBD-HD filtre minutieusement les codes d'erreur produits par le SGBD, à l'aide d'un tableau qui précise les codes qui doivent provoquer ou non une relève. Par exemple, dans le cas de Sun Cluster HA pour Oracle, une condition table space full (espace de tableau plein) ne provoque pas une relève, car un administrateur doit intervenir pour remédier à la situation. (Si une relève avait lieu, le nouveau serveur maître se buterait au même problème, soit table space full.)
En revanche, si un code d'erreur tel que could not allocate Unix semaphore (impossible d'allouer le sémaphore UNIX) survient, Sun Cluster HA pour Oracle tente de redémarrer ORACLE localement sur ce serveur. Si un redémarrage local a eu lieu récemment, l'autre ordinateur prend plutôt la relève (après avoir réussi ses propres vérifications de validité).