我一直在对应用程序进行负载测试,当我登录企业控制台时,我注意到我的UNDOTBS
表空间已满。
我知道UNDOTBS
表空间用于保存事务开始之前存在的数据副本。我认为一旦事务完成/回滚,这些数据将是暂时的并过期?
我只是删除表空间,扩展它,还是有办法清除它?
更新:数据库一夜之间没有任何活动。有人可以解释为什么 oracle 仍然需要这些数据吗?
别管它。这就是它应该的样子。Oracle 将根据需要对其进行管理和重用。
对更新的回应:
UNDOTBS 的行为与其他表空间不同……数据保留在其中,并在不再需要时标记为未使用,而不是被显式删除。
除非您正在执行相当大的 DML 并开始出现错误,否则您通常不需要担心它,此时您可以考虑增加 UNDOTBS 大小,降低您的撤消保留等。
除了 cagcowboy 已经发布的内容之外,如果您的撤消一直满并且您遇到错误。确保您的撤消大小正确,并且撤消保留设置为适合该大小的值。如果撤消保留设置较高,则需要为撤消分配更多空间,以在撤消保留中指定的时间限制内保留信息。只有基于撤消保留的过期事务才会被清除和删除。
查看您的撤消保留期 - 确保它不是太大,否则 oracle 将继续缓冲数据,直到表空间填满。适当的时间段将取决于您的应用程序