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错误.