gpt4 book ai didi

oracle - 尝试将列从 VARCHAR2(200) 修改为 VARCHAR2(1000) 时,为什么会出现 "ORA-01429: Index-Organized Table"?

转载 作者:行者123 更新时间:2023-12-04 22:15:56 25 4
gpt4 key购买 nike

它目前是数据库中的 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,
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
11 OVERFLOW TABLESPACE USER_DATA;

Table created

关于oracle - 尝试将列从 VARCHAR2(200) 修改为 VARCHAR2(1000) 时,为什么会出现 "ORA-01429: Index-Organized Table"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5791298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com