首页 > 代码库 > maximo数据库配置中,应用配置变更时出错、中断或删除某表字段后出现问题

maximo数据库配置中,应用配置变更时出错、中断或删除某表字段后出现问题

如果数据库配置期间出错或者配置过程被中断,以及删除某表的某字段之后也许系统会出问题,

包括数据库配置界面无法查询(这个可以先打开管理方式,然后放弃应用配置变更,可以恢复,但数据库配置应该是未完整的)

以及添加某字段时提示表已存在这个字段,但属性界面里并没有这个字段,同时数据库中相应的表存在这个字段,

上述现象可能都是数据库应用配置变更期间系统未完整完成配置

解决方法:
除了查看当前表的表字段之外,还应查看maxattribute,maxattributecfg这两个表,将未完成的配置添加进去,可参照已有数据来添加

如:为pm表添加isforce字段
查看是否配置完整
select * from maxattribute where attributename=‘ISFORCE‘ and objectname=‘PM‘;

select * from maxattributecfg where attributename=‘ISFORCE‘ and objectname=‘PM‘;

如无相应数据,则执行数据插入操作,如:
insert into MAXATTRIBUTE (OBJECTNAME, ATTRIBUTENAME, ALIAS, AUTOKEYNAME, ATTRIBUTENO, CANAUTONUM, CLASSNAME, COLUMNNAME, DEFAULTVALUE, DOMAINID, EAUDITENABLED, ENTITYNAME, ESIGENABLED, ISLDOWNER, ISPOSITIVE, LENGTH, MAXTYPE, MUSTBE, REQUIRED, PERSISTENT, PRIMARYKEYCOLSEQ, REMARKS, SAMEASATTRIBUTE, SAMEASOBJECT, SCALE, TITLE, USERDEFINED, SEARCHTYPE, MLSUPPORTED, MLINUSE, HANDLECOLUMNNAME, MAXATTRIBUTEID, RESTRICTED, LOCALIZABLE, ROWSTAMP, TEXTDIRECTION, COMPLEXEXPRESSION)
values (‘PM‘, ‘ISFORCE‘, ‘ISFORCE‘, null, 127, 0, null, ‘ISFORCE‘, ‘0‘, null, 0, ‘PM‘, 0, 0, 0, 1, ‘YORN‘, 0, 1, 1, null, ‘是否强制点检‘, null, null, 0, ‘强制点检‘, 1, ‘EXACT‘, 0, 0, null, 60788, 0, 1, 5953206, null, null);

insert into MAXATTRIBUTECFG (OBJECTNAME, ATTRIBUTENAME, ALIAS, AUTOKEYNAME, ATTRIBUTENO, CANAUTONUM, CLASSNAME, COLUMNNAME, DEFAULTVALUE, DOMAINID, EAUDITENABLED, ENTITYNAME, ESIGENABLED, ISLDOWNER, ISPOSITIVE, LENGTH, MAXTYPE, MUSTBE, REQUIRED, PERSISTENT, PRIMARYKEYCOLSEQ, REMARKS, SAMEASATTRIBUTE, SAMEASOBJECT, SCALE, TITLE, USERDEFINED, CHANGED, SEARCHTYPE, MLSUPPORTED, MLINUSE, HANDLECOLUMNNAME, MAXATTRIBUTEID, RESTRICTED, LOCALIZABLE, ROWSTAMP, TEXTDIRECTION, COMPLEXEXPRESSION)
values (‘PM‘, ‘ISFORCE‘, ‘ISFORCE‘, null, 127, 0, null, ‘ISFORCE‘, ‘0‘, null, 0, ‘PM‘, 0, 0, 0, 1, ‘YORN‘, 0, 1, 1, null, ‘是否强制点检‘, null, null, 0, ‘强制点检‘, 1, ‘N‘, ‘EXACT‘, 0, 0, null, 60788, 0, 1, 5994057, null, null);


其中有一个标志位是显示此记录是新添加的还是已保存的,上述是直接插入标志位为已保存的记录,所以在数据库配置界面不用再应用配置变更,
如果插入的记录的数据标志位为添加,则还应在数据库配置中应用配置变更
标志位在maxattributecfg 表中,是其中的CHANGED这个字段,新增的记录这个字段是I,已保存的是N


========================
蛋疼的分割线
==================
似乎是可以只添加maxattributecfg这个表的记录,然后标志位为I(新增),然后到数据库配置界面应用配置变更就可以了

注意,如果按上述这样的操作,标志位为I,则maxattribute 表中应该是不应有对应的记录的,并且相应的表中也不应该存在相应的字段,如上述pm表中的isforce是不该存在的,
因为应用配置变更的时候会为pm表添加这个字段,所以如果配置应用变更前就存在则应用变更会出错

 

*************************大坑******************************


maxattributecfg 是对应数据库配置显示的内容

配库就是读取maxattributecfg ,增加/修改maxattribute,然后在数据库里添加/修改字段

只要maxattributecfg maxattribute 数据库实际字段 三个能对应得上,就OK了

 

 下面这个所说的错误不一定是这样的解决方法,主要还是要根据上面说的查看一下配置是否都完整了,下面这个是我当时查看系统配置日志,然后将其中与之前配置成功的日志对比后抠出来的部分配置执行语句,居然成功解决了问题,真是没想到,所以就蛮记录一下,不建议一开始就采用下面的做法。

应用配置变更,由于数据库日志空间满了SQLCODE=-964导致配置失败,引起工程无法启动

insert into maxattribute (objectname, attributename, attributeno, alias, autokeyname, canautonum, classname, columnname, complexexpression, defaultvalue, domainid, eauditenabled, entityname, esigenabled, handlecolumnname, isldowner, ispositive, length, localizable, maxattributeid, maxtype, mlinuse, mlsupported, mustbe, persistent, primarykeycolseq, remarks, required, restricted, sameasattribute, sameasobject, scale, searchtype, textdirection, title, userdefined)
select objectname, attributename, attributeno, alias, autokeyname, canautonum, classname, columnname, complexexpression, defaultvalue, domainid, eauditenabled, entityname, esigenabled, handlecolumnname, isldowner, ispositive, length, localizable, maxattributeid, maxtype, mlinuse, mlsupported, mustbe, persistent, primarykeycolseq, remarks, required, restricted, sameasattribute, sameasobject, scale, searchtype, textdirection, title, userdefined
from maxattributecfg;


insert into l_maxattribute (l_maxattributeid, ownerid, langcode, title, remarks)
select l_maxattrcfgid, ownerid, langcode, title, remarks
from l_maxattrcfg;

 

update maxattributecfg set changed = ‘N‘ where changed != ‘N‘;


当然,改了之后还得改一下maxvars中的varvalue的值,这个修改可以查看另一篇随笔中的记录,这个标志位主要是标志系统有任务正在执行

 

然后会遇到的一个状况就是:比如系统正在执行某些任务,如配置数据库、或者就类似开发层面的一些任务(不限于此),然后系统被强行中断了,比如系统被强行停止或断电等使整个系统崩溃的因素,就会造成系统未将这个状态位改回去,所以会造成重新启动系统时提示什么任务未完成啊正在进行啊还有什么什么。。。这时就要去查看maxvars中的varvalue的值,不多说了,具体可以看http://www.cnblogs.com/binTke170120/p/6322843.html

 

maximo数据库配置中,应用配置变更时出错、中断或删除某表字段后出现问题