[XXX级别]华为3Com机密未经许可不得扩散第1页共4页iMCDBMAN数据库备份恢复失败的处理经验一、组网:无。二、问题描述:iMCPLAT自带了数据库自动备份/恢复工具(DBMAN)为用户提供全面的系统灾备解决方案,通过DBMAN用户可以实现对iMC平台数据库(如config_db、monitor_db等)和组件数据库(如:UAM组件数据库ead)的自动备份与恢复处理。DBMAN采用了标准的SQL备份和恢复机制,它的数据处理对象是完整的数据库。用户只需根据不同的使用场景进行相应的配置及操作,便可通过DBMAN进行手动和自动两种方式的数据备份和恢复。正因为DBMAN对数据库自动备份恢复的智能性,安装部署的方便性,DBMAN解决方案得到了很大推广,目前90%以上局点都是采用DBMAN解决方案。但在使用过程中,经常出现DBMAN数据库备份或恢复失败的问题,而iMC的运行状态和DBMAN工具运行正常。三、过程分析:DBMAN备份恢复失败的原因很多,根据经验将有可能碰到的情况进行如下说明。iMC安装目录/dbman/log/dbman_debug.log日志文件记录了数据库备份、恢复的完整过程,在数据库备份恢复失败时可以参考该日志文件进行定位。为了方便阅读,将问题原因和解决方案一并列出,如下:1、主备iMC服务器备份或恢复路径有中文字符问题问题现象:数据库备份,恢复失败。问题分析:查看dbman_debug日志,有如下error信息:04:00:49[ERROR][intTimeBackup()]Openthedatabsefileerror.File=D:\imc安装文件\backup\db_catalog_20130905_040002.dat.问题原因:备份、恢复路径不能存在中文字符。解决方案:修改备份、恢复路径为英文字符方可。2、版本不一致问题问题现象:数据库备份成功,恢复失败。问题分析:查看dbman_debug日志,有如下error信息:公元17年16:42:13[ERROR][checkDBFile()]Fileprefixinvalid:vnm_db_imc_vnm,pleaseconfirmwhethertheDBuseraresameoneonmainserverandstandbyserver.Ifnot,pleaseusethecommanddbman-helptogetmoreinformation.[XXX级别]华为3Com机密未经许可不得扩散第2页共4页问题原因:DBMAN要求版本必须一致。解决方案:安装或卸载对应iMC组件,确保其版本一致方可。3、数据库用户dba到imc问题问题现象:数据库备份成功,恢复失败。问题分析:查看dbman_debug日志,有如下error信息:公元17年16:42:13[ERROR][checkDBFile()]Fileprefixinvalid:config_db_dba_db_20101126_220012_full.db,pleaseconfirmwhethertheDBuseraresameoneonmainserverandstandbyserver.Ifnot,pleaseusethecommanddbman-helptogetmoreinformation.对于从早期版本(例如PlatR2602及其之前版本)升级上来的iMC,部分数据库使用dba用户,使用dbman进行备份,将dba用户对应的数据库文件作为原始文件,试图恢复到目标数据库PlatR2606及以上版本时,会提示恢复失败。主要问题原因为PlatR2606及之后的版本的这些数据库不再使用dba用户,而是使用imc用户。问题原因:数据库用户不同不能恢复。解决方案:1)使用dbatool工具恢复a.将工具dbatool.exe拷贝到“iMC\dbman\bin”目录下;b.停止iMC;c.通过执行命令行dbatool-dba2imc‘BackupFileLocation+Backupfilename’,来逐一手工恢复dba数据库文件到目标数据库,以恢复config数据库为例,恢复成功提示如下:d.对于非dba用户对应的数据库文件(UAM/EAD/CAMS数据库除外),也可以使用该工具进行恢复。2)备机也从R2606之前的版本开始安装以确保数据库用户名一致。4、数据库无法登陆问题问题现象:数据库无法恢复。[XXX级别]华为3Com机密未经许可不得扩散第3页共4页问题分析:查看dbman_debug日志,有如下error信息:公元17年10:57:37[ERROR][intCDbBase::ExecSql()]Execcommandfail:USEmasterRESTOREDATABASEaclm_dbfromDISK='E:\IMC_restore\aclm_db_imc_aclm_db_20131101_104503_full.db'withREPLACE公元17年10:57:37[DEBUG][intCDbBase::ExecSql()]Execsqllog:[SQLServerNativeClient10.0]TCP提供程序:超时错误[258].[SQLServerNativeClient10.0]登录超时已过期[SQLServerNativeClient10.0]用于登录响应中的延迟,无法完成登录过程数据库用户登录异常导致数据库恢复失败。问题原因:相应数据库登陆失败。解决方案:解决对应用户正常登录数据库问题即可。5、数据库之间文件簇问题问题现象:数据库恢复失败。问题分析:查看dbman_debug日志,有如下error信息:公元17年15:06:29[DEBUG][intCDbBase::ExecSql()]Execsqllog:消息3241,级别16,状态7,服务器WIN-7NNV0POC4PU,第1行设备'D:\iMC5.2\imcbak0113\5.2.E0402P07-ead_ead_db_20140113_104610_full.db'上的媒体簇的结构不正确。SQLServer无法处理此媒体簇。消息3013,级别16,状态1,服务器WIN-7NNV0POC4PU,第1行RESTOREDATABASE正在异常终止。问题原因:数据库本身低版本可以向高版本兼容,但高版本向下不兼容,即SQLServer2005备份的数据库可以在SQLServer2008版本恢复,但SQLServer2008备份的数据库不支持在SQLServer2005版本恢复。解决方案:安装相同SQLServer版本进行数据库恢复。6、dbman\etc\文件夹下,增加了以“.skip”为后缀名的文件[XXX级别]华为3Com机密未经许可不得扩散第4页共4页问题现象:Dbman运行正常,但部分数据库未备份。问题分析:iMC中某些组件的数据量很大(如NTA),在配置Dbman时,无需对它进行备份和恢复。处理方法如下:在dbman\etc\文件夹下,增加以“.skip”为后缀名的文件(如nta.skip),文件内容如下:dbName=nta_db(用于SQLServer)dbUserName=imc_nta(用于Oracle)Dbman配置程序会自动读取该文件,进行过滤。上述配置文件中提及的数据库,将不再进行备份。问题原因:增加了skip文件。解决方案:取消以“.skip”为后缀名的文件。四、解决方法:具体见过程分析章节中的解决方案。