这里的发生的例外情况为在为一个栏位创建索引时,出现上述异常,索引如下:
CREATE INDEX PPEMS.IDX_SYS_STD_LANG_RES_TEXT ON PPEMS.SYS_STD_LANGUAGE_RESOURCE
(TEXT)
TABLESPACE LOG_IDX
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 1M
NEXT 5M
MINEXTENTS 1
MAXEXTENTS 2147483645
PCTINCREASE 0
FREELISTS 1
FREELIST GROUPS 1
BUFFER_POOL DEFAULT
)
NOPARALLEL;
开始以为是索引的名称太长,后来怎么修改都无济如是。
经下列研究发现:
SQL> create table test3(a varchar2(4000), b varchar2(4000));
表已创建。
SQL> create index ix_test3_ab on test3(a,b);
create index ix_test3_ab on test3(a,b)
*
ERROR 位于第 1 行:
ORA-01450: 超出最大的关键字长度 (6398)
SQL> DROP TABLE TEST3 CASCADE CONSTRAINTS
表已丢弃。
SQL> create table test3(a varchar2(400), b varchar2(400));
表已创建。
SQL> create index ix_test3_ab on test3(a,b);
索引已创建。
看出来了吧?你的两个字段建立的复合索引,单个索引项最大可能是4000+4000共计8000个字节,有可能超过6398这个限制,因此索引无法创建。
如果你没有那么多内容要存储的话,就把字段定义小点。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14245958/viewspace-331012/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/14245958/viewspace-331012/