如何克服 CLOB 空间不足 - ORA-06502: PL/SQL: numeric or value error

Posted

技术标签:

【中文标题】如何克服 CLOB 空间不足 - ORA-06502: PL/SQL: numeric or value error【英文标题】:how to overcome CLOB run out of space - ORA-06502: PL/SQL: numeric or value error 【发布时间】:2014-03-27 04:55:13 【问题描述】:

我有一个场景,我将字符串附加到一个 clob。我遇到的问题是,一旦 CLOB 达到一定大小,如果我尝试将更多内容附加到 clob,我会得到 ORA-06502: PL/SQL: numeric or value 错误。我认为它的大小已经用完了,但我不知道如何解决这个问题(即指定如何使 clob 更大)。

谁能帮帮我。

这就是我声明我的 CLOB 的方式...

LP_xml_result CLOB;

DBMS_LOB.CREATETEMPORARY(
      lob_loc => LP_xml_result
    , cache   => true
    , dur     => dbms_lob.call
);

DBMS_LOB.OPEN(
      lob_loc    => LP_xml_result
    , open_mode  => DBMS_LOB.LOB_READWRITE
);

然后我像这样插入它......

PROCEDURE lob_append(i_string IN VARCHAR2)
IS
BEGIN

    dbms_lob.append(LP_xml_result,LP_LineFeed || i_string);
END lob_append;

谢谢

【问题讨论】:

它会超过 4GB 吗? 从 Oracle 11 开始,LOB 可以最大为(4 GB - 1) * DB_BLOCK_SIZE,即 8TB 到 128TB。 4GB 是 Oracle 10 之前的限制 我查看了 Oracle 文档,发现了两个可能的问题。当您打开一个 LOB 时,您还必须关闭它。但是,打开/关闭 LOB 不是强制性的 - 无需尝试即可。而不是创建一个临时 LOB 尝试LP_xml_result := EMPTY_CLOB() 【参考方案1】:

当您执行LP_LineFeed || i_string 时,它会隐式转换为VARCHAR2,因此您有32K 的限制。

这样做:

PROCEDURE lob_append(i_string IN VARCHAR2)
IS
BEGIN

    dbms_lob.append(LP_xml_result,LP_LineFeed);
    dbms_lob.append(LP_xml_result,i_string);
END lob_append;

关于打印到 HTP 的问题,前段时间我遇到了同样的问题,这是我的解决方案:

chunkSize   CONSTANT INTEGER := 5000;
pos NUMBER;

BEGIN
IF LENGTH(CLOB_VAL) > chunkSize THEN
    LOOP
        Htp.prn(SUBSTR(CLOB_VAL, pos, chunkSize));
        pos := pos + chunkSize;
        EXIT WHEN pos > LENGTH(CLOB_VAL);
    END LOOP;
ELSE
    Htp.prn(CLOB_VAL);
END IF;

【讨论】:

你的临时 CLOB 的范围是CALL,你有没有尝试其他方法,例如SESSION? 感谢您的帮助。我实际上发现它与我使用 htp.print 打印 clob 有关。显然,如果 clob 超过一定长度,您就不能一次写出它的全部内容。我从这个网站得到了线索...ddoracle.blogspot.com.au/2006/11/print-clob-to-web.html。这解决了我的问题

以上是关于如何克服 CLOB 空间不足 - ORA-06502: PL/SQL: numeric or value error的主要内容,如果未能解决你的问题,请参考以下文章

oracle中LOBSEGMENT类型存储的clob的内容过大,如何清除clob字段内容。释放表空间!

在顺序栈中,如果存放元素的数组空间不足,如何增加内存空间,可以直接修改数组大小么

ORA-06550、PLS-00103、ORA-06512 函数

转:兰西奥尼:如何克服团队协作的五大障碍?

如何克服 AWS Glue 作业中的 Spark“设备上没有剩余空间”错误

如何在不重新启动服务器的情况下克服 Permgen 空间异常..,任何人都可以帮助我