Dienstag, 13. März 2012

Konsistenzprüfungen mit CHECKDB auslagern?

Als Administrator von SQL Server Datenbanken sind Sie für einen stabilen Betrieb verantwortlich. Was bedeutet das konkret? Sichern, Indexpflege und Konsistenzprüfung.

Das Problem:
Inzwischen gibt es in vielen Unternehmen sehr große Datenbanken (mehrere 100GB) und die Konsistenzprüfung mit dem Befehl DBCC CHECKDB kann schon mal mehrere Stunden dauern. Da diese Prüfung recht viel I/O erzeugt und einiges an CPU-Leistung braucht, spüren die Anwender diese Prüfung, wenn sie während des laufenden Betriebs durchgeführt wird. Gerade bei kleinen Wartungsfenstern stellt sich dann die Frage, ob die Konsistenzprüfung nicht auf eine andere Maschine als die Produktionsmaschine ausgelagert werden kann.

Folgende Überlegungen hierzu:
Sie betreiben einen Standby-Server, auf den mittels Protokollversand immer die Änderungen der Produktivdatenbank im STANDBY Modus übertragen werden. Damit ist die Datenbank für lesende Zugriffe verfügbar. Wäre es nicht möglich, gegen diese sekundäre Datenbank die Konsistenzchecks laufen zu lassen und so die Produktionsmaschine zu entlasten?
Das Problem an diesem Vorgehen ist, dass Sie damit Fehler des I/O Subsystems auf dem Produktivserver nicht erkennen können. Sie stellen lediglich sicher, dass die sekundäre Datenbank konsistent ist.
Aus dem gleichen Grund liefert auch ein Konsistenzcheck einer gespiegelten Datenbank keine Aussage über den Zustand der primären Datenbank. Gleiches gilt für die neuen Verfügbarkeitsgruppen des SQL Server 2012.
Es gibt nur einen Weg, die Konsistenzprüfung einer Datenbank auf einen anderen Server auszulagern:
Stellen Sie dort eine Vollsicherung der zu prüfenden Datenbank wieder her und führen Sie dort DBCC CHECKDB aus. Bei der Vollsicherung werden die Speicherseiten inklusive aller möglichen Fehler erfasst und mit diesen Fehlern auch wiederhergestellt.

Fazit:
Führen Sie Konsistenzprüfungen immer gegen die Produktionsdatenbank durch. Alternativ können Sie die Konsistenzprüfung gegen eine Datenbank durchführen, die aus einer Vollsicherung wiederhergestellt wurde.

Wichtig:
Führen Sie auf jeden Fall regelmäßig Konsistenzprüfungen durch, um Fehler des I/O Subsystems rechtzeitig zu erkennen und beheben zu können!