安納@横浜です。もちろん 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:
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:
回復モードを起動しています... ログ ファイル: C:\Windows\NTDS システム ファイル: C:\Windows\NTDS
ソフト回復を実行しています...
データベースの回復に成功しました。
semantic データベース分析を実行して semantic データ ベースの整合性も確認することを推奨します。
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:
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.EDB Checking database integrity. Scanning Status (% complete) 0 10 20 30 40 50 60 70 80 90 100 |----|----|----|----|----|----|----|----|----|----| ................................................... Initiating DEFRAGMENTATION mode... Database: C:\Windows\NTDS\ntds.dit Defragmentation 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:\>
Initiating REPAIR mode... Database: C:\Windows\NTDS\ntds.dit Temp. Database: TEMPREPAIR1028.EDB
Initiating DEFRAGMENTATION mode... Database: C:\Windows\NTDS\ntds.dit
Defragmentation Status (% complete)
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: quit C:\Users\Administrator> なんかいい感じ
Integrity check successful.
file maintenance: quit ntdsutil: quit
C:\Users\Administrator>
なんかいい感じ
3.「Active Directory Domin Service」サービス を起動
4.イベントログを確認すると、問題が解決された模様
ということで、今回は急いでいるのでそれぞれのコマンドの詳細を解説していませんが、困っている方は参考になさってください。