安納@横浜です。もちろん 25日からの Tech・Ed 2010 に備えてデモ機等を最終チェック中です。
そんな中…なーんか動作がおかしいなぁ...と思っていたら、Active Directory が以下のエラーを出ていました..。(号泣)
※ Windows Server 2008 R2 環境です
イベントID 467.NTDS (504) NTDSA: データベース C:\Windows\NTDS\ntds.dit: テーブル datatable のインデックス DRA_USN_index が壊れています (0)。
なんてこった..本番直前っていつもコレだからなぁ..。と落ち込む暇はないので、さっそく回復作業です。
今回の障害はインデックスの故障なので、運が良ければリカバリできるはず!と信じつつ以下の作業を行い、なんとか復旧することができました。
とりいそぎ、実施した作業を時系列に並べます。
【手順1:ntdsutil でデータベースのソフト回復を試みる】
1.「Active Directory Domain Service」サービスを停止
2.コマンドプロンプトを管理者モードで起動
3.ntdsutil を起動
C:\>ntdsutil
ntdsutil:
4.アクティブインスタンスを NTDS に設定する
ntdsutil: activate instance ntds
アクティブ インスタンスが "ntds" に設定されました。
ntdsutil:
5.AD DS/LDS データベース ファイル管理モードに入る
ntdsutil: files
file maintenance:
6.データベースの整合性チェックを行ってみる
file maintenance: integrity
次のデータベースの整合性チェックを行っています: C:\Windows\NTDS\ntds.dit
Checking database integrity.
Scanning Status (% complete)
0 10 20 30 40 50 60 70 80 90 100
|----|----|----|----|----|----|----|----|----|----|
...................................................Integrity check completed. Database is CORRUPTED!
エラー -1206( JET_errDatabaseCorrupted, Non database file or corrupted db ) が発
生したため操作は停止されました。file maintenance:
7.ソフト回復してみる
file maintenance: recover
回復モードを起動しています...
ログ ファイル: C:\Windows\NTDS
システム ファイル: C:\Windows\NTDSソフト回復を実行しています...
データベースの回復に成功しました。
semantic データベース分析を実行して semantic データ
ベースの整合性も確認することを推奨します。file maintenance:
8.再度 整合性チェックをしてみるが 6.と同じ結果…落ち込む
9.AD DS/LDS データベース ファイル管理モードから出る
file maintenance: quit
ntdsutil:
【手順2:ntdsutil の Semantic Checker を実施してみる】
1.Semantic Checker に入る
ntdsutil: semantic database analysis
semantic checker:
2.詳細モードを on にする
semantic checker: verbose on
詳細モードが有効になります。
semantic checker:
3.修復モードでリカバリしてみる
semantic checker: go fixup
修正モードは on です
DIT データベースを開いています... 完了
完了
......完了
ログ ファイル dsdit.dmp.1 に概要を書き込んでいます
スキャンされた SD: 88
スキャンされたレコード: 3452
レコードを処理しています。完了しました。経過時間は 1 秒です。semantic checker:
4.もういちど 手順1の integrity を実施してみるが…ダメ…quit を2回入力して ntdsutil から抜ける
【手順3 esentutl コマンドで最後の賭けに出てみる】
1.コマンドプロンプトで esentutl コマンドを実施
C:\>esentutl /p "C:\Windows\NTDS\ntds.dit" /!10240 /8 /o
Initiating REPAIR mode...
Database: C:\Windows\NTDS\ntds.dit
Temp. Database: TEMPREPAIR1028.EDBChecking database integrity.
Scanning Status (% complete)
0 10 20 30 40 50 60 70 80 90 100
|----|----|----|----|----|----|----|----|----|----|
...................................................Initiating DEFRAGMENTATION mode...
Database: C:\Windows\NTDS\ntds.ditDefragmentation Status (% complete)
0 10 20 30 40 50 60 70 80 90 100
|----|----|----|----|----|----|----|----|----|----|
...................................................Moving 'TEMPREPAIR1028.EDB' to 'C:\Windows\NTDS\ntds.dit'... DONE!
Note:
It is recommended that you immediately perform a full backup
of this database. If you restore a backup made before the
defragmentation, the database will be rolled back to the state
it was in at the time of that backup.Operation completed successfully in 5.782 seconds.
C:\>
お…なんか回復されたっぽいぞ..
2.手順1の integrity を再実行してみる
C:\>ntdsutil
ntdsutil: files
ntdsutil: activate instance ntds
アクティブ インスタンスが "ntds" に設定されました。
file maintenance: integrity
次のデータベースの整合性チェックを行っています: C:\Windows\NTDS\ntds.dit
Checking database integrity.
Scanning Status (% complete)
0 10 20 30 40 50 60 70 80 90 100
|----|----|----|----|----|----|----|----|----|----|
...................................................Integrity check successful.
semantic データベース分析を実行して semantic データ
ベースの整合性も確認することを推奨します。file maintenance: quit
ntdsutil: quitC:\Users\Administrator>
なんかいい感じ
3.「Active Directory Domin Service」サービス を起動
4.イベントログを確認すると、問題が解決された模様
ということで、今回は急いでいるのでそれぞれのコマンドの詳細を解説していませんが、困っている方は参考になさってください。