最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

细说ORA-01450错误

来源:动视网 责编:小采 时间:2020-11-09 10:35:06
文档

细说ORA-01450错误

细说ORA-01450错误:ora-01450是索引维护中可能会出现的错误。首先通过oerr来看一下01450的相关信息: ora-01450是索引维护中可能会出现的错误。首先通过oerr来看一下01450的相关信息: SQL> ho oerr ora 0145001450, 00000, maximum key leng
推荐度:
导读细说ORA-01450错误:ora-01450是索引维护中可能会出现的错误。首先通过oerr来看一下01450的相关信息: ora-01450是索引维护中可能会出现的错误。首先通过oerr来看一下01450的相关信息: SQL> ho oerr ora 0145001450, 00000, maximum key leng


ora-01450是索引维护中可能会出现的错误。首先通过oerr来看一下01450的相关信息:

ora-01450是索引维护中可能会出现的错误。首先通过oerr来看一下01450的相关信息:

SQL> ho oerr ora 01450
01450, 00000, "maximum key length (%s) exceeded"
// *Cause:
// *Action:

呵呵,Oracle竟然没有给出合理建议。但是从字面意义可以看出,01450是由于我们的关键字超出了某些限定值而引起的。oracle不推崇单条索引记录占用较大的存储空间,在9i之前的版本,oracle规定每个数据块至少存放两条完整索引记录,在9i之后条件放宽,每个数据块至少存放一条完整索引记录。毫无疑问,在数据块中除去索引记录本身的数据,还存储了一些辅助信息(大概占用了192个字节),除此之外,每条索引记录还包含了除key值之外的附加信息,如rowid等。因此,,在创建索引时,被索引列的长度是受限制的,大概范围为(blocksize-192)*80%。

下面我们来验证一下:

在8k的表空间中:被索引列的长度不可以超过 (8192-192)*0.8=6400

SQL> create tablespace ts8k datafile '/oracle/app/oradata/easy/e01.dbf' size 10m blocksize 8192;

表空间已创建。

SQL> create table t8(c1 varchar2(1000),c2 varchar2(2000),c3 varchar2(3000),c4 varchar2(4000));

表已创建。

SQL> create index ind8 on t8(c1,c2,c3,c4);
create index ind8 on t8(c1,c2,c3,c4)
*
第 1 行出现错误:
ORA-01450: 超出最大的关键字长度 (6398)


SQL> create index ind8 on t8(c2,c3,c4);
create index ind8 on t8(c2,c3,c4)
*
第 1 行出现错误:
ORA-01450: 超出最大的关键字长度 (6398)


SQL> create index ind8 on t8(c1,c2,c3);

索引已创建。

在16k的表空间中:被索引列的长度不可以超过 (16384-192)*0.8=12593.6

SQL> create tablespace ts16k datafile '/oracle/app/oradata/easy/s01.dbf' size 10m blocksize 16384;

表空间已创建。


SQL> create table t16(c1 varchar2(4000),c2 varchar2(4000),c3 varchar2(4000),c4 varchar2(4000)) tablespace ts16k;

表已创建。


SQL> create index ind16 on t16(c1,c2,c3,c4) tablespace ts16k;
create index ind16 on t16(c1,c2,c3,c4) tablespace ts16k
*
第 1 行出现错误:
ORA-01450: 超出最大的关键字长度 (12958)


SQL> create index ind16 on t16(c1,c2,c3) tablespace ts16k;

索引已创建。

更多详情见请继续阅读下一页的精彩内容:

相关阅读:

ORA-01172、ORA-01151错误处理

ORA-00600 [2662]错误解决

ORA-01078 和 LRM-00109 报错解决方法

ORA-00471 处理方法笔记

ORA-00314,redolog 损坏,或丢失处理方法

ORA-00257 归档日志过大导致无法存储的解决办法

文档

细说ORA-01450错误

细说ORA-01450错误:ora-01450是索引维护中可能会出现的错误。首先通过oerr来看一下01450的相关信息: ora-01450是索引维护中可能会出现的错误。首先通过oerr来看一下01450的相关信息: SQL> ho oerr ora 0145001450, 00000, maximum key leng
推荐度:
标签: 错误 数据库 error
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top