哪種方法可以從表中刪除大型記錄?我有要求每週從表格中刪除約3000萬條記錄。 問題在於,有一個UNDO保留問題。我打算將我的刪除語句分解爲塊,以便它有所幫助。表從Oracle中刪除大量數據
當前語句
DELETE FROM LARGE_TABLE WHERE LARGE_ID ='someValue';
詳情:
1。表將有大約70萬條記錄。
2.刪除會影響至少40-45%的表格。
3.表格沒有分區。
規劃的語句改爲
LOOP
DELETE FROM LARGE_TABLE WHERE LARGE_ID ='someValue' and ROWNUM <'some row number';
COMMIT;
select count(1) INTO nCountValue from LARGE_TABLE WHERELARGE_ID ='someValue' ;
EXIT WHEN nCountValue = 0;
END LOOP;
主要想法是,這將減少還原保留。
問題,這是最佳做法嗎?如果沒有,任何指針?請幫助
「* UNDO保留*」是一個系統參數,用於指定(鬆散地說)UNDO表空間可以增長多少。它絕對不受任何交易的影響。您可能期望這會減小UNDO *表空間*的大小。 – 2013-04-08 07:26:41
我的理解是,當delete語句被觸發時,直到有提交,刪除的數據將在UNDO保留。我對麼?如果是這樣的話,那麼這就造成了問題,因爲數據非常龐大。 – 2013-04-08 07:31:57
你有問題嗎?一個錯誤?或刪除語句只是慢? – 2013-04-08 07:35:19