[资产|安全|PM|工单] configDb重建索引出错解决方法一、错误提示 D:\\Maximo\\tools\\maximo>configdb.batTue 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,进入系统进行数据配置重设索引。 |
[资产|安全|PM|工单] configDb重建索引出错解决方法
最新推荐文章于 2021-05-02 03:38:33 发布