???? oracle有個數(shù)據(jù)表現(xiàn)在已經(jīng)有2500萬條數(shù)據(jù)了,軟件用到這個表的數(shù)據(jù)時就變的特別慢,所以準備把一個月以前的數(shù)據(jù)全部清除。
???? 我的步驟是(下邊操作都是在plsql中運行的)
?1、首先 將這個月的數(shù)據(jù)導出到一個臨時表中(這些數(shù)據(jù)是自己希望保留的)
?? create table tempTable as select id,name from?table1 where sj>to_date('2013-7-31 23:59:59','yyyy-mm-dd hh24:mi:ss');
2、然后將2500萬數(shù)據(jù)整個刪除(這個是我在有備份情況下才用的)
truncate table table1;?
3、然后將整個表刪除(因為事先從網(wǎng)上查了下,有網(wǎng)友說truncate后,直接把數(shù)據(jù)從臨時表導回來事個數(shù)據(jù)文件沒有變小,自己沒有試)
drop table table1;
4、將數(shù)據(jù)從臨時表全部導回來
create table?table1 as select id,name from?tempTable;
5、然后刪除臨時表
drop table tempTable;
這樣整個過程用了大概10分鐘左右就完成了。
以上僅是自己操作心得,如有不正確或者更好的方法希望大家指正。
附:來自 http://www.cnblogs.com/simplefrog/archive/2012/07/30/2615169.html
語法 delete from aa truncate table aa
區(qū)別 1.delete from后面可以寫條件,truncate不可以。
2.delete from記錄是一條條刪的,所刪除的每行記錄都會進日志,而truncate一次性刪掉整個頁,因此日至里面只記錄頁釋放,簡言之,delete from更新日志,truncate基本不,所用的事務(wù)日志空間較少。
3.delete from刪空表后,會保留一個空的頁,truncate在表中不會留有任何頁。
4.當使用行鎖執(zhí)行 DELETE 語句時,將鎖定表中各行以便刪除。truncate始終鎖定表和頁,而不是鎖定各行。
5.如果有identity產(chǎn)生的自增id列,delete from后仍然從上次的數(shù)開始增加,即種子不變,而truncate后,種子會恢復初始。
6.truncate不會觸發(fā)delete的觸發(fā)器,因為truncate操作不記錄各個行刪除。
總結(jié) 1.truncate和 delete只刪除數(shù)據(jù)不刪除表的結(jié)構(gòu)(定義)???? ?? drop語句將刪除表的結(jié)構(gòu)被依賴的約束(constrain),觸發(fā)器(trigger),索引(index); 依賴于該表的存儲過程/函數(shù)將保留,但是變?yōu)閕nvalid狀態(tài)。
? 2.delete語句是dml,這個操作會放到rollback segement中,事務(wù)提交之后才生效;如果有相應(yīng)的trigger,執(zhí)行的時候?qū)⒈挥|發(fā) ??? truncate,drop是ddl, 操作立即生效,原數(shù)據(jù)不放到rollback segment中,不能回滾. 操作不觸發(fā)trigger。
? 3.delete語句不影響表所占用的extent, 高水線(high watermark)保持原位置不動???? ?? 顯然drop語句將表所占用的空間全部釋放???? ?? truncate 語句缺省情況下見空間釋放到 minextents個 extent,除非使用reuse storage;?? truncate會將高水線復位(回到最開始)。
? 4.速度,一般來說: drop> truncate > delete。
???? 5.安全性:小心使用drop 和truncate,尤其沒有備份的時候.否則哭都來不及。
6.使用上,想刪除部分數(shù)據(jù)行用delete,注意帶上where子句. 回滾段要足夠大.???? 想刪除表,當然用drop???? 想保留表而將所有數(shù)據(jù)刪除. 如果和事務(wù)無關(guān),用truncate即可. 如果和事務(wù)有關(guān),或者想觸發(fā)trigger,還是用delete 如果是整理表內(nèi)部的碎片,可以用truncate跟上reuse stroage,再重新導入/插入數(shù)據(jù)。
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
