vCenter e Database Full

 

Qualche giorno fa sono intervenuto presso un cliente che lamentava problemi di connessione al vCenter.

Il server in questione, è un Windows 2008 R2 con l’istanza SQL Express installata di default.

Guardando al Registro Eventi ho trovato questi 2 errori:

Event 1105

Could not allocate space for object ‘dbo.VPX_EVENT_ARG’.’PK_VPX_EVENT_ARG’ 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.

e

Event 1827

CREATE DATABASE or ALTER DATABASE failed because the resulting cumulative database size would exceed your licensed limit of 4096 MB per database.

Il secondo dei due è molto chiaro, il database ha raggiunto la dimensione massima consentita che su SQL 2005 Express è 4 GB.

Indagando nella Knowledge Base di VMware ho trovato la soluzione nel seguente articolo kb.vmware.com/kb/1025914

Si tratta in poche parole di eliminare i vecchi dati dal database. Nell’articolo sono allegati gli script per MS SQL e Oracle che semplificano l’operazione. Nel mio esempio utilizzerò quello per MS SQL.

Apriamo SQL Management Studio e carichiamo lo script. Prima di eseguirlo, facciamo attenzione di aver selezionato il database corretto, quello relativo a vCenter.

Script_DB

Lo script presenta 2 variabili sui cui possiamo agire.

SET @DELETE_DATA = 0

Il valore 0 darà solo la stima delle righe cancellate dal DB. Il valore 1 invece, esegue la cancellazione.

SET @CUTOFF_DATE = UTCDATE()-180

Il valore 180 rappresenta i giorni da tenere.

Delete_row

Una volta eseguita la cancellazione delle righe è necessario eseguire la compattazione del database. Per farlo, procediamo come in figura.

Shrink

A questo punto, per evitare che il database cresca ancora in modo smisurato, accediamo alla console di vCenter e modifichiamo la “Database Retention Policy”. Nell’esempio ho impostato 120 giorni.

retention

Questo è tutto.