Unsere Überwachungslösung (SCOM) weist derzeit darauf hin, dass im temporären Protokoll nicht genügend Speicherplatz vorhanden ist. Wir haben jedoch das automatische Wachstum auf 1 GB Chunks für das Protokoll eingestellt und wir haben noch 25 GB Speicherplatz auf dem Laufwerk.
Ich schaute auf das was log_reuse_wait_desc
war und fand es soACTIVE_TRANSACTION
Ich begann mich zu fragen, ob sich die Protokolldatei aus irgendeinem Grund füllte und das automatische Wachstum nicht einsetzte, und nach einigen Recherchen stellte ich fest, dass die Protokolldatei auch während eines Zeitraums noch wachsen sollte ACTIVE_TRANSACTION
.
Ich habe einen Artikel zu ähnlichen Problemen gefunden, bei dem das Tempdb-Protokoll nicht mehr über genügend Speicherplatz verfügt:
Hier gaben sie eine aus CHECKPOINT
, um das Problem am zu lösen tempdb
. Ich weiß, dass CHECKPOINT
schmutzige Seiten auf die Festplatte gespült werden, verstehe jedoch nicht, wie dies das ACTIVE_TRANSACTION
Problem beheben würde .
Außerdem weiß ich auch nicht, warum wir diese Warnung erhalten, wenn viel Platz vorhanden ist. Gibt es eine Situation, in der eine tempdb
Dose gefüllt und automatisch wachsen kann, aus irgendeinem Grund nicht funktioniert?
Antworten:
Wie Max erwähnte, wurde die Warnung wahrscheinlich kurz vor dem Wachsen des Protokolls ausgelöst. SCOM sammelt den freien Speicherplatz für das Transaktionsprotokoll%, obwohl ich nicht sicher bin, bei welchem Schwellenwert die Warnung ausgelöst wird.
Hier ist ein kurzes Beispiel, um Ihnen zu zeigen, in welchem Zustand sich Tempdb wahrscheinlich befindet, wenn Sie diese Warnungen erhalten, aber kein Wachstum der Protokolldatei.
Erstellen Sie zuerst eine Datenbank, setzen Sie die Wiederherstellung auf "Vollständig" und sichern Sie sie
Wechseln Sie nun zu dieser Datenbank, erstellen Sie eine Tabelle und führen Sie DBCC sqlperf (logspace) aus , um die Größe und den freien Speicherplatz in Ihrer Protokolldatei zu überprüfen.
Auf meinem System habe ich eine Protokolldateigröße von 0,9921875 und einen verwendeten Protokollspeicherplatz (%) von 48,4245. Fügen Sie nun einige Daten in die Tabelle ein und führen Sie DBCC sqlperf (logspace) erneut aus. Auf meinem System ergaben 45 eingefügte Zeilen die gewünschten Ergebnisse (die Anzahl der eingefügten Zeilen muss möglicherweise angepasst werden).
Diesmal sollte die DBCC-Ausgabe von sqlperf zeigen, dass die Protokollgröße gleich ist, der verwendete Protokollspeicher jedoch knapp 100% beträgt. In diesem Fall würde SCOM wahrscheinlich eine Warnung auslösen, dass der Protokollspeicherplatz niedrig ist. Es gibt keine weiteren Aktivitäten, die dazu führen, dass die Protokolldatei wächst, und (in diesem Beispiel) keine Protokollsicherung, um den verwendeten Speicherplatz freizugeben. tempdb befindet sich in einer einfachen Wiederherstellung, sodass Ihre aktive Transaktion wahrscheinlich den größten Teil des verfügbaren Speicherplatzes belegt und nicht freigegeben hat, aber in tempdb nicht genügend Aktivität vorhanden war, um das Wachstum von Protokolldateien auszulösen, wodurch der Alarm ausgelöst wurde.
Bereinigungsdatenbank nach Abschluss
quelle
Dies beantwortet Ihre Frage nicht, aber ich dachte, Sie könnten es hilfreich finden, um festzustellen, ob es in letzter Zeit zu einem Protokollwachstum gekommen ist:
quelle