Shrink der SQL Express Datenbank des vCenters

In seltenen Fällen und/oder bei falschen Einstellungen in den Statistikeinstellung kann es vorkommen das die SQL-Express Datenbank bis zum maximalen Limit von 10 GB vollläuft.

Das vCenter stoppt sich in diesem Fall mit folgendem Fehler (kann variieren)

[SQL Server]Could not allocate space for object 'dbo.VPX_HOST_VM_CONFIG_OPTION'.'PK_VPX_HOST_VM_CONFIG_OPTION' in database 'VIM_VCDB' because the 'PRIMARY' filegroup is full. Create disk space by deleting unneeded files, dropping objects in the filegroup, adding additional files to the filegroup, or setting autogrowth on for existing files in the filegroup." is returned when executing SQL statement

In diesem Fall muss nach folgendem KB-Artikel vorgegangen werden und die Datenbank von alten Einträgen befreit werden: http://kb.vmware.com/kb/1025914.

  • vCenter Dienste stoppen, falls nicht bereits geschehen
  • Verbindung über den MSSQL Management Client auf die vCenter Datenbank
  • Rechtsklick auf die VIM_VCDB > New Query und folgendes SQL Statement ausführen
SELECT
 DB_NAME() AS DbName,
 name AS FileName,
 size/128.0 AS CurrentSizeMB, 
 size/128.0 - CAST(FILEPROPERTY(name, 'SpaceUsed') AS INT)/128.0 AS FreeSpaceMB,
 CASE WHEN ((size/128.0 - CAST(FILEPROPERTY(name, 'SpaceUsed') AS INT)/128.0) < 500) THEN 1 ELSE 0 END AS IsCritical
FROM sys.database_files

Der Query zeigt die aktuelle Auslastung der Datenbank. Wichtig ist hier die „CurrentSizeMB“. Da die kostenlose SQL 2008 R2 Express Edition ein Limit von 10 GB hat, besteht ab 8-9 GB Handlungsbedarf.

vCenter MSSQL Express

Von der Spalte „FreeSpaceMB“ und „IsCritical“ darf man sich nicht immer täuschen lassen. Für die Datenbank VIM_VCDB ist im Normalfall ein AutoGrow konfiguriert. Wenn der Platz zu knapp wird, wird die Größe somit in 10% Steps (ausgehend von der aktuellen Größe) automatisch angepasst.

Der obige Screenshot wurde nach einer Bereinigung durchgeführt, daher hat die Datenbank hier nur rund 4 GB in Benutzung.

  • Tabelle dbo.VPX_PARAMETER prüfen.
    • Prüfen ob dort die Werte event.maxAge, task.maxAge auf 60 gesetzt sind
    • Prüfen ob die Werte event.maxAgeEnabled und task.maxAgeEnabled jeweils auf true gesetzt sind
  • Cleanup Prozess über VIM_VCDB > Programmability > Stored Procedures > dbo.cleanup_events_tasks_proc starten

Dieser Job kann sehr lange brauchen. Bei meinem Lauf war der Cleanup erst nach rund 70 Minuten abgeschlossen. Während der Arbeiten das vCenter nicht starten und keine weiteren Änderungen an der Datenbank durchführen!

  • Shrink der Datenbank durchführen um den Speicherplatz auch wieder freizugeben

vCenter MSSQL Express

Auch dieser Prozess kann wieder einige Zeit in Anspruch nehmen. Abschließend kann die aktuelle Größe nochmal geprüft werden (siehe SQL-Statement oben). Die vCenter Dienste können nun wieder gestartet werden.

Einen Kommentar hinterlassen

Dein Kommentar