Exchange 2010: Datenbank wiederherstellen (die Holzhammer Methode!)

Vorwort: Die im folgenden Beitrag beschriebene Methode sollte nur in Ausnahmefällen angewendet werden. Ich musste die unten aufgeführten Schritte durchführen als der Exchange Datenbank Eintrag in der Active Directory beschädigt war und sich nicht wieder herstellen lies. Allerdings sind nach dieser Aktion eine ganze Menge Aufräumarbeiten nötig. Es kann aber nicht schaden, diese Schritte im Kopf zu haben, wenn plötzlich das Active Directory crasht. Daher beschreibe ich sie hier. Bitte zuerst den ganzen Artikel lesen, BEVOR er umgesetzt wird.

Die Situation: Zunächst ein paar Worte zu der Fehlersituation, die Exchange Datenbanken waren zunächst noch online geschaltet, allerdings hatten die Datenbank Container in der Active Directory Konfigurations-Partition scheinbar Fehler. Der Exchange Server wurde, dann planmäßig nach Update-Installation gebootet, was zur Folge hatte, dass die Datenbanken nicht mehr gestartet werden konnten. Die Exchange Server waren Mitglied einer DAG, jedoch funktionierte in diesem Fall auch der Schwenk auf die passive Kopie der Datenbank nicht. Die Datenbanken befanden sich laut ESEUTIl im Clean-Shutdown State, die Fehlermeldung beim Mounten der Datenbank entsprach jedoch jener Meldung die angezeigt wird, wenn die Datenbanken im Dirty-Shutdown State sind. Leider habe ich es versäumt Screenshots der Fehlermeldungen zu erstellen, daher beschreibe ich nur die Vorgehensweise.

Hintergrund: Etliche Konfigurationsdaten zu den Exchange Datenbanken werden innerhalb des Active Directorys gespeichert, die Konfiguration der Datenbanken lässt sich mit ADSI-Editor anzeigen und auch bearbeiten, hier ein Screenshot einer Mailbox-Datenbank aus Active Directory Sicht:

Exchange

Im Normalfall brauch man hier nicht via ADSI-Editor manuell Hand anlegen. In meinen Fall war es allerdings nötig. Wie schon erwähnt, konnte nicht genau geklärt werden wodran das Problem letztendlich bestand (Berechtigungen? Replikation?). Alle Versuche die Datenbanken wieder online zu schalten schlugen fehl, es blieb also nur die Holzhammer Methode um die Datenbanken möglichst schnell wieder online zu bekommen.

Die Vorgehensweise: Zuerst habe ich die Datenbank Container via ADSI-Editor gelöscht. Exchange lässt das Löschen von Datenbanken nicht zu, solange noch Postfächer in der Datenbank vorhanden sind, also musste dieser Schritt per ADSI-Editor erledigt werden. Ich habe also den Eintrag “CN=MBDB01” gelöscht.

2

Der Exchange Server kennt nun diese Datenbank und ihre Konfiguration nicht mehr.

Jetzt wird mittels ESEUTIL geprüft ob die Datenbank im Clean-Shutdown State ist, wie das geht habe ich hier beschrieben. Nachdem “ESEUTIL /MH” anzeigt das sich die Datenbank im Clean-Shutdown State befindet, werden alle Dateien, bis auf die .EDB Datei gelöscht.

4

5

Jetzt wird eine neue leere Mailbox Datenbank angelegt:

New-MailboxDatabase -Name NEUEDB -Server SMAIL01 -EdbFilePath d:\NeueDB\NeueDB.edb –LogFolderPath d:\NeueDB

Nun wird die Datenbank einmal gemounted, damit die Datenbank-Dateien erzeugt werden, im Anschluss wird Bereitstellung direkt wieder aufgehoben:

Mount-Database -Identity NEUEDB
Dismount-Database -Identity NEUEDB

3

Als Nächstes werden alle Dateien, die im Verzeichnis “D:\NeueDB” liegen gelöscht

6

Dann wird die ursprüngliche Mailbox Datenbank nach d:\NeueDB kopiert und nach nach NeueDB.EDB umbenannt. in meinem Fall habe ich also nur die EDB-Datei von D:\TMP (siehe Screenshot weiter oben) nach d:\NEUEDB kopiert und in NEUEDB.EDB umbenannt.

image

Jetzt noch festlegen, dass die Datenbank “NEUEDB” bei Wiederherstellung überschrieben werden darf:

Set-MailboxDatabase -Identity NEUEDB -AllowFileRestore $true

7

Nun kann die Datenbank “NEUEDB” gemountet werden

Mount-Database -Identity NEUEDB

Soweit so gut, allerdings verweisen die Postfächer noch auf die alte Datenbank:

image

Bevor die Benutzer sich wieder anmelden können, muss die richtige Datenbank (jetzt NEUEDB) für die Postffächer konfiguriert werden, das geschieht mit folgendem Befehlen:

get-mailboxdatabase | clean-mailboxdatabase
get-mailboxstatistics –database NEUEDB | set-mailbox –database NEUEDB
get-mailboxdatabase | clean-mailboxdatabase

Jetzt sind alle Postfächer die ursprünglich in der Datenbank MBDB01 lagen in die neue Datenbank NEUEDB umgezogen. Die Benutzer können sich wieder anmelden.

Hinweis: Diese Methode zieht, wie schon erwähnt, noch Aufräumarbeiten nach sich. Systemmailboxen müssen ggf. neu angelegt werden. Postfachbeschränkungen müssen ggf. auch angepasst werden. Dieser Artikel zeigt nur eine weitere Möglichkeit auf eine Datenbank wieder verfügbar zu machen. In meinem Fall war ein defektes Active Directory Schuld, dies ist nach meiner Erfahrung jedoch relativ selten. Bevor diese Methode angewendet wird, schaut euch erst mal die Alternativen an:

https://www.frankysweb.de/?cat=12

11 thoughts on “Exchange 2010: Datenbank wiederherstellen (die Holzhammer Methode!)”

  1. Franky es sei mal gesagt… Du bist der Beste… ich lese immer wieder gerne Deine Artikel und komme sogar mit!!!

    D.h. du bringst schwierige Themen einfach rüber… sei mal gesagt… an einem Sonntag – DANKE!

    Reply
  2. Hallo Frank,

    ich habe einen Exch2016 bei dem einiges schief gealufen ist. Mit dem artikel konnte ich den Server wieder einigermaßen heile machen – danke dafür schon mal.
    Leider gibt es clean-mailboxdatabase in 2016 wohl nicht mehr…

    Jetzt sagen mir alle Mailboxen: „Database ist für UserMailbos verbindlich“

    Was mache ich denn da noch falsch?

    OWA funktioniert – das ist schon mal gut…

    Reply
  3. Hallo Franky,

    erstmal besten Dank für deine Methode. Die hat mir heute so einiges erspart!!!

    Allerdings gibt es noch ein Problem: Unsere User können sich weder über Outlook noch OWA oder AS am Postfach anmelden.

    Ein verschieben der Mailboxen ist auch nicht möglich.

    Hast du dazu vielleicht einen Tipp?

    Vielen Dank!
    Lars

    Reply
  4. Hallo Frank

    Leider habe ich auch einen übel zerschossenen Exchange (auf einem SBS2011) Mit Deiner Methode konnte ich endlich wieder die Datenbank mounten. Leider min ich mit dem cmdlets nicht so bewandert und kämpfe mit dem letzten Part:
    get-mailboxdatabase | clean-mailboxdatabase
    get-mailboxstatistics –database NEUEDB | set-mailbox –database NEUEDB
    get-mailboxdatabase | clean-mailboxdatabase

    Was bedeuten | ? Das heisst quasi „enter“ und dann einen neuen Befehl?
    Falls ja…
    get-mailboxdatabase -> klappte
    clean-mailboxdatabase -> Möchte Parameter für Identity? neue edb?
    get-mailboxstatistics –database NEUEDB -> klappte
    set-mailbox –database NEUEDB -> Möchte Parameter für Identity? neue edb wird auf dem System nicht gefunden. Was muss das für ein Wert sein?
    Hier scheitere ich leider :-(

    Gruss aus der Schweiz
    Thomas

    Reply
    • Hi,

      leider zerlegt WordPress die langen Befehele, die Befehle müssen so aussehen:

      get-mailboxdatabase | clean-mailboxdatabase

      get-mailboxstatistics –database NEUEDB | set-mailbox –database NEUEDB

      get-mailboxdatabase | clean-mailboxdatabase

      Gruß, Frank

      Reply

Leave a Comment