在我和管理员们的日常工作中,我发现许多人对动态目录数据库操作和维修缺乏全面了解。 其中一个领域涉及如何在动态目录下实现Jet数据库的对话功能。我最近就遇到过这样一种情况,这使得我对这些步骤比较熟悉,我认为通过分享这些有用的信息以及回顾一些数据库基础知识来保持动态目录让人满意,这对很多同行都是有帮助的。 虽然动态目录的Jet数据库不是世界上最灵活的数据库技术,但这些年来它在动态目录服务中表现不俗。
它的运用与Exchange Server相同,但却不用做那么多的维护工作。例如,你不必做重放事务日志之类的恢复性操作。事实上,以我的经验,活动目录的数据库——可以完美的进行自我修复。 动态目……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
在我和管理员们的日常工作中,我发现许多人对动态目录数据库操作和维修缺乏全面了解。
其中一个领域涉及如何在动态目录下实现Jet数据库的对话功能。我最近就遇到过这样一种情况,这使得我对这些步骤比较熟悉,我认为通过分享这些有用的信息以及回顾一些数据库基础知识来保持动态目录让人满意,这对很多同行都是有帮助的。
虽然动态目录的Jet数据库不是世界上最灵活的数据库技术,但这些年来它在动态目录服务中表现不俗。它的运用与Exchange Server相同,但却不用做那么多的维护工作。例如,你不必做重放事务日志之类的恢复性操作。事实上,以我的经验,活动目录的数据库——可以完美的进行自我修复。
动态目录Jet数据库支持%SystemRoot%NTDS并且包含Ntds.dit(数据库)文件和事务日志文件,如图1(Windows 2000和2003)和图1A(Windows 2008)所示。像其它的Jet数据库一样,当前数据库是事务日志文件及Ntds.dit数据库文件中未被授权的记录的结果。
图1.运行在Windows2000和2003中的动态目录Jet数据库
图1A.运行在Windows2008中的动态目录Jet数据库
如图2所示,Edb.chk文件指示哪些事务日志项已经实施。每次的更新数据都被写入.dit文件。作为一种最佳做法,数据库和日志文件应存放在不同的分区(轴)。 Windows Server 2003中通过使用一个安全描述符,在存储的效率和Ntds.dit的大小上得到了巨大的改善。如果您还在使用Windows 2000 Server的域控制器(DCs)(我知道有很多这样的配置环境)——当您使用Windows Server 2003的时候将会大不相同。
图2. 事务日志写入Jet数据库
重要地是要注意,像其他事物一样,如果把Ntds.dit加载到物理内存,依赖Ntds.dit的网域控器的操作(认证,LDAP操作,等等)会更快。Ntds.dit驻留在本地安全认证子系统(LSASS)进程分配的内存中,因此很容易看到它是否适合在物理内存中。强烈建议使用X64域控制器,因为平面内存模型允许配置足够的物理内存加载Ntds.dit到随机存取内存。
注:想要了解更多信息,请参阅我以前写的关于动态目录的本地安全认证子系统进程文章。
数据库碎片整理
在更小,更稳定的运行环境中,完全忽略数据库维护是可行的。定期做一个联机碎片整理并在目录服务日志中记录一天记录一次。用ID 700事件指示碎片整理开始,ID 701事件则指示其完成。
虽然这聊胜于无,但是它还是不能摆脱数据库中的“空白符”。例如,如果您删除大量的对象,你就必须做一个联机碎片整理以恢复空间。下面是执行脱机碎片整理的具体步骤来:
1. 在目录服务还原模式(DSRM)下启动域控制器。
2. 在命令提示符处打开NTDSUtil.exe。
a. 如果使用Windows2008 and R2, 执行:
Ntdsutil>Activate Instance NTDS
(使用Windows 2000 or 2003略过)
3. 在NTDSUtil提示符处输入Files回车,打开文件管理菜单。
4. 在文件管理菜单中输入一个问号(?)回车,查看所有可以使用的命令。我们可以使用Compact选项。这个选项需要一个临时的文件地址名来存放压缩后数据库。
5. 为数据库新建一个临时的文件地址,比如C:ESE-Backup。
6. 在文件管理菜单提示符处输入c:ESE-Backup。
7. 当压缩完成后,你可以看到如图3所示的回馈信息。
8. 按照提示,把c:ESE-Backup中新压缩过的Ntds.dit复制到c:windowsntdsntds.dit中(覆盖旧文件),然后删除这四个日志。仅留下Edb.chk,Temp.edb 和 Ntds.dit这三个文件。
图3.已完成压缩操作
数据库修复
有些时候,你会发现事件指示NTDS数据库错误(他们在事件中的描述很明显)。根据一般经验规则,当你遇到这样的错误时是因为使用了在NTDSutil主菜单中的语义数据库分析选项,如图4所示。
图4. 语义数据库分析
在语义检查提示符上,有两个选项很有意思:Go和Go Fixup。我这么多年来从来没有过使用这个命令的负面经验;无论它能不能解决问题,它都不会损坏任何东西。考虑到这一点,最好使用Go Fixup(转到链接地址信息)功能。我从来就无法分辨它发现的任何问题(见图5),所以得知它是否有帮助的唯一方法就是看事件是否退出或者你在试图修复消失的信息。再次——当你看到在事件日志中的数据库错误时就运行它,它不会造成任何损坏。
图5. 转到链接地址信息的功能