做DOORS备份和恢复时,最怕的不是没有备份,而是备份方式不对,或者恢复以后直接拿模块开工,等到模块打不开才回头补查。IBM官方把这件事分得很清楚:磁盘级备份用标准文件系统备份工具,模块和项目级防误删则用archive;而恢复后如果模块异常,还要分清是权限丢失、历史数据不一致,还是数据库完整性本身出了问题。把这几层顺序理顺,后面排查会省很多时间。
一、DOORS数据备份怎么执行
先不要把“备份模块”和“备份数据库”混成一件事。IBM官方说明,真正防磁盘故障的是磁盘级备份,真正防项目或模块被误删的是archive,这两条线要一起做,而不是二选一。
1、先做磁盘级备份
IBM官方建议用标准文件系统备份工具备份DOORS所在磁盘;对DOORS数据,支持全量备份和差异备份,但不建议做增量备份,因为恢复步骤会更复杂。
2、备份前先把使用环境停干净
正式备份前,要先让所有用户退出DOORS;如果在用DWA,还要先停DWA;然后再停DOORS数据库服务器。IBM官方特别提醒,文件一旦处于打开状态,很多备份工具会跳过这些文件,最后就可能得到一份不一致的备份。
3、备份后按顺序恢复服务
磁盘备份完成后,先重启DOORS数据库服务器,再重启DWA。这样做的目的不是走流程,而是保证数据库重新可用后,Web端和集成端再跟着恢复。
4、模块和项目再单独做archive
IBM官方同时说明,DOORS archive用来备份项目、模块以及用户和组信息,适合防止误删或误操作。模块和项目archive可以恢复,但官方强调这类archive更适合恢复到原来的同一数据库里使用。
二、DOORS数据恢复后模块打不开怎么处理
模块打不开时,先不要直接判断成“文件坏了”。更稳的做法,是先确认这次恢复走的是哪一条恢复路径,再判断问题更像权限、历史数据不一致,还是数据库完整性问题。IBM官方对这些边界写得比较清楚。
1、先确认是不是恢复到了同一个数据库
IBM官方明确说明,项目和模块archive应恢复到创建它们的同一数据库;如果恢复到别的数据库,访问权限会丢失,项目里的change proposal systems也会丢失。也就是说,恢复后模块打不开,第一步就该先确认不是跨数据库恢复导致的环境不一致。
2、如果是整库损坏,不要只修单个模块
如果问题已经上升到整个DOORS数据库损坏,IBM官方建议直接从磁盘备份恢复整块磁盘,而不是只抓某个模块补救;如果环境还用了DWA和JRS或TRS相关集成,恢复DOORS数据库时还要同时恢复对应的Derby数据库,避免集成数据不一致。
3、模块能打开时先做历史一致性检查
如果模块还能以独占编辑方式打开,就先执行【Tools】【Check data against history】。IBM官方说明,这个功能会把当前模块和模块历史做对比,生成差异报告,并且可以恢复检查到的丢失数据。这个入口很适合处理“能开但内容不对”的情况。
4、模块打不开时先跑数据库完整性检查
如果模块已经打不开,先不要急着在对象层修。IBM官方说明,Database Integrity Checker可以识别并修复数据库完整性问题,管理员用户可以从数据库、项目或文件夹层发起完整性检查。对恢复后模块异常的情况,这一步比直接手工翻目录更稳。
5、遇到.dtc缺失这类报错时要提高警惕
IBM支持文档有一篇专门针对archive restore后出现“Unable to open module...No such file or directory...*.dtc”的故障文章,公开摘要确认了这是一个真实的恢复后开模块失败场景。公开页面没有给出完整处理步骤,所以如果你看到的正是这类`.dtc`缺失报错,更适合尽快按支持路径处理,而不是继续在客户端层面硬试。
三、DOORS恢复排查先从哪一层下手
恢复类问题最怕顺序反了。明明是整库恢复方式不对,却一直在模块里点;明明是archive恢复到错数据库,却反复怀疑对象内容。更稳的排查顺序,应该是先看恢复层级,再看模块状态,最后才看模块内容。这样更容易一次把问题圈住。
1、第一层先查恢复方式
先分清这次是磁盘级恢复、项目或模块archive恢复,还是只是想把旧内容拿回来查看。因为不同恢复方式对应的后续处理完全不同,尤其archive恢复还有“必须在同一数据库”这个硬边界。
2、第二层再查模块现在能不能打开
如果模块还能打开,就先走历史一致性检查;如果已经打不开,就先走数据库完整性检查。这个分流很重要,因为IBM官方把这两个入口设计成了解决两类不同问题,不适合混着用。
3、第三层最后才查模块内容和链接
当恢复方式、数据库完整性和模块可打开状态都已经站稳,再去看对象内容、链接和历史差异才有意义。否则你前面看的很多内容,很可能都建立在错误恢复状态之上。这个判断是结合IBM官方对archive、history compare和integrity checker的定义整理出来的,更适合日常恢复排查。
总结
DOORS数据备份怎么执行,关键不是只做一次模块导出,而是同时把磁盘级备份和项目或模块archive两条线都建立起来,并且在备份前先让用户退出、停掉DWA和数据库服务。DOORS数据恢复后模块打不开怎么处理,重点也不是一上来就修模块,而是先确认是不是恢复到了同一数据库,再判断问题属于整库损坏、历史数据不一致,还是数据库完整性异常。按“先恢复层级、后模块状态、再内容差异”的顺序去排,处理这类问题通常会稳很多。
