Oracle-undo回滚段长时间不释放

  

  撤销回滚段中      

  

     

  

     

  

  
  

  

  详细询问了下撤消表空间的具体设置,如下:   

  

  ,,1、undo_retention=3600;   

  

  ,,2、未设置表空间的保留保证;   

  

  ,,3、撤销表空间设置为非自动扩展;   

  

  ,,4、数据库版本11.2.0.1.0   

  

  
  

  

  
  

  

  ,甲骨文,给了个参数,“_smu_debug_mode"=33554432,改到系统中,报出一大堆ora - 01555,赶紧改了回来。   

  

  ,,,,莫非是碰到虫子了?查了下,在甲骨文10.2.0.2-3,确实有个很类似的错误:5387030。   

  

  ,,,,,正常情况下,如果撤消表空间被设置为固定大小,不自动扩展,oracle会启用自动调优撤消保留特性。   

  

  ,,,,,启用自动调优撤销保留时,oracle会忽略undo_retention的设置,根据撤消表空间大小,系统负载情况,自动调整undo_retention为一个合适的值。这个值一般会大于”所有事务的最长运行时间”。   

  

  ,,   

  

  ,,,10 gr2的错误现象为,只要设置了撤销表空间自动管理,不管有没开自动扩展,不管undo_retention设置为多少,都会启用自动调优撤消保留的新特性。   

  

        

  

        

  

        

  

        

  

  
  

  

  ,,,,,在10.2.0.4及以后,这个bug就修复了。朋友那问题,肯定不是这虫引起的。   

  

  
  

  

  ,,在查阅这错误时,发现撤销保留自动调优的启用条件,与朋友那完全吻合,莫非这跟自动调谐的撤销保留有关。   

  

  查了下官方文档,确实如此。   

  

   Oracle-undo回滚段长时间不释放”>
  </p>
  <p>
  ,
  </p>
  <p>
  系统查了下,果然,undo_retention被自动调整了:
  </p>
  <p>
  ,,,,,,,,,,,,,,,,,,,,
  <img src=Oracle-undo回滚段长时间不释放