Oracle中大資料量刪除
因為遷移需要,需要清理生產庫中 累積的大量歷史資料,根據待清理的資料性質,整理出以下兩種方案:
1、需刪除表中全部資料的,對錶執行TRUNCATE操作(速度很快)。
TRUNCATE TABLE tab_p_mt_resp;
2、對於需有條件刪除資料的表,按照是否分割槽表分別採取以下兩種操作:
a)對於分割槽表,定位存放有過期資料的分割槽,採用刪除分割槽的方式刪除其中的資料(速度也很快,重建索引一般也不會太慢)。
ALTER TABLE tab_p_mt_log DROP PARTITION P201208;
如果分割槽上建有全域性索引(GLOBAL INDEX),DROP分割槽會造成索引失效,則需要在DROP完分割槽後重建索引。
ALTER INDEX IDX_MTLOG_MOBILE REBUILD;
(LOCAL INDEX在DROP分割槽後不會失效,所以不用REBUILD)
b)對於非分割槽表,我們採取分批刪除,分批提交的辦法,避免造成ORA-01555錯誤,下面是採用自治事務刪除過程(相對上面兩種方法是最慢的,但有時我們別無選擇):
create or replace procedure delBigTab
(
p_TableName in varchar2,
p_Condition in varchar2,
p_Count in varchar2
)
as
pragma autonomous_transaction;
n_delete number:=0;
begin
while 1=1 loop
EXECUTE IMMEDIATE
'delete from '||p_TableName||' where '||p_Condition||' and rownum <= :rn'
USING p_Count;
if SQL%NOTFOUND then
exit;
else
n_delete:=n_delete + SQL%ROWCOUNT;
end if;
commit;
end loop;
commit;
DBMS_OUTPUT.PUT_LINE('Finished!');
DBMS_OUTPUT.PUT_LINE('Totally '||to_char(n_delete)||' records deleted!');
end;
/
exec delBigTab('TAB_P_RPT_1069','MT_TIME
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28998293/viewspace-765067/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle大資料量分批刪除Oracle大資料
- Oracle中大批量刪除資料的方法Oracle
- Oracle中大批量刪除資料的方法(轉自)Oracle
- 大資料量刪除的思考(二)大資料
- 大資料量刪除的思考(三)大資料
- 大資料量刪除的思考(四)大資料
- 大資料量刪除的思考(一)大資料
- Oracle 刪除千萬級資料量時,可以考慮以下方法來提高刪除效率Oracle
- oracle刪除重資料方法Oracle
- Oracle 刪除資料檔案Oracle
- 如何刪除oracle資料庫Oracle資料庫
- oracle刪除資料檔案Oracle
- 手工刪除oracle資料庫Oracle資料庫
- 刪除 oracleOracle
- oracle 快速刪除大批量資料方法(全部刪除,條件刪除,刪除大量重複記錄)Oracle
- oracle手動刪除資料庫Oracle資料庫
- 手動刪除oracle資料庫Oracle資料庫
- oracle恢復誤刪除資料Oracle
- 轉:Oracle刪除資料檔案Oracle
- Oracle閃回刪除恢復誤刪資料Oracle
- oracle 快速刪除大批量資料方法(全部刪除,條件刪除,刪除大量重複記錄) 轉Oracle
- 【轉】oracle 快速刪除大批量資料方法(全部刪除,條件刪除,刪除大量重複記錄)Oracle
- oracle 大資料量資料插入Oracle大資料
- 批量刪除Oracle資料庫的資料Oracle資料庫
- ORACLE刪除-表分割槽和資料Oracle
- windows下Oracle資料庫完全刪除WindowsOracle資料庫
- oracle徹底刪除資料檔案Oracle
- Oracle資料庫使用者刪除Oracle資料庫
- oracle資料庫備份刪除操作Oracle資料庫
- Oracle批量建立、刪除資料庫表Oracle資料庫
- 【刪除】【Oracle】完美刪除Windows系統上的Oracle軟體OracleWindows
- 【北亞資料恢復】誤刪除oracle表和誤刪除oracle表資料的資料恢復方法資料恢復Oracle
- 【RAC】刪除RAC資料庫節點(六)——刪除Oracle叢集服務資料庫Oracle
- 【RAC】刪除RAC資料庫節點(七)——刪除Oracle叢集軟體資料庫Oracle
- ORACLE刪除歸檔Oracle
- 【Oracle】刪除所有表Oracle
- Oracle閃回刪除Oracle
- oracle批次刪除表Oracle