Datenbank voll ? Keine Panik, alles wird gut !

Nehmen wir an, Sie sehen im C3000 Manager (C3000 Server) folgende Meldungen in kurzer Abfolge:

G4709i 13:20:06 TC_Warning  [0xe30] [DB] Discarding connection(dead). Count 2
G4711i 13:20:07 TC_General  [0x1034] [DB] SybaseDatabase: Created connection. Count 3
G4716i 13:20:11 TC_Error [0xeb0] [DB] SessionWriteStream::Close(): SybaseDBSession::completeUpdateBlob: ct_results() returned CS_CMD_FAIL: return code: 0 (CS_FAIL) ; servermsg: number=1105/state=1/severity=17/server name=“XYZ“/text=“Can’t allocate space for object ‚C3K_DOCUMENT‘ in database ‚c3k‘ because ‚default‘ segment is full/has no free extents. If you ran out of space in syslogs, dump the transaction log. Otherwise, use ALTER DATABASE to increase the size of the segment. „/status=“CS_FIRST_CHUNK|CS_LAST_CHUNK“
G4717i 13:20:11 TC_Warning [0xeb0] [DOCUMENT] document 123456789 is incomplete and will be deleted (tSplitHeaderStream: error while closing stream (DB full?): SessionWriteStream::Close(): SybaseDBSession::completeUpdateBlob: ct_results() returned CS_CMD_FAIL: return code: 0 (CS_FAIL) ; servermsg: number=1105/state=1/severity=17/server name=“XYZ“/text=“Can’t allocate space for object ‚C3K_DOCUMENT‘ in database ‚c3k‘ because ‚default‘ segment is full/has no free extents. If you ran out of space in syslogs, dump the transaction log. Otherwise, use AL…….

dann können Sie relativ sicher davon ausgehen, dass Ihre C3000 Datenbank bis oben hin voll ist. Spätestens in diesem Moment besteht ein gewisser Handlungsbedarf. Wir erinnern uns – normalerweise stellt man mit den automatischen Löschregeln (Routingregeln) sicher, dass es gar nicht so weit kommt und entfernt Dokumente eines gewissens Alters automatisch aus der Datenbank.

Aber zurück zu Ihrer neuen Aufgabe. Grundsätzlich stehen unterschiedliche Ansätze zur Wahl.

Sofern Sie auf der Festplatte noch genügend Platz haben, könnten Sie kurzerhand ein neues Datenbank-Device anlegen und somit einfach mehr Platz schaffen. Dazu mehr in diesem Artikel

Eine zweite Variante ist das manuelle Löschen von Ein- und Ausgangsdokumenten über den Webadministrator (http://<C3000ServerName>:8080), Ansicht „Dokumente“, Auswahl des Enddatums, vor dem Sie den Verlust der Ein- und Ausgangsdokumente verschmerzen können. Dann tragen Sie noch einen vernünftigen Wert für die Anzahl der anzuzeigenden Dokumente ein, also statt der (default „20“) z.B. „500“ und lassen sich die Ein- oder Ausgänge anzeigen. ganz oben links markieren Sie alle angezeigten Dokumente, als Aktion wählen Sie „Löschen“ und los geht es. Das ist ein relativ pragmatischer Ansatz. Funktioniert einwandfrei, birgt keine Risiken, aber dauert ein wenig, je nach Größe der Datenbank und Anzahl der zu löschenden Dokumente.

Eine weitere – recht elegante – Variante der Vorgehensweise ist die Einbindung einer SP (Stored Procedure) auf dem Datenbankserver, mit der alle Dokumente ab einem definierbaren Alter per SQL Befehl gelöscht werden. Einmal eingebunden, kann das Script jederzeit per Kurzbefehl „delete_old“ ausgeführt werden und löscht die Dokumente direkt in der Datenbank. Das Script und die entsprechende Anleitung gibt es im Downloadbereich (Zugangsdaten bitte anfragen).