使用字符串替换更新大表时遇到ORA-30036:无法扩展段
表就像(带有ID索引):
CREATE TABLE "DB"."C_DATA"
(
"ID" VARCHAR2(32 CHAR) NOT NULL ENABLE,
"KEY" VARCHAR2(512 CHAR) NOT NULL ENABLE,
"VALUE" CLOB,
"UNIQUE_ID" VARCHAR2(512 CHAR),
"DT_CREATE" TIMESTAMP (6) DEFAULT sysdate,
CONSTRAINT "C_DATA_PK" PRIMARY KEY ("ID")
)
在VALUE列中,字符串的长度从某些字符到大约1000个字符不等。 我必须更新该列并替换一些字符,比如说用分号替换逗号:
UPDATE DB.C_DATA tbl
SET VALUE = REPLACE(tbl.VALUE, ',', ';')
WHERE VALUE like '%,%';
现在我有两个问题:
1)运行此程序时,我遇到“ ORA-30036:无法扩展段…”
2)对于某些值,我感觉这不起作用,并且并非所有字符都正确替换。
Add2:如果我在较小的数据集上运行,则会遇到以下问题:对于较长的条目,它似乎无法完成工作。就像忽略替换一样。 (这与第二个问题有关吗?)
Add1:我在数据库中使用更大的数据集进行测试后,便像ORA-30036一样失败了(甚至不考虑完整的数据集(50.000.000行)) 显然可以增加表空间,但是现在这不是一个真正的选择, 是否有一种方法可以告诉数据库将该语句拆分为较小的Jobs,然后彼此执行它们,以使整个集合不进入撤消空间? 一次不执行/应用将不是问题(只要它在有限的时间内完成)。 如果这在oracle SQL语句/ PLSQL中不可行–哪种(可编写脚本)方法可行?