在线重建一个index时无意中发现了这样的问题,varchar2类型的列不能超过3201,这可能是一个内部限制。
SQL> alter index idx_t rebuild online;
alter index idx_t rebuild online
*
第 1 行出现错误:
ORA-00604: 递归 SQL 级别 1 出现错误
ORA-01450: 超出最大的关键字长度 (3215)
SQL> desc t
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
ID NUMBER(38)
NAME VARCHAR2(3202)
SQL> alter index idx_t rebuild online;
alter index idx_t rebuild online
*
第 1 行出现错误:
ORA-00604: 递归 SQL 级别 1 出现错误
ORA-01450: 超出最大的关键字长度 (3215)
SQL> alter table t modify name varchar2(3201);
表已更改。
SQL> alter index idx_t rebuild online;
索引已更改。
SQL> alter table t modify name varchar2(3202);
表已更改。
SQL> alter index idx_t rebuild ;
索引已更改。
SQL> alter table t modify name varchar2(4000);
表已更改。
SQL> alter index idx_t rebuild ;
索引已更改。
SQL> alter index idx_t rebuild online;
alter index idx_t rebuild online
*
第 1 行出现错误:
ORA-00604: 递归 SQL 级别 1 出现错误
ORA-01450: 超出最大的关键字长度 (3215)
SQL>
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/19602/viewspace-1014824/ ,如需转载,请注明出处,否则将追究法律责任。