大查询长事物是否需要undo_rentention支持

【 使用环境 】生产环境 or 测试环境

【 OB or 其他组件 】OB

【 使用版本 】v4.2.5–v4.4.2

【问题描述】

我现在能通过生产实践以及有经验的专家沟通得出这个结论:

有长查询/长事务的情况下,minor compaction, major compaction不会因为 undo_retention过小而删除掉过期版本,也就是说因为长查询/长事务存在,实际GC保留的版本要大于undo_retention。

我现在的问题是无法在官网上找到直接的证据支撑我这个结论。因此我的问题是:

  1. 请再确认我这个结论是否正确。
  2. 上面结论正确的情况下,官网是否有直接的文档证明这个事。 (不要推测的,要直接的材料,如果没有就说没有)
4 个赞

大查询(长运行查询)不需要“undo_retention” 显式“支持”,但其一致性读可能依赖它;若 undo 表空间不足,即使设置了 undo_retention,仍可能因快照过旧(ORA-01555)失败。‌‌

3 个赞

undo_retention 只是 GC 保留版本的下限约束 之一,长事务/长查询产生的 SNAPSHOT_FOR_TX 约束会覆盖(override)SNAPSHOT_FOR_UNDO_RETENTION 约束,使得实际保留的多版本数据超过 undo_retention 指定的时长。

1 个赞

如果是oracle模式商业版 建议咨询下商业技术支持那边