qq_32174455 2019-06-10 15:32 采纳率: 0%
浏览 244

使用spool抽取oracle数据时,只能抽取少量数据

       最近在工作中需要使用spool对远程oracle数据库进行表数据的抽取;
但是在实际工作中发现spool只能抽取到十几条数据(表中的数据量为千万级);
查询的数据量一多就直接卡住;
spool相关语句:
图片说明
然后对sql进行分析,字段是共64个,发现当限制rownum<20时,数据根本查询不出来。但是如果限制rownum<10,数据就可以查询出来的,spool也能够抽取到相关数据;
同样如果减少查询的列数也是可以查询到并抽取出来(rownum<20行的情况)
       鉴于该情况怀疑时oracle的临时表空间小;为了验证该想法,本人对该表作排序查询,发现报错;
图片说明
报错信息:ORA-01652: unable to extend temp segment by 32 in tablespace TEMP
意思是指temp表空间无法自动扩展temp段。这种问题一般有两种原因:一是临时表空间空间太小,二是不能自动扩展。
然后查询临时表空间的使用情况:图片说明
结果显示,临时表空间可使用有3.9G;
现本人困惑的有:
1、同一个sql,为什么限制rownum数不同会存在这种情况;10条能查询处来,而20条却查询不出来;
2、究竟是否是因为临时表空间过小?? 还是说时其它因素导致的??

  • 写回答

1条回答

  • 憧憬blog 2023-03-15 06:45
    关注

    1、同一个SQL,限制rownum数不同的原因可能是因为查询出来的结果集大小不同。当限制rownum<20时,查询出来的结果集较大,可能导致相关操作如排序、导出等耗费的系统资源过多,从而直接卡住。而限制rownum<10则查询结果集较小,操作所需系统资源较少,所以能够正常进行。

    2、临时表空间过小可能会导致抽取数据失败的情况。因为当抽取数据时,可能需要使用一定量的临时表空间来进行处理,如果临时表空间不足,则会出现无法继续处理数据的情况。但是临时表空间的使用情况显示可使用有3.9G,可能空间已经足够,所以还需要对其他因素进行排查,如是否存在性能瓶颈、资源限制等等。

    评论

报告相同问题?

悬赏问题

  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛