创建一个连接并开始一个事务,若循环提交DML语句但不进行commit或rollback,连接上的内存会不断增长吗?如果是的话有没有上限控制啊,例如不能超出回滚区的大小?如果没有上限是不是就会用光内存?

解决方案 »

  1.   

    事物结束的时候提交,只要undo表空间不要太小一般不会有问题
      

  2.   

    当然不会,要不PMON是干什么吃的?
      

  3.   

    如果事务一直不结束是什么情况?是不是只要在undo表空间大小范围之内就没有问题?
      

  4.   

    undo表空间好像是可以自动扩展的啊,如果自动扩展的话,超大的事务会造成内存耗尽吧
      

  5.   

    应该不会是无限增加这么简单的处理。
    首先要看你的回滚管理方式,使自动撤销管理方式还是手动方式(回滚段管理方式)。
    然后还有可能被undo_retention影响。
      

  6.   

    若循环提交DML语句但不进行commit或rollback?提交不是commit吗?连接上的内存会不断增长吗?我觉得不会。
    开发的时候根据业务的需要进行提交就可以了,一般不会有问题的。dml只是会产生undo信息,同时写入redo日志,还有就是把数据块写入数据文件,涉及的内存包括:块缓存区,日志缓存区,shared pool,等,oracle中的内存分配要不是分配好的,也就是固定大小。要不就是oracle自动管理的,由orcle动态调整。