Il arrive parfois que la base de données du Management Server soit corrompue. L'erreur ci-dessous apparaît dans les logs du MS
<sysload>\sldmgts\sldmgts.log"
DD.MM HH:MM:SS YYYY: LPtrVerif - OBaseOfObjects.c[1479] - Invalid Pointer Error
DD.MM HH:MM:SS YYYY: sldmgts - ODbMgrResultSet_FreeResult() failed: couldn't delete compiled statement: database disk image is malformed (DB rc=11)
Les problèmes se situent à 2 niveaux :
- Au niveau du fichier de données SQLite, ne concerne pas les objets Sysload.
- Sur la base des objets Sysload : les ACL, les agents, les events, les modèles…
La réparation du fichier SQLite entraîne de manière systématique des incohérences sur les objets Sysload : un objet auquel il manque une propriété, un objet sans son ACL associée… Dans un premier temps, vous devez d’abord réparer le fichier SQLite puis ensuite rétablir la cohérence de la base des objets Sysload.
NB : Veuillez lire attentivement la procédure en entier avant d'effectuer des manipulations sur la base de données. Si vous n'êtes pas certain de pouvoir effectuer ces opérations, nous vous recommandons d'ouvrir un incident sur notre
Portail et de nous faire parvenir les [DEAD LINK
https://community.automic.com/discussion/8533/sysload-fichiers-de-configuration-logs-du-management-server#latest]fichiers suivants ainsi que votre base de données. Cette procédure peut nécessite des compétences approfondies en base de données.
Réparation du fichier de données (SQL Lite) :
- Arrêter le Management Server
- Effectuer une sauvegarde de la base de données
- Windows :
<sysload>\sldmgts\storage\sldat\sld_objects_repository - Linux :
/usr/local/sysload/sldmgts/storage/sldat/sld_objects_repository- Utiliser le client SQLite en ligne de commande :
$ sqlite3 sld_objects_repository
sqlite> pragma integrity_check;
…
sqlite> .quit
$ echo .dump | sqlite3 sld_objects_repository > sld_objects_repository_repaired.sql
$ sqlite3 -init sld_objects_repository_repaired.sql sld_objects_repository_repaired
Le nouveau fichier de base de données est :
sld_objects_repository_repairedRétablissement de la cohérence de la base des objets Sysload
*** Nous vous recommandons de nous envoyer votre base de données afin que nous effectuons cette opération.***
Vous devez utiliser un requeteur SQL pour SQLite, tel que SQLiteSpy. Il s'agit de manipuler directement les enregistrements constituant les objets Sysload.
La connaissance du schéma de la base des objets est primordiale.Exemple : Impossible d'ajouter une alerte unitaire "EVN|Unix-FS|"
- Récupérer les IDs SQL de l’event et de l’ACL associée :
select * from sld_object where sld_object_key="EVN|Unix-FS|"
-- ID de l’objet 14420
select * from sld_object where sld_object_key=14420 --
-- l'ACL est14421
- Vérification des propriétés :
select * from sld_property where sld_object_id=14421
select * from sld_property where sld_object_id=14420
delete from sld_object where sld_object_id=14421
delete from sld_property where sld_object_id=14421
- Supprimer l’objet associé:
delete from sld_object where sld_object_id=14420
delete from sld_property where sld_object_id=14420
Le fichier
sld_objects_repository_repaired obtenu est le nouveau fichier de données SQLite. Il suffit ensuite de remplacer le fichier '
sld_objects_repository' par le fichier
sld_objects_repository_repaired et de redémarrer le Management Server.