ORACLE SCROLL CURSOR引起临时表空间增长

最近一段时间在解决一个大数据采集的问题,同事离职遗留的代码,不要太复杂 发火


背景是这样的,有个系统专门负责采集原始档案数据,即有blob字段类型的表,数据xml类型,且经过zip压缩的。要求将数据取出后,解压,存储为文本文件。数据量至少为3000万。我发现只要是数据量达到一个量级,以前不是问题的,现在全是问题!!!


程序流程大至是这样的:

1、获取本表的总记录数,进行负载均衡,每个进程平均分配采集数据。

2、进程起来后,根据父进程的分配信息,开SCROLL CURSOR,然后将CURSOR移动到负载均衡所设定的值上。

3、子进程从CURSOR中取BLOB数据,解压,写文件。


在运行时,发现temp表空间在不断增长,如不足还会导致采集失败。temp需要300G。这是一个要命的问题,数据量会不断增长,temp 也是不断增长。


查了一天,也没找到原因。最后判断是CURSOR使用可能有问题,以前从来没用过SCROLL CURSOR,对其特性不了解。最后才发现是SCROLL CURSOR引起的temp 表空间增长。


因为SCROLL CURSOR是滚动游标,支持CURSOR的随意移动,这就导致CURSOR需要将选定的数据在fetch时,存储至temp,以便后面再次移动游标时使用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值