A(本地表)大约1W条记录,B(远程表)大约30W条记录,现通过DBLINK将A与B表关联并删除B表中的符合条件的记录,并发为28进程,执行了很长时间报出ORA-04030的错误,请教一下高手:
1、两张表的数据量并不是太大,为什么会占用那么多资源?
2、像这种关联的操作是在本地内存中执行的吗?
3、如何解决ORA-04030的错误?
4、这样的设计模式有无改善的方法(比如先把A表通过DBLINK来INSERT到远程表,再将两张远程表进行关联,是否占用的资源会少些?)?

解决方案 »

  1.   

    其他的不太清楚,这里是不是有点问题,一般并发数不会大于CPU数目,多了的话反而会变慢
      

  2.   

    个人认为,这个问题应该如下解决:
    1.通过dblink把a的数据传到b,这里只传需要的字段的数据,其它的不传。
    2.在两张表中建立合适的index
    3.设置合适的pga大小。
      

  3.   

    1.这是内存溢出方面的错误;2.不妨把主服务器的large_pool_size(通常用于共享服务器,并行计算或者RMAN备份恢复中),高速数据缓存db_cache_size,和共享池shared_pool_size加大些;   3.当然,LZ的第4种方法是不错的。
      

  4.   

    1)可能是你oracle的bug,什么版本的呢? 自已去找找看是不是BUG了,这方面我不善长
    2)可能是你的表开发并行引起的,关闭并行试试
      alter table you_table_name noparallel;
      

  5.   

    LS有几位,并发不是并行!
    出现该错误,可能是你PGA小了,如果是非WINDOWS系统,也可能是你OS参数未设对,等等原因。
    如果你无法提供上述详细信息,可以试试你说的在本地建临时表方式处理。