在oracle undo_retention范围内,且_undo_autotune=false的情况下,一个语句执行的时候仍然发生ora-8176,语句如下:

INSERT INTO XXX SELECT
  *
FROM
  XXX AS OF SCN 217843607 A
WHERE
  NOT EXISTS (
    SELECT
      1
    FROM
      XXX b
    WHERE
      A .id= b.id
  )
AND tenantid = '*'

经查看,A和b关联的时候走了索引路径扫描,使用了索引的撤销块,导致出现该问题。将其调整为全表扫描走哈希连接后,没有该问题了。

INSERT INTO XXX SELECT /*+ full(a) */
  *
FROM
  XXX AS OF SCN 217843607 A
WHERE
  NOT EXISTS (
    SELECT
      1
    FROM
      XXX b
    WHERE
      A .id= b.id
  )
AND tenantid = '*'

更早的时候,其实LZ特地查看过官方文档,索引块也是有对应的撤销块的。

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-05-28
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-01-12
  • 2021-06-23
  • 2021-06-15
  • 2021-08-31
相关资源
相似解决方案