暂无图片
oracle 怎么模拟增加lob大字段数据
我来答
分享
hzdba
2021-10-09
oracle 怎么模拟增加lob大字段数据

oracle 怎么模拟增加lob大字段数据,我想模拟插入数据增大lob的segment大小,一直不成功

我创建了表:

create table itpux03
( id int,
clog clob
)
lob (clog) store as securefile
(tablespace users)

查入数据

begin
for i in 1..500000 loop
INSERT INTO itpux03 VALUES(i, 'asdasdasdasdasdasdasdasdasdad');
commit;
end loop;
end;
/


检查:

SEGMENT_NAME M
------------------------- ----------
ITPUX01 5245
ITPUX03 987
ITPUX02 96
SYS_LOB0000105311C00002$$ .13
SYS_LOB0000105129C00003$$ .13
SYS_LOB0000105314C00002$$ .13
BIDX .06
SYS_IL0000105311C00002$$ .06
SYS_IL0000105129C00003$$ .06
SYS_IL0000105314C00002$$ .06


表的大小一直增加 但是lob字段的大小一直0.13m,想请教大神们,如何增大lob字段的数据。我也尝试过用

DBMS_LOB.Write也是没有效果。。。如果能附带案列 就十分感谢了

我来答
添加附件
收藏
分享
问题补充
3条回答
默认
最新
DarkAthena

你那个创建新行,实际上是增加新的lob,如果要在原lob上增加,应该使用append,如下,已实测通过

create table itpux03 ( id int, clog clob ); INSERT INTO itpux03 VALUES(1,1); DECLARE l_line varchar2(4000); l_clob clob; BEGIN l_line := 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF'; SELECT clog INTO l_clob FROM itpux03 WHERE id = 1 for update; dbms_lob.open(l_clob, dbms_lob.lob_readwrite); for i in 1..5000 loop dbms_lob.writeappend(l_clob, lengthb(l_line), l_line); end loop; dbms_lob.close(l_clob); commit; END; /

插入第一行时,lob大小为 131072,执行过程块后,lob大小变为 2228224

暂无图片 评论
暂无图片 有用 1
打赏 0
暂无图片
薛晓刚

clob的写入要调用这个的dbms_lob.getlength(clob_loc)

暂无图片 评论
暂无图片 有用 0
打赏 0
hzdba

谢谢大佬 我去试试

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏