当前位置: 代码迷 >> Oracle管理 >> 执行过程失败,原因为ora-01652跟ORA-02063
  详细解决方案

执行过程失败,原因为ora-01652跟ORA-02063

热度:153   发布时间:2016-04-24 04:12:48.0
执行过程失败,原因为ora-01652和ORA-02063
执行一个过程,失败,原因为ora-01652和ORA-02063。该过程正常情况下,执行时间是很短的,但是失败的情况下,就会执行很长时间,才会结束。每次报错原因都是ORA-01652: unable to extend temp segment by 128 in tablespace TEMP
ORA-02063: 紧接着 line(XXDB),但是把过程中的sql拿出来单独跑,完全没问题,正常插入。请大虾们帮助解决一下问题,谢谢
------解决思路----------------------
引用:
现在把过程改了,建了中间表,过程正常跑没问题了,但是有个问题,我没想明白,还是要请教下。首先,我先把过程大概说下,从数据仓库抽数据插入到ADB(另外一个库)的一张表里,sql非常简单,而且也优化过了,数据仓库的四张表数据量基本都在。问题就是从数据仓库抽数据,这些数据不是应该先放到ADB的temp表空间里么,为啥会因为数据仓库temp表空间紧张造成这样的问题出现呢?难道是先放到数据仓库的temp表空间里,再抽到ADB的temp表空间里进行插入么?

不是先放到temp表空间,只是占用temp表空间进行排序等临时操作。
你用四张表生成一张表,这四张表肯定进行大表连接等动作,
这些动作产生的排序等操作在原库即你的数据仓库库里面完成,然后插入新库即你的ADB库。
这中间的排序等占用pga的动作,因为太大pga装不下,所以在临时表空间temp中完成,而
temp表空间无法扩展,这就导致四表操作无法继续,就报错。
误区:数据是放在永久表空间,不可能存放在临时表空间中的,临时表空间只是进行排序等临时性操作,没有存放数据。