ora-8176緣由及解決方法

在oracle undo_retention範圍內,且_undo_autotune=false的狀況下,一個語句執行的時候仍然發生ora-8176,語句以下:oracle

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關聯的時候走了索引路徑掃描,使用了索引的撤銷塊,致使出現該問題。將其調整爲全表掃描走哈希鏈接後,沒有該問題了。spa

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特意查看過官方文檔,索引塊也是有對應的撤銷塊的。code

相關文章
相關標籤/搜索