最近在工作中需要使用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、究竟是否是因为临时表空间过小?? 还是说时其它因素导致的??
使用spool抽取oracle数据时,只能抽取少量数据
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
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 有人能用聚类分析帮我分析一下文本内容嘛