2017-08-18 65 views
0

我有一個數據庫oracle 11g,經過進程delete後中止刪除進程oracle工作很慢,我重啓了服務器幾次但沒有幫助,那我看我怎麼修復問題,請幫忙經過進程刪除和中止刪除oracle工作很慢

+0

你刪除了什麼? –

+0

我刪除表中的數據只有大約25.000.000行,我取消了這個過程,取消後工作veri緩慢 –

+0

似曾相識,再次與這個問題;-)甲骨文是/回滾交易。不知道什麼樣的狀態,一旦你反彈了服務器tho – tbone

回答

0

如果您的表中沒有更多數據,請嘗試執行truncate您的表,使用此子句您將清除內存,並且您的查詢將再次快速。這裏https://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_10007.htm#SQLRF01707

TRUNCATE TABLE employees_demo; 

更多的細節同樣的問題How to stop oracle undo process?

+0

這個過程中止,在此之後我重新啓動服務器幾次,但沒有幫助 –

+0

@AniSevanyan是的,我明白了。你可以向你的桌子查詢嗎? –

+0

是的,數據庫的工作,但veri比較早慢 –

2

在簡化:

當你放棄delete語句,甲骨文已經做了一些工作,刪除某些行。在刪除行時,Oracle正在保存多版本併發控制所使用的UNDO,以便從其他事務中讀取數據,直到該數據提交併在回滾的情況下使用。

中止刪除時Oracle必須應用UNDO將這些行放回表中,因爲刪除語句是原子的。無論是發生或沒有發生。應用UNDO的速度相對較慢,在完成之前將會使用資源。通過重新啓動Oracle,額外的工作不會消失,Oracle將在應用完UNDO之後應用UNDO。

下一步將調查資源是否用於應用UNDO,或者如果緩慢有其他原因。不幸的是,我無法幫助解決問題。

檢查回滾進度的一個快速方法是運行此查詢,等待一分鐘,再次運行它,並使用它來估計分鐘數,直到數字收縮爲零。一旦回滾開始,就無法停止或改進它。重新啓動服務器並終止進程不會加快速度。您只需等到該數字變爲0並且該行消失即可。

select used_urec from gv$transaction; 
+0

那麼如果是這樣的話,它會在UNDO後自行修復? –

+0

是的,如果應用UNDO是緩慢的根源,那麼一旦完成,資源就會被釋放。 –

+0

我該如何檢查緩慢的來源 –