初学Oracle数据库,有个问题搞不懂
当我开始一个事务但是不提交,然后这个时候切换undo表空间,再commit,原来undo表空间的undo段状态应该会变成offline?
但是这样还是删除不了原来的undo表空间,看了教程,为什么会跟这个有关?

解决方案 »

  1.   

    undo 表空间是存放已更改过的部分数据。undo_retention = n 这个参数,表示可以闪回查询 n 秒之前的数据,也可以保证其他会话查询的数据的一致性。就你现在这个实验,一般来说,这个参数基本上都是900秒,过 900 秒后再试,应该就没有这个问题了。
      

  2.   

    意思是在这个时间段内undo表的undo段还是online状态吗?
      

  3.   

    求解呀,commit后undo段不是不需要用到了吗
      

  4.   

    当commit之后undo保存的依然是你更改过的数据文件啊,当你使用DML语句的时候,undo段就已经发生了更改。跟你commit是没有关系的,只有在UNDO_RETENTION 参数范围外,这个undo才会失效。