oracle – 当我尝试将列从VARCHAR2(200)修改为VARCHAR2(1000)时,为什么会出现“ORA-01429:索引组织表”?

oracle – 当我尝试将列从VARCHAR2(200)修改为VARCHAR2(1000)时,为什么会出现“ORA-01429:索引组织表”?,第1张

概述它当前是数据库中的VARCHAR2(200),但需要将其提升为VARCHAR(1000),因此我尝试运行此脚本: ALTER TABLE CONTRACTOR MODIFY( NOTE VARCHAR2(1000)); Oracle给了我这个: ORA-01429: Index-Organized Table: no data segment to store overflow row 它当前是数据库中的VARCHAR2(200),但需要将其提升为VARCHAR(1000),因此我尝试运行此脚本:

ALTER table CONTRACTOR MODIFY(    NOTE VARCHAR2(1000));

Oracle给了我这个:

ORA-01429: Index-Organized table: no data segment to store overflow row-pIEces

这是一个10g的数据库.有什么想法吗?我可以创建一个重复的列,复制数据,然后删除旧列,但我想知道在我这样做之前这个错误是什么.

解决方法 根据 documentation,您需要为可能大到大的行指定溢出段以适合单个块.

考虑(10.2.0.3 – 8k块):

sql> CREATE table contractor (  2     ID NUMBER PRIMARY KEY,3     data_1 CHAR(1000),4     data_2 CHAR(1000),5     data_3 CHAR(1000),6     data_4 CHAR(1000),7     data_5 CHAR(1000),8     NOTE VARCHAR2(200)  9  )  10  ORGANIZATION INDEX;ORA-01429: Index-Organized table: no data segment to store overflow row-pIEces

但是,当您指定溢出段时:

sql> CREATE table contractor (  2     ID NUMBER PRIMARY KEY,8     NOTE VARCHAR2(200)  9  ) 10  ORGANIZATION INDEX  11  OVERFLOW tableSPACE USER_DATA;table created
总结

以上是内存溢出为你收集整理的oracle – 当我尝试将列从VARCHAR2(200)修改为VARCHAR2(1000)时,为什么会出现“ORA-01429:索引组织表”?全部内容,希望文章能够帮你解决oracle – 当我尝试将列从VARCHAR2(200)修改为VARCHAR2(1000)时,为什么会出现“ORA-01429:索引组织表”?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1167187.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存