Von Steve Jones
"Die Datenbank ist ausgefallen!"
Dies ist wohl der gefürchtetste Anruf, den ein Datenbankadministrator erhalten kann. Ihr Herz rast, Ihr Magen krampft sich zusammen, und Ihr erster Instinkt ist, sich sofort mit Ihrem System zu verbinden. Denn wenn die Datenbank ausgefallen ist oder nicht mehr reagiert, dann funktioniert wahrscheinlich auch Ihre Anwendung nicht mehr. Ob über ein mobiles Gerät oder einen Remote-Laptop, Sie müssen das Problem so schnell wie möglich feststellen und beheben.
Ich habe mehr als ein paar dieser "Datenbankausfall"-Anrufe erhalten, deren Ursache von Hardwareausfällen über Netzwerkprobleme bis hin zu Benutzern reicht, die keine Datenänderungstransaktionen in der Datenbank durchführen können.
In einem Fall berichteten mir Benutzer, dass ihre Änderungen nicht abgeschlossen werden konnten; sie wussten nicht genau, wo das Problem lag, sondern nur, dass etwas mit der Datenbank "nicht stimmte". In dieser Situation logge ich mich in das System ein und versuche, eine kleine Tabelle zu erstellen und vielleicht ein paar Zeilen hinzuzufügen, indem ich den in Listing 1 gezeigten Code verwende. Die Fehlermeldung bestätigte mir sofort, dass der Speicherplatz in der Datei für diese Datenbank in der Tat nicht ausreicht.
Abbildung 1 - ein kurzes Skript zum Erstellen
einer Tabelle, mit einer Fehlermeldung über den Speicherplatz
Da ich eine gute Fehlerbehandlung eingerichtet hatte, wurden die Benutzer glücklicherweise nicht mit diesem Fehler konfrontiert und wussten daher nichts von dem eigentlichen Problem mit SQL Server.
Natürlich ist es relativ einfach, den Windows Explorer auf dem betroffenen Server zu öffnen und zu überprüfen, wie viel Speicherplatz auf einem Laufwerk verfügbar ist. Hoffentlich sieht Ihr Laufwerk nicht so aus wie in Abbildung 2 dargestellt.
Abbildung 2 - Lokale Festplatte mit 0 freien Bytes
Wenn der Speicherplatz knapp wird, ist das nicht nur äußerst peinlich, sondern auch beruflich inakzeptabel. Es ist auch ein Zeichen für die obere Führungsebene, dass ein Administrator nicht auf seine Umgebung achtet. Vielleicht kommen Sie ein- oder zweimal damit durch, wenn Sie in der Lage sind, schnell zu reagieren und das Problem zu beheben, aber wenn es wiederholt vorkommt, verlieren Sie das Vertrauen der Manager und möglicherweise Ihren Job. In diesem Fall hatte ich eine Speicherplatzwarnung erhalten, aber die Protokoll- und Datendateien für diese bestimmte Datenbank waren schnell gewachsen und füllten die Festplatte, bevor ich Zeit hatte, Speicherplatz freizugeben und das Problem zu beheben. Ich konnte das Problem sehr schnell beheben, aber es war mir eine harte Lektion, dass ich unsere Speicherplatzüberwachung und -warnung verbessern muss.
Nachdem Sie ein Speicherplatzproblem festgestellt haben, sollten Sie als erstes die Einstellungen für die automatische Vergrößerung der Daten- und Protokolldateien der betroffenen Datenbank überprüfen. Wenn die automatische Vergrößerung deaktiviert ist, könnte es sein, dass eine oder beide Dateien ihre maximale Größe erreicht haben. Wenn dies der Fall ist, können Sie das Problem möglicherweise beheben, indem Sie die Datenbank oder die Protokolldateien manuell vergrößern, je nachdem, in welcher Datei der Platz knapp ist.
Wenn das Problem jedoch darin besteht, dass die Dateien voll sind und der zugrunde liegende Datenträger voll ist, können Sie die Dateien nicht weiter vergrößern. Das ist ein beängstigender Moment, und ich hoffe, Sie haben Platzhalterdateien, die Sie löschen können, um das Problem schnell zu lösen. Wenn dies nicht der Fall ist, müssen Sie wahrscheinlich nach einer oder mehreren Dateien suchen, die Sie löschen können. Oft können Sie Speicherplatz freigeben, indem Sie alte Sicherungsdateien, Import-/Exportdateien oder Anwendungsprotokolldateien (wie Fehlerprotokolle, Ereignisprotokolle usw.) entfernen. Wenn sich Ihre Daten und Protokolldateien in einem SAN befinden, können Ihre SAN-Administratoren vielleicht die dem Server zugrunde liegende Festplatte vergrößern und Ihnen mehr Platz zur Verfügung stellen.
Wenn keine dieser Lösungen möglich ist oder nicht funktioniert, können Sie vielleicht eine Möglichkeit finden, eine zusätzliche Daten- oder Protokolldatei hinzuzufügen. Sie müssen an den Windows-Host eine Festplatte mit freiem Speicherplatz anschließen und dann den Befehl ALTER DATABASE
verwenden, um zusätzliche Datendateien (und/oder Dateigruppen) hinzuzufügen und zu konfigurieren, um ausreichend Speicherplatz für die Fortsetzung der Datenbankoperationen bereitzustellen.
Das Hinzufügen von Dateien oder Dateigruppen auf einem anderen Laufwerk verkompliziert Ihr System für die Administratoren und kann bei der Wiederherstellung im Notfall zu Verwirrung führen. Sie können auch einen Termin in Ihrem Kalender festlegen, um zu versuchen, Ihre Änderungen rückgängig zu machen, wenn mehr Speicherplatz verfügbar ist.
Es ist wichtig, dass ein Systemadministrator über ein drohendes Speicherplatzproblem Bescheid weiß, lange bevor ein Mangel an Speicherplatz zu einem echten Problem wird, das von den Benutzern bemerkt wird. Der Weg, um zu verhindern, dass Ihren Systemen der Speicherplatz ausgeht, besteht darin, diese Metrik im Laufe der Zeit auf jedem Ihrer Systeme zu verfolgen und eine Warnung einzurichten, um so früh wie möglich vor Problemen zu warnen.
Trotz aller Bemühungen der Datenbankadministratoren, das prognostizierte Datenwachstum in ihren Datenbanken zu messen und zu berücksichtigen, wird es immer wieder Phasen unerwarteten Wachstums geben, die durch unkontrollierte Datenlasten, deaktivierte Protokollsicherungen, ausufernde Transaktionen und vieles mehr verursacht werden. Wir können diese Probleme zwar nicht gänzlich verhindern, aber wir können sicherstellen, dass wir den Speicherplatz regelmäßig überwachen und so schnell wie möglich Warnungen über Probleme erhalten. Eine frühzeitige Warnung vor drohenden Problemen ist wichtig, da das Hinzufügen von Speicherplatz in den meisten Unternehmen eine gewisse Vorlaufzeit erfordert.
In den folgenden Abschnitten werden einige Möglichkeiten beschrieben, wie Sie den Speicherplatz auf der Festplatte ermitteln können, von denen einige einfacher sind als andere.
Sie können den Explorer sicherlich jeden Tag überprüfen, etwa so:
Abbildung 3 - manuelle Überprüfung des Speicherplatzes im Explorer
Anschließend können Sie diese Daten in einer Anwendung wie z. B. Excel verfolgen.
Abbildung 4 - Verfolgung des SQL Server-Laufwerksplatzes in Excel
Sie können Ihre Nachverfolgung sogar auf die Größe des Datenträgers, die Änderung des Speicherplatzverbrauchs beim Hinzufügen neuer Zeilen oder auf jede beliebige mathematische Berechnung, die Excel unterstützt, ausdehnen.
Es gibt Unternehmen, die den Speicherplatz manuell überwachen, aber das ist eine teure und fehleranfällige Methode für Ihren Systemadministrator und nicht das, was die meisten Administratoren bevorzugen würden. Die manuelle Verfolgung des Speicherplatzes auf vielen Rechnern und über viele Monate hinweg wird schnell zu einer lästigen Aufgabe. Menschen sind nicht gut in solchen banalen, eintönigen Aufgaben, für die dies ein perfektes Beispiel ist, zumindest nicht über einen längeren Zeitraum hinweg.
Es ist auch anfällig für Fehler an mehreren Stellen. Wird jemand daran denken, diese Aufgabe jeden Tag auszuführen? Wird jemand einen Tippfehler bei der Eingabe des Platzes machen? Sind die Warnmeldungen für alle Instanzen und Festplatten richtig eingestellt?
Dies ist eine Aufgabe, die nach Automatisierung schreit.
Eine schnelle Suche im Internet führt zu einer Vielzahl von Skripten, mit denen Sie die Überprüfung des Festplattenspeichers automatisieren können. Viele dieser Skripte verwenden eine Skriptsprache wie PowerShell oder VBScript, um sich mit verschiedenen Windows-Hosts zu verbinden, den Festplattenspeicherplatz zu messen und dann einen Bericht zu erstellen und per E-Mail zu versenden, in dem alle Festplatten hervorgehoben werden, deren Speicherplatz unter einem bestimmten Schwellenwert liegt. Der Artikel von Sean Duffy, Disk Space Monitoring and Early Warning with PowerShell, bietet ein typisches Beispiel dafür, was möglich ist.
Dies ist ein gutes System, das Sie mit Methode 3 kombinieren können. Viele Administratoren setzen sowohl ein primäres als auch ein sekundäres Mittel zur Verfolgung und Meldung des Speicherplatzes ein, um eine Absicherung für den Fall zu haben, dass eines davon ausfällt.
Natürlich erfordert die Entwicklung einer skriptgesteuerten Lösung Programmierkenntnisse, ebenso wie die Pflege im Laufe der Zeit, z. B. um die Überwachung zusätzlicher Festplatten hinzuzufügen. Möglicherweise möchten Sie auch historische Überwachungsdaten für Trendanalysen speichern, was eine Logik zum Archivieren und Beschneiden älterer Daten erfordert. Irgendwann wird jemand einen Bericht benötigen, also werden Sie diese entwickeln, vielleicht sogar endlos, da immer jemand das Berichtsdesign optimieren möchte. Das Herunterladen eines Skripts oder das Schreiben eines kurzen Programms kostet kein Geld, aber die Wartung und Anpassung Ihres Systems im Laufe der Zeit, das Testen von Änderungen und vieles mehr kann sich für eine Organisation zu erheblichen Kosten summieren.
Für viele Unternehmen ist die Überwachung des Speicherplatzes mit einem Überwachungstool wie Redgate Monitor kosteneffizienter. Mit diesem Tool kann der Administrator nicht nur eine breite Palette von Warnungen mit konfigurierbaren Schwellenwerten einstellen, darunter auch Warnungen zum Speicherplatz. Es lassen sich auch leicht Trends erkennen, die den Administrator rechtzeitig informieren, wenn der Mangel an Speicherplatz zu einem Problem wird.
Bei der Installation von Redgate Monitor sind eine Reihe von Warnmeldungen standardmäßig aktiviert. Eine davon ist die Festplattenplatz-Warnung, die den Speicherplatz auf jeder Festplatte auf einem Ihrer überwachten Server überwacht. Sie können den aktuellen Speicherplatz für Ihre Datenbanken auf der Registerkarte Analyse einsehen, wobei die Metriken für jede einzelne Festplatte verfolgt werden. In diesem Fall habe ich mich auf eine einzelne Datenbank beschränkt, wie in Abbildung 5 dargestellt.
Abbildung 5 - Datengrößendiagramm für eine einzelne Datenbank in Redgate Monitor
Die Größe der Datendatei für die EncryptionPrimer
-Datenbank ist stark angestiegen, was auf eine große Datenmenge zurückzuführen ist. Ein Benutzer beschloss, eine Datei zu importieren, die sich als viel größer als erwartet herausstellte. Die Datei wäre noch größer geworden, aber die Festplatte füllte sich, bevor der Ladevorgang abgeschlossen war. Dies ist eine häufige Situation, die in vielen Unternehmen vorkommt.
Die Stärke der Speicherplatzüberwachung liegt in der Möglichkeit, mit Hilfe von Warnungen ein effektives "Frühwarnsystem" zu konfigurieren. Standardmäßig löst Redgate Monitor einen mittleren Festplattenspeicher-Alarm aus, wenn der Festplattenspeicher auf einem der überwachten Server unter 1 GB fällt (siehe Abbildung 6).
Abbildung 6 - Einstellen des Schwellenwerts für die Speicherplatzwarnung in Redgate Monitor
Das mag zwar bei einigen Systemen funktionieren, aber ich denke, ich würde gerne Bescheid wissen, bevor der Speicherplatz unter 1 GB fällt. In einer Situation wie dieser, in der eine unerwartete Belastung auftritt, kann ich möglicherweise nicht schnell genug reagieren, wenn ich erst von dem Problem erfahre, wenn nur noch so wenig Speicherplatz auf der Festplatte vorhanden ist. Im Idealfall würde ich gerne gewarnt werden, wenn mehr Zeit bleibt, um Speicherplatz hinzuzufügen und Notfallsituationen zu vermeiden.
Zum Glück bietet mir Redgate Monitor Flexibilität. Wenn ich den Schieberegler unten in Abbildung 6 aktiviere, kann ich mehrere Schwellenwerte für Warnungen festlegen, um mich rechtzeitig über bevorstehende Probleme zu informieren.
Abbildung 7 - Einstellung mehrerer Schwellenwerte für die Speicherplatzwarnung
Mit diesen Warnmeldungen kann ich planen, wie ich Platz schaffen, die aktuelle Festplattenkapazität erweitern oder mehr Festplatten bestellen kann, sobald eine Warnmeldung der Stufe "Niedrig" ausgelöst wird. Ich werde auch sicherstellen, dass ich Warnungen zum Festplattenplatz per E-Mail an die Betriebsgruppe sende. Wenn der Speicherplatz knapp wird, ist das wichtig genug, um die DBAs zu benachrichtigen, insbesondere bei unternehmenskritischen Systemen.
Wenn einer oder mehrere dieser Schwellenwerte überschritten werden, wie z. B. beim Laden einer großen Datei, erhalte ich Warnungen, die das Objekt anzeigen, das die Warnung verursacht hat, in diesem Fall das Laufwerk C:.
Abbildung 8 - Speicherplatzwarnungen für das Laufwerk C:\
Wenn ich auf die Meldung klicke, sehe ich eine detaillierte Übersicht über den belegten und den verfügbaren Speicherplatz sowie den von meiner lokalen SQL-Instanz belegten Speicherplatz. Der größte Teil der Festplatte wird von anderen Dateien genutzt, aber das Wachstum dieser einen Datenbank reichte aus, um die Festplatte zu füllen.
Abbildung 9 - Untersuchung einer Speicherplatzwarnung, um den belegten Speicherplatz zu überprüfen
Wenn ich mir des Problems nicht bewusst war, gibt mir Redgate Monitor die Möglichkeit, andere Metriken und Prozesse zu untersuchen, um festzustellen, welche Aktivitäten zum Zeitpunkt des Problems stattgefunden haben.
Zu meinem Glück hatte ich, wie bereits erwähnt, vorsorglich einige Platzhalterdateien auf dem Laufwerk gespeichert, so dass ich das unmittelbare Problem durch einfaches Löschen beheben konnte, um ein weiteres Wachstum der Daten- und Protokolldateien zu ermöglichen.
Danach würde ich mit dem Benutzer, der die Dateien geladen hat, sprechen und den künftigen Speicherplatzbedarf dieser Datenbank neu einschätzen. Ich ziehe es vor, dafür zu sorgen, dass alle meine Datenbanken über genügend Speicherplatz für die nächsten 90-120 Tage Datenwachstum verfügen, indem ich sie alle ein bis zwei Monate erweitere, um den künftigen Bedarf zu decken.
Ich könnte auch in Erwägung ziehen, detailliertere Warnmeldungen zu Daten oder Speicherplatz für diese Datenbank einzurichten, indem ich beispielsweise eine der benutzerdefinierten Metriken, die unter SQLMonitorMetrics.red-gate.com verfügbar sind, in mein Redgate Monitor-System integriere.
Wenn der Speicherplatz auf Ihrem Laptop knapp wird, ist das keine große Sache. Es ist zwar ärgerlich, aber die meisten von uns können ein paar zusätzliche Dateien zum Löschen finden. Auf einem Server kann dies jedoch dazu führen, dass die Arbeit ins Stocken gerät, was für den Systemadministrator äußerst peinlich ist. Ziel ist es, diese Art von Problemen durch eine proaktive Überwachung ganz zu vermeiden, anstatt reaktiv zu versuchen, Dateien zu löschen und Speicherplatz freizugeben.
Im Allgemeinen neigen Datenbanken dazu, mit einer bekannten Rate zu wachsen. Überwachen Sie also das Wachstum der Daten und des Protokollspeichers und achten Sie auf abnormale Trends und unerwartetes Wachstum. Ich versuche, alle Dateien manuell zu vergrößern, wobei ich eine Größe wähle, die den Betrieb der Datenbank für die nächsten 3-4 Monate ermöglicht. Wenn ich Dateien vergrößere, überprüfe ich den zugrundeliegenden Festplattenspeicherplatz, aber es ist auf jeden Fall wertvoll, Warnungen für den Fall eines unerwarteten Wachstums zu haben.
Ich würde Ihnen auch empfehlen, auf jeder Festplatte einige 1-GB-Dateien mit Platzhaltern zu "reservieren", die Sie löschen können, wenn der Platz knapp wird. Das Dienstprogramm contig.exe von Microsoft erleichtert die Erstellung dieser Dateien, und ich empfehle Ihnen, es auf allen Ihren Festplatten zu verwenden.
Für weitere Informationen über Redgate Monitor, eine Demo oder Best Practices nehmen Sie gern Kontakt mit uns auf.
Seit mehr als 25 Jahren entwickelt Redgate spezialisierte Software für Datenbanken. 92 % der Fortune-100-Unternehmen setzen auf unsere Lösungen. Insgesamt vertrauen uns über 200.000 Kunden weltweit.
Redgate bietet eine umfassende Dokumentation und ein kompetentes, engagiertes Support-Team. Im Schnitt bewerten 87 % unserer Kundinnen und Kunden unseren Support mit „Ausgezeichnet“.