首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 教學

ORA-30009 CONNECT BY 內存不足解決:改用 XMLTABLE 生成大量測試數據

     編輯:Oracle 教學

ORA-30009 CONNECT BY 內存不足解決:改用 XMLTABLE

11g 環境用 CONNECT BY LEVEL <= 2000000 製造測試數據報 ORA-30009: CONNECT BY 操作內存不足。10g+ 支持 XMLTABLE 可繞過此限制。

報錯重現

INSERT /*+APPEND*/ INTO t_range
SELECT ROWNUM, TO_DATE(TO_CHAR(SYSDATE-120,'J') + TRUNC(DBMS_RANDOM.VALUE(0,120)),'J')
FROM DUAL CONNECT BY LEVEL <= 2000000;
-- ORA-30009

XMLTABLE 替代方案

INSERT /*+APPEND*/ INTO t_range
SELECT ROWNUM, TO_DATE(TO_CHAR(SYSDATE-120,'J') + TRUNC(DBMS_RANDOM.VALUE(0,120)),'J')
FROM XMLTABLE('1 to 2000000');
-- 成功插入 200 萬行,耗時 28 秒

XMLTABLE('1 to N') 生成 1..N 的整數序列,無遞歸內存壓力,適合大批量測試數據生成。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved