oracle刪除超過N天數據腳本的方法
公司內做的項目是工廠內的,一般工廠內數據要求的是實時性,很久之前的數據可以自行刪除處理,我們數據庫用的oracle,所以就想著寫一個腳本來刪除,這樣的話,腳本不管放在那裡使用都可以達到效果
由於服務器是windows,參照Oracle Shell Scripting中,我們寫一下windows下的腳本
首先刪除數據的sql語句寫一下
DELETE FROM tablename WHERE createdtime<TRUNC(SYSDATE)-59; --刪除59天前的數據 commit; --提交事務 alter table tablename enable row movement; --數據刪除之後會產生很多空行,打開行移動,移動之後rowid會發生變化 alter table tablename shrink space; --連同索引一起壓縮,解決delete語句造成的空間未釋放問題 alter table tablename disable row movement; --關閉行遷移
這一段相當於
SPOOL C:\emp.lst SET LINESIZE 100 SET PAGESIZE 50 SELECT * FROM emp; SPOOL OFF
所以我們得到瞭一個新的sql文件,例如C:\emp.sql
CONNECT scott/tiger --開始刪除 DELETE FROM tablename WHERE createdtime<TRUNC(SYSDATE)-59; commit; alter table tablename enable row movement; alter table tablename shrink space; alter table tablename disable row movement; --結束刪除 --如果刪除多個表,可以將上面語句復制一下,tablename和where條件修改一下就可以瞭 EXIT;
然後創建一個文件C:\get_emp.bat
@echo off echo 開始刪除過期數據並縮容 sqlplus /nolog @C:\emp.sql echo 執行成功 pause exit
保存之後,執行一下看會不會出現問題,如果不會出現問題,添加一下windows的任務計劃程序,或者自己寫一個windows服務,定期調用一下這個bat就可以瞭
linux版本的類似,寫法這個連接下面有,寫完之後先進行測試,然後使用cron或者其他進行定期調用即可
當然,操作數據庫表不局限於定期清理數據,也可以進行報表生成、新表創建等其他操作
到此這篇關於oracle刪除超過N天數據腳本的文章就介紹到這瞭,更多相關oracle刪除數據腳本內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Oracle根據時間查詢的一些常見情況匯總
- Oracle之TO_DATE用法詳解
- oracle中commit之後進行數據回滾的方法
- Oracle觸發器和程序包的基本介紹
- Oracle縮表空間的完整解決實例