If the the Management Server's database is corrupted. The error below appears in the logs of the 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)
There are two different issue:
- On the Sysload objects: ACLs, agents, events, models ...
Repairing the SQLite file systematically leads to inconsistencies on Sysload objects: an object that lacks a property, an object without its associated ACL ... At first, you must first repair the SQLite file and also restore consistency from the base of Sysload objects.
NB: Please read the entire procedure carefully before performing any manipulation on the database. If you are not sure if you can perform these operations, we recommend that you open an incident on our Portal and send us the following files and your database. This procedure may require in-depth database skills.
Repairing the database (SQL Lite) :
- Stop the Management Server
- Back-up the database's file
- Windows :
<sysload>\sldmgts\storage\sldat\sld_objects_repository - Linux :
/usr/local/sysload/sldmgts/storage/sldat/sld_objects_repository- Use a SQLite's client in CLI:
$ 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
The new database file is:
sld_objects_repository_repaired
Restoring Sysload Object Base Consistency
*** We recommend that you send us your database so we can do this. ***
Please use a SQL client for SQLite, as SQLiteSpy.
This is to directly manipulate the records constituting the Sysload objects. Knowledge of the schema's database is a requirement.
Please use a SQL client for SQLite, as SQLiteSpy.
Example: Unable to add an alert "EVN | Unix-FS |"
- Retrieve the SQL IDs of the event and the associated ACL:
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 est 14421
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
- Delete the associated objectle:
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.
The resulting
sld_objects_repository_repaired file is the new SQLite database. Then simply replace the '
sld_objects_repository' file with the
sld_objects_repository_repaired file and restart the Management Server.