【发布时间】:2018-11-30 17:06:27
【问题描述】:
我正在开发一个项目,在该项目中我正在开发数据库,在 java 程序中我需要从数据文件中读取 clob 数据,然后创建 clob 对象并在对象中设置 clob 数据并插入行。我正在做 10000 行的批量插入。但是在阅读了一些(32)行之后,我收到了以下错误:-
java.io.IOException: ORA-01652: unable to extend temp segment by 128 in tablespace TEMP
at oracle.jdbc.driver.OracleClobOutputStream.flushBuffer(OracleClobOutputStream.java:293)
at oracle.jdbc.driver.OracleClobOutputStream.write(OracleClobOutputStream.java:191)
at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1793)
at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1769)
at org.apache.commons.io.IOUtils.copy(IOUtils.java:1744)
我在网上搜索了这个错误,并在现场找到了一些解决方案。然后我执行了以下查询:-
select value from v$parameter where name = 'db_block_size';
select bytes/1024/1024 as mb_size,
maxbytes/1024/1024 as maxsize_set, x.*
from dba_data_files x;
alter tablespace system add datafile 'C:\APP\ADMIN\ORADATA\VIDUSHIEXTRACT\DATAFILE\O2_MF_USERS_FLHMH039_.DBF' size 5024m autoextend on maxsize unlimited;
仅供参考:在我的数据库中,上述类型的数据文件是多个。
但毕竟这在 32 行之后我也得到了同样的错误(我的表中总共有 1028 行,其中每个 clob 列数据有大约 4MB 数据)。那么请谁能告诉我现在应该怎么做才能解决这个问题?
【问题讨论】:
-
请向我们展示您要插入 CLOB 的表的创建语句。
-
我猜这更像是关闭临时 CLOB 的问题而不是表空间问题,所以请向我们展示创建 Clob 对象、设置 Clob 数据和插入行的语句...
-
同意@wolφi,请分享TEMP表空间的大小和clob对象的详细信息。 TEMP 空间就像 Java 中的堆空间,如果它被填满,那么大部分时间都需要修改代码。
标签: oracle clob temp tablespace data-files