在线重建一个index时无意中发现了这样的问题,varchar2类型的列不能超过3201,这可能是一个内部限制。
SQL> alter index idx_t rebuild online;
alter index idx_t rebuild online
*
第 1 行出现错误:
ORA-00604: 递归 SQL 级别 1 出现错误
ORA-01450: 超出最大的关键字长度 (3215)[@more@]
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>