20120412_configDb 关于索引

一、

-------   configDb重建索引出错解决方法   begin -- - - - - - -

 

http://luntan.erp100.com/thread-60493-1-1.html

 

 

一、错误提示
D:\\Maximo\\tools\\maximo>configdb.bat
Tue Apr 22 09:19:05 CST 2008 --- Starting ----
Reading properties file : maximo.properties
RestoreFromBackup started for schema MAXIMO Tue Apr 22 09:19:06 CST 2008
RestoreFromBackup connected to database jdbc[s:10]racle:thin[s:9]127.0.0.1:1521:testmaximo Tue Apr 22 09:19:06 CST 2008
ConfigDB started for schema MAXIMO Tue Apr 22 09:19:06 CST 2008
ConfigDB connected to database jdbc[s:10]racle:thin[s:9]127.0.0.1:1521:testmaximo Tue Apr 22 09:19:06 CST 2008
获取元数据 Tue Apr 22 09:19:07 CST 2008
正在配置表 Tue Apr 22 09:19:07 CST 2008
正在更改表 TEFIN Tue Apr 22 09:19:07 CST 2008
正在配置视图 Tue Apr 22 09:19:08 CST 2008
正在刷新属性元数据 Tue Apr 22 09:19:08 CST 2008
正在刷新对象元数据 Tue Apr 22 09:19:18 CST 2008
正在重建本地索引 Tue Apr 22 09:19:20 CST 2008
java.sql.SQLException: ORA-01452: 无法 CREATE UNIQUE INDEX; 找到重复的关键字

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:207)
at oracle.jdbc.driver.T4CStatement.executeForRows(T4CStatement.java:946)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1168)
at oracle.jdbc.driver.OracleStatement.executeInternal(OracleStatement.java:1687)
at oracle.jdbc.driver.OracleStatement.execute(OracleStatement.java:1653)
at psdi.configure.CommonShell.doSql(CommonShell.java:339)
at psdi.configure.ConfigDB.rebuildIndexes(ConfigDB.java:2011)
at psdi.configure.ConfigDB.configureIndexes(ConfigDB.java:1937)
at psdi.configure.ConfigDB.process(ConfigDB.java:263)
at psdi.configure.ConfigDB.main(ConfigDB.java:2564)
ORA-01452: 无法 CREATE UNIQUE INDEX; 找到重复的关键字
Tue Apr 22 09:19:22 CST 2008
ConfigDB completed with errorsTue Apr 22 09:19:22 CST 2008
RestoreFromBackup completedTue Apr 22 09:19:22 CST 2008

如果configdb不成功,有可能还会出现weblogic的异常。一般情况下我们会执行RestoreFromBackup来解决,不过当configdb与RestoreFromBackup都不能成功执行时就得想想办法了

二、解决办法
按以下办法依次执行,到解决成功为至。
第一种办法:
执行RestoreFromBackup.bat
第二种办法
1、找出建立不成功的索引:
 select * from MAXSYSINDEXES where name not in ( select a.index_name from dba_indexes a) and changed='N';

说明如下:
CHANGED有三种取值:
Y:表示索引是刚添加的,还没有进行configdb。
N:表示索引已添加好了,已进行过configdb作业
D:表示索引已删除,还没有进行configdb
2、删除建立不成功的索引
delete from maxsyskeys where ixname in ( select name from maxsysindexes where name not in ( select a.index_name from dba_indexes a) and changed='N');
delete frommaxsysindexes where name not in ( select a.index_name from dba_indexes a) and changed='N';
3、找到即将要通过configdb建立索引,但是数据库已经存在的索引。
select * from maxsysindexes where name in( select a.index_name from dba_indexes a) and changed in ('Y')
4、删除即将要通过configdb建立索引,但是数据库已经存在的索引
delete from maxsyskeys where ixname in
( select name from maxsysindexes where namein ( select a.index_name from dba_indexes a) and changed='Y');
delete frommaxsysindexes where namein ( select a.index_name from dba_indexes a) and changed='Y';

5、删除不一致的索引
delete frommaxsyskeys where ixname not in (select name from maxsysindexes)
6、清除垃圾索引
A、查找出垃圾索引
select index_name from dba_ind_columns c where c.index_name not in (select index_name from dba_indexes)
B、清除之,
命令为:purge index \"垃圾索引名\"
这个时候的索引名是一大堆无意义的符号,按查出的结果集一条一条清理。
第三种办法
如果前面二种办法还不能解决,那只能出狠招了:
A、delete from maxsyskeys where ixname in
( select name from maxsysindexes where changed='Y');
delete frommaxsysindexes wherechanged='Y';
B、进行configdb
C、启动weblogic,进入系统进行数据配置重设索引。

 

-------   configDb重建索引出错解决方法   end-- - - - - - -

 

二、

当我们在数据库配置中进行操作的时候,主要是对maxobjecfg,maxtablecfg,maxattributecfg这三张表进行操作

   当执行configdb操作后,系统检测上述三张表的数据,通过一系统操作,写入相应的表中并生成相应的对像。

   通过分析,我们基本上了解了,当对象增加或删除字段时,主要是在maxattributecfg这张表中

  这个表的CHANGED字段表名字段是变化类型的,

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值