2016-07-31 48 views
2

我有一個截斷並插入(APPEND)的表。當這個負載正在進行(150分鐘)時,我有另一個查詢(當然是另一個會話)使用和讀取此表。我發現從這張表中讀取的查詢也被延遲或等待相似的時間(150分鐘)。Oracle直接路徑插入問題

現在我的問題是:當發生直接路徑加載時,實際會話之外的會話讀取以前的版本,但仍然可以讀取。在這種情況下,表格被截斷。它讀什麼?爲什麼要等待?

+2

直接路徑插入不會阻止讀取(除非在查詢中有'for update'子句)。它會阻止「寫入」。所以,可能還有別的東西你沒有告訴我們。此外,查詢表格時似乎很奇怪,而長時間運行的直接路徑插入正在進行中。 –

+0

截斷在Oracle中是非事務性的(並立即提交),因此在插入完成之前,其他會話將永遠不會看到任何數據。爲什麼等待發生很難說。 –

回答

2

有一個系統視圖叫做gv $ session列出了連接到數據庫的所有會話。一列是事件,它表明會話正在等待什麼(如果有的話)。查詢運行時,請檢查該會話的事件列的值。這將告訴你它到底在等什麼。