1.産生問題
--why?檢視表的結構,這樣定義的表name1,name2字段的長度是4000.
--原因應該在這裡.那為什麼rebuild正常,rebuild online要報錯呢.
--先來建立如下索引,建立如下索引:
--oracle害怕建立的索引長度超過6398的限制,雖然現在不超,但是以後可能出現,oracle直接在建立的時候報錯.
而建立name1字段索引,明顯沒有超過6398的限制,但是為什麼rebuild online的時候會報錯了.
ORA-00604: error occurred at recursive SQL level 1
ORA-01450: maximum key length (3215) exceeded
2.10046跟蹤:
--可以發現rebuild online的過程中要建立一張SYS_JOURNAL_96974的IOT表.以後删除的過程.
--數字正好與建立索引的object_id對應.
--從建立的IOT表看,包含如下字段c0,opcode,partno,rid 字段.一定是IOT組織表的特性,限制了索引建立的長度.c0應該與表T的id相對應.
--執行如下指令:
--再次确定問題就是rebuild online,需要建立這樣的IOT表,而裡面包含varhcar2(4000)字段,導緻出現ORA-01450: maximum key length (3215) exceeded錯誤.