天天看點

[20120612]ORA-01450: maximum key length (3215) exceeded .txt

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錯誤.