平台:AIX,Linux, Solaris, Windows
软件版本:8.5,8.0,7.0,6.5,6.0,5.0
问题描述:
摘要
这篇文章的目的是描述怎样使用Lotus Domino实用程序(Updall, Compact, Fixup) 进行正常和异常维护。
解答:
目录
I.实用程序: Updall, Compact, Fixup
A. Updall
B. Compact
C. Fixup
II.用于每周维护的实用程序
III.用于还原的实用程序
*******************************************************
I. 三个实用程序:Updall, Compact, Fixup
A. Updall
Updall和Update很相似,但是它并不是持续运行,也不用在一个队列中排队。相反,你可以按需运行Updall。你可以在运行Updall的时候指定参数,但是如果没有指定的话,Updall会更新服务器上所有需要更新的视图索引和全文检索索引。为了节省磁盘空间,Updall会清除数据库中的删除标记,也会删除超过45天未用的视图索引,除非删除视图索引有其他限制条件。可以通过设置notes.ini中的Default_Index_Lifetime_Days,来改变Updall删除视图索引的时间。
如同Update, Updall重建它所执行到的所有损坏的视图索引和全文索引。
默认情况下,Updall包含在notes.ini配置文件ServerTasksAt2里面,因此它在凌晨2点运行。每天运行Updall将帮助节省磁盘空间,因为它清空了删除标记和未使用的视图索引。同时,它还保证了需要每天更新的全文索引检索得到更新。
Updall: 基本选项
任务中的选项 - 开始工具 |
命令行选项 |
描述 |
Index all databases Index only this database or folder |
databasepath | “Only this database”只更新指定的数据库。为了更新Domino Data目录中的一个数据库,需要输入文件名,xxxx.nsf。更新在Data目录中的某个文件夹中的数据库,则需要指定相对于data文件夹的数据库路径,比如doc\readme.nsf。 "Index all databases"(或者没有数据库路径)更新服务器上的所有数据库。 |
Update this view only | database -T viewtitle | 更新数据库中的指定视图。可以用-R去修复损坏的问题。 |
Updall - 更新选项
任务中的选项 - 开始工具 |
命令行选项 |
描述 |
Update: All built views |
-V |
更新视图但是不更新全文索引 |
Update: Full text indexes |
-F |
更新全文索引但是不更新视图 |
Update: Full text indexes; Only those with frequency set to Immediate |
-H |
只更新全文索引频率设置为“立即”的。 |
Update: Full text indexes; Only those with frequency set to Immediate or Hourly |
-M |
更新全文索引频率设置为“立即”或“每小时”的。 |
Update: Full text indexes; Only those with frequency set to Immediate, Hourly or Daily |
-L |
更新全文索引频率设置为“立即”,“每小时”或“每天”。 |
Updall - 重建选项
任务中的选项 - 开始工具 |
命令行选项 |
描述 |
Rebuild: Full text indexes only |
-X |
重建全文索引,但是不重建视图。用来重建那些全文索引已经损坏的数据库。 |
Rebuild: All used views |
-R |
重建所有访问过的视图。用这个选项会占用较大的资源,因此把它作为解决某个数据库损坏的最后一种选择。 |
Rebuild: Full-text indexes and additionally: All unused views |
database -C |
重建从未访问过的视图以及全文索引。需要指定一个特定的数据库。 |
Updall - 搜索场所选项
任务中的选项 - 开始工具 |
命令行选项 |
描述 |
Update database configurations: Incremental |
-A |
重建全文索引,但是不重建视图。当全文索引损坏时用来重建。 |
Update database configurations: Incremental |
-B |
完全更新搜索场所的数据库配置 |
B. 压缩
当一个数据库中的文档或者附件被删除时,Domino会重新使用未用的空间,而不是去立即减少文件大小。有时,只有当你压缩数据库后,Domino才能重新使用这些未用的空间碎片。
这里有三种压缩方式:
- 只有空间回收的现场压缩
- 空间回收和文件大小减少的现场压缩
- 复制方式的压缩
只有空间回收的现场压缩方式
这种方式的压缩恢复数据库中的未用空间,但是并不会减少数据库在磁盘中的大小。数据库保留同样的数据库实例IDs(DBIIDs),因此压缩的数据库和事务日志之间的关系依旧完整。在压缩期间,用户和服务器仍然能够访问并编辑数据库。当你希望数据库的大小不发生变化或有所增长的时候,可以选择这种压缩方式。
当你不指定选项运行Compact时,Domino就会使用这种方式压缩所有启用了事务日志的数据库。当你指定-b(区分大小写)来压缩任何一个数据库的时候,Domino同样也会采用这种方式。
提示:这种压缩方式最为常用,因为它运行最快而且对系统的影响最小。
现场压缩 - 重用空间并减小文件大小
这种方式的压缩会减少数据库的大小,同时回收数据库中没有利用的空间。和只进行空间重用的压缩方式相比,这种压缩方式较慢,并且会给数据库重新分配一个DBIIDs.如果你想通过一个认证的备份工具来把它记录在日志数据库中,请在压缩完成后执行一个数据库的完全备份。这种压缩方式允许用户或者服务器在数据库压缩过程中访问或者修改数据库。
当你不指定任何选项运行Compact时,Domino就会用这种方式来压缩所有未启用事务日志的数据库。当你指定-B选项的时候Domino也用这种压缩方式。为了优化磁盘空间,建议您每周一次或每月一次用-B选项来执行Compact。
复制方式的压缩
复制方式的压缩将复制数据库的拷贝,并在压缩完成之后之后删除原先的数据库。因此这种压缩方式要求磁盘上有足够的额外空间以存放拷贝的数据库。这种方式的压缩其实是创建了由新的数据库ID标识的新数据库。如果你在日志数据库上使用复制方式压缩(用-c选项),压缩会创建新的DBIIDs,因此当使用认证的备份工具时,请在所有的压缩完成后立即对所有数据库进行备份。当你使用复制方式压缩时,用户和服务器都不能编辑数据库而只能在-L选项选中的条件下浏览数据库。
当压缩会导致数据库结构性的改变时,Domino会默认使用复制压缩方式。当数据库属性窗口引发未执行的数据库结构性的改变时,亦然。激活或关闭数据库属性“优化文档表格映射”和“不支持指定的答复层次”都需要数据库的结构性改变。
何时压缩数据库
建议您每周或每月压缩数据库,并使用-B选项来节省磁盘空间。如果你要使用一个认证的备份工具,则需要在运行前完成压缩。
Compact - 基本
选项 |
命令行参数 |
描述 |
只压缩指定的数据库或文件夹。选择第一个选项卡来指定要压缩的数据库,在第一个面板中选择数据库。 | database path 在database path后面可以指定其他的选项 |
为了在Domino Data文件夹中压缩数据库,首先输入文件名,比如sales.nsf。 在Domino Data路径下中压缩一个文件夹,请指定对于Data文件夹的相对路径,比如,压缩Data\Sales中的所有数据库,指定Sales。 如果你选择“压缩所有数据库”或不指定数据库路径,Compact命令会压缩在Data文件夹下的所有文件夹和数据库。 |
Compact - 选项
选项 |
命令行参数 |
描述 |
只有当未用空间大于百分之x的时候执行压缩 |
-S percent |
压缩指定未用空间比例的数据库。例如,如果你指定这个比例是10,那么未用空间是10%或以上的数据库会被压缩。注意,未用空间的计算并不是总是可靠。 |
删除所有的视图索引 |
-D |
删除建立的视图索引。在准备将数据库备份到磁带之前使用这个选项。压缩是复制方式的。 |
保持或回复数据库到之前的格式 |
-R |
压缩数据库但并不把它转成当前存储数据库的服务器的文件格式,或者转换成之前的文件格式。例如,在Domino6服务器上,这个选项压缩Domino 5的数据库却并不把它们转成Domino 6的文件格式,并把Domino6的数据库转成Domino 5的格式。 这个选项用复制方式的压缩。 |
Compact - 方式
选项 |
命令行参数 |
描述 |
In-place (recommended) |
-b |
用现场压缩方式并且回收未用空间,并不会减少文件大小,除非数据库的结构会有变化。当有结构性变化时,会引发复制方式的压缩。 这是我们推荐的压缩方式。 |
In-place with file size reduction |
-B |
用现场方式压缩,恢复未用空间并且减少文件大小,除非有会引起复制方式压缩产生的数据库结构的变化。如果你启用事务日志,请在压缩完成之后对所有数据库进行备份。 |
Copy-style |
-c |
用复制方式的压缩。用这种方式来解决数据库损坏的问题。 |
Copy-style: Allow access while compacting |
-L |
让用户能够在数据库压缩时候持续访问数据库。如果用户在压缩过程中编辑数据库,压缩将取消。当复制方式的压缩完成时候有效。 |
Copy-style: Ignore errors and proceed |
-i |
启用压缩并且忽略错误(比如文档损坏)。只适用于复制方式的压缩。 |
Compact - 高级
注意高级压缩选项在Domino Administrator的文件选项卡的压缩工具中并不可用。
选项* |
命令行参数 |
描述 |
Document table bitmap optimization: Off |
-f |
禁用数据库的“文档表格位图优化”属性。进行复制方式的压缩。 |
Document table bitmap optimization: On |
-F |
启用数据库的“文档表格位图优化”属性。进行复制方式的压缩。 |
Don't support specialized response hierarchy: Off |
-h |
禁用数据库的“不支持指定的回复层次结构”属性;换句话说,支持指定的回复层次结构。进行复制方式的压缩。 |
Don't support specialized response hierarchy: On |
-H |
启用数据库的“不支持指定的回复层次结构”属性;也就是说,不支持指定的回复层次结构。进行复制方式的压缩。 |
Enable transaction logging: Off |
-t |
禁用事务日志。 |
Enable transaction logging: On |
-T |
启用事务日志。 |
Don't maintain unread marks: Off |
-u |
禁用数据库的“不保留未读标记”属性;也就是说,保留未读标记。 |
Don't maintain unread marks: On |
-U |
启用数据库的“不保留未读标记”属性;也就是说,不保留未读标记。 |
注意:在你启用或禁用任何一个上面的属性之前,请选择“设置高级属性”。
C. Fixup
当你重启一台服务器时,服务器会快速搜寻所有的未记录的数据库,这类被编辑过数据库因为服务器的错误、电源错误或硬件错误等等而非正常关闭。在服务器启动完成之后的几分钟之内,Fixup任务会尝试去修复因为部分写操作引起的不一致性,这部分写操作正是因为上面提到的错误引起的。当用户尝试去访问这些数据库,但是Fixup任务并没有完成的时候,用户会看到一个提示信息“一致性检查正在进行中,此数据库不能打开”。当你重启一个Lotus Notes客户端的时候,也会引发类似的Fixup进程。
当服务器启动的时候,多个Fixup任务同时运行,以减少修复数据库的时间。Domino默认启动的Fixup任务的数量相当于服务器上处理器数量的两倍。虽然这种默认的处理方式适用于大多数情况,你依旧可以通过修改NOTES.INI文件来修改Fixup_Tasks的设置。实际运行的任务的数量是你配置的任务数和需要修复的数据库数中较小的那个。比如,你设置Fixup_Tasks为4,但是只有一个数据库需要修复,那么将只有一个Fixup任务运行。
请记住,当你设立事务日志之后,并不需要使用修复功能来保持数据库一致。
Fixup - 选项
在Fixup工具和任务中的Fixup选项 |
命令行参数 |
描述 |
Fixup all databases Fixup only this database or folder |
databasepath |
“只修复这个数据库或文件夹”只对某一个数据库或一个指定文件夹中的所有数据库运行修复任务。在Domino data目录中的一个数据库运行Fixup,输入文件名,比如 SALES.NSF。对data目录下的文件夹中的数据库运行Fixup,输入对于data文件夹的相对路径。比如,在DATA\SALES文件夹下的所有数据库运行Fixup,指定SALES。
"Fixup all databases" 或者没有指定命令行数据库路径会修复服务器端的所有数据库。 说明 为了指定数据库或文件夹来运行Fixup工具,选择指定的数据库或文件夹。 |
Report all processed databases to log file |
-L |
把Fixup打开和检查损坏的所有数据库都记录到日志文件中。没有这个参数的话,Fixup只记录实际碰到的问题。 |
Scan only since last fixup |
-I |
当你在某个指定数据库上运行Fixup,Fixup只检查从上一次该命令运行后修改过的文档。没有这个选项的话,Fixup会检查所有文档。 |
Scan all documents |
-F |
当你在所有的数据库上运行Fixup,Fixup会检查数据库中的所有文档。没有这个选项的话,Fixup只检查上一次运行后修改过的文档。
|
Perform quick fixup |
-Q |
快速检查文档,但不够全面。没有这个选项的话,Fixup会全面检查每个文档。 |
Exclude views (faster) |
-V |
组织Fixup在视图上运行。这个选项可以减少Fixup运行的时间。当视图没有损坏时使用这个选项。 |
Don't purge corrupted documents |
-N |
阻止Fixup清除损坏的文档,这样当下次Fixup运行的时候或者下次用户打开数据库的时候,Fixup必须再次检查该数据库。 |
Optimize user unread lists |
-U |
将数据库中的ID tables恢复成上一个版本格式。不要选择这个选项,除非客户服务人员建议这么去做。 |
Fixup transaction-logged databases |
-J |
运行于开启事务日志的数据库。没有这个选项,Fixup通常不运行。
如果你正在使用一个认证的备份工具,请在Fixup执行完成之后立即计划备份。 |
Fixup open databases |
-O |
如果你在打开的数据库上运行Fixup,Fixup会使数据库脱机再执行。 这是你指定一个数据库运行Fixup的默认情况。如果没有这个选项,数据库未指定名字并处于打开状态,Fixup不会运行。 |
Don't fixup open databases |
-Z |
只在单个数据库上运行Fixup。当一个数据库在使用,没有脱机的时候,Fixup不会运行。 当Fixup在多个数据库上运行的时候,这是默认值。 |
Verify only |
-C |
检查数据库的完整性并报告错误。不修改数据库(比如,不会清除损坏的文档) |
Fixup subdirectories |
-Y |
对子目录中的数据库运行Fixup。 |
Don't fixup subdirectories |
-y |
不对子目录中的数据库运行Fixup。 |
II. 最常用的每周维护
如果你没有开启事务日志,运行下面的命令进行每周维护,建议维护最好在周末服务器工作量不太大的时候进行:
Compact –B –s 10
如果你开启事务日志,运行下面的命令进行每周维护:
Compact –b –s 10
上面的命令压缩剩余空间大于10%的数据库。参数"-b"和"-B"表示现场压缩。"-b"是和事务日志一起使用的,因此不会给数据库指定新的dbIIDs。
没有必要每周运行Fixup或者Updall。只有当数据库有损坏迹象的时候才运行Fixup。Updall默认在每晚自动运行。在可能出现视图损坏的时候,应该运行带参数的Updall。
注意:周期性的通过Updall -r重建视图,通过Updall -x重建全文索引是一个很好的习惯。
III. 最常用的还原程序
当数据库需要修复的时候,用下面的步骤来恢复。这部分也包括了在不同的操作系统平台上通过命令行来运行Domino维护工具的操作指南。
我们什么时候应该用不定期维护?
顾名思义,不定期维护是没有固定周期的,它包括数据库修复和数据库升级。具体的维护依赖于维护的任务和数据库类型。如果Domino 目录中有损坏发生,Domino服务器必须停止运行并进行维护。
数据库损坏
数据库的崩溃是由一些非常规的原因,而不是通常的如用户投诉或报错信息所产生。比如,当服务器产生显示数据库损坏的消息(有时候会造成系统崩溃),会有下面的输出信息:
-- "database.nsf is damaged....
-- DbMarkCorrupt(DbFixup: invalid slot found, could not be repaired)...
-- database.nsf is CORRUPT - Now Read-Only!"
如果数据库开启事务日志
如果你使用事务日志来记录Domino数据库的变化,服务器会在系统出错后自动使用一个事务日志去恢复和还原任何开启事务日志的数据库。没有设置事务日志的数据库通过常规的一致性检查来检查。如果产生一个磁盘错误,并且存档方式的事务日志被开启,你可以通过事务日志和认证的备份工具来还原恢复数据库。
如果这些步骤都失败,尝试用下面的办法:
1. fixup database.nsf -J -F
2. compact database.nsf -b
3. updall database.nsf -R -X
这些程序会改变和事务日志相关的数据库的dbIID,因此如果你运行存档方式的事务日志,要立即执行一个完整的数据库备份。
如果数据库没有事务日志
如果数据库没有事务记录,运行下面的命令:
1. fixup database.nsf -F
2. compact database.nsf -c -i
3. updall database.nsf -R -X
另一个选择
如果上述的步骤也没有成功,试着创建数据库的一个副本来代替原来的数据库。创建副本会强制重建整个数据库,能够修复一些数据库损坏或者移除一些无法复原的元素。
在工作日处理数据库损坏
1. 用下面的方式运行Fixup来检查损坏的数据库的完整性,并且在不做任何修改的情况下报告出检查的问题:"fixup database.nsf -L –F -O -C"
2. 一般不建议在工作时间用Fixup工具来进行修复。如果不能等到非工作时间再去修复数据库的话,那么用下面的方式运行compact任务:
compact database.nsf -c -L -i
注意:强烈建议开启事务日志,以确保数据库的完整性。如果开启事务日志,Fixup就没有必要运行。
3. 运行了上述任一命令后,运行下面的命令来重建视图和索引(如果可以的话,最好等到非高峰时间运行)。
updall database.nsf –R -X
了解更多的信息,请参考Document #1193738, "Managing corruption recovery during the business day."
服务器升级
当Domino服务器升级到下一个版本时,数据库在磁盘上存放的物理方式(磁盘结构)也会升级。在升级之前确保数据库结构是有效的和一致的非常重要。这么做可以避免数据库升级过程中的错误信息。当升级过程中碰到数据库错误,Domino上新版本的工具会有所帮助。尽管是可选的,升级每个数据库的全文索引是很容易的,因此我们推荐选择执行,让你享用新版的Domino服务器上最新的全文检索引擎。
升级之前
1. 升级之前,推荐你按如下方式在目前的服务器上通过对视图运行Updall完成数据库清理:
updall –R –X
在升级之前有多种选项可以去执行。运行Updall -R -X 是避免数据库损坏的最好选择,因为它完全重建了视图索引和全文索引。其他的一些选项包括:
Updall -v (更新视图索引)
Updall -R (完全重建视图索引)
Updall -X (完全重建全文索引)
2. 你应当运行"fixup -F"来完成一致性检查。
注意:如果你开启事务日志,你可以不用运行Fixup,但是如果你希望这么去做,记住要加上-J参数。
3. 这样运行Compact:"compact –c –i"
注意:如果你开启事务日志,请移除 -c和-i参数,要记住加上-b。这和大写的-B是完全不一样的,-B会改变任何一个开启事务日志的数据库的dbIID。
如果邮件文件在服务器升级后损坏
1. 运行 "fixup –F".
2. 运行 "compact -c -D -i –K" (copy-style, delete view indexes, ignore errors, set large UNK table bit).
3. 运行 "updall –R –X".
更多的信息,请参阅 Document #1201020, "Error: 'Database Is Corrupt; Cannot Allocate Space' when Opening Database After Server Upgrade."
升级之后
升级之后,强烈建议升级到最新的搜索引擎。即使Domino向前兼容支持所有以前版本的全文引擎,用"updall –X"升级到最新版本仍是个好主意。新的引擎会重建所有的全文索引,并启用它的新功能。
何时不应该使用非周期性的维护?
Domino会自动的检测和修复数据库问题,或者也许数据库本身没有问题。因此即使你的第一反应是去检测一个受到影响的数据库,但是请在做之前考虑如下:
第一次崩溃发生的时间
虽然系统崩溃会导致数据库不一致,但是Domino会在重启时运行一致性检查(如果事务日志没有开启)来修复一致性问题。在一致性检查中,Domino尝试去修复任何损坏的数据库/文档。如果没有任何错误,通常来说不需要运行Fixup,建议不要运行Fixup作为常规维护。如果服务器反复崩溃并且NSD显示和某个数据库相关,运行Fixup就有必要。这种情况下,建议在Domino停止服务的状态下运行Fixup。
如果系统崩溃不是因为数据库原因而引起的
如果崩溃堆栈没有显示任何和数据库相关的信息,那么应该可以排除数据库损坏(除了前面提到的可能的不一致状态),那么也没有必要运行数据库修复。
如何从命令行来运行Domino维护程序
通过命令行运行维护程序的方法和语法在不同平台上会有所不同。下面的例子展示了如何从Windows,iSeries和Unix/Linux/zSeries在names.nsf上运行修复。这些例子也可以指导如何通过命令行运行Compact和Updall。
注意:如果Domino目录发生损坏,必须在Domino服务器停止的状态下运行Fixup。
在Windows上,用"nfixup names.nsf –F"。注意,如果你开启事务日志,记住加上-J参数。
在iSeries上,用下面的:
RUNDOMCMD SERVER(serverName) CMD(CALL PGM(QNOTES/FIXUP)
PARM(‘names.nsf’ ‘-F')) BATCH(*NO)
如果你开启事务日志,记住在-F后面加上-J。当然,必须从QSECOFR或等同QSECOFR上运行。
对于Unix/Linux/zSeries,请使用"<path>/fixup names.nsf -F"。注意,如果你运行了事务日志,务必加上-J参数。另外,你必须以Notes用户登录,并以Notes data目录作为当前目录。