[資產|安全|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重建索引出錯解決方法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.