oracle刪除超過(guò)N天數(shù)據(jù)腳本的方法
公司內(nèi)做的項(xiàng)目是工廠內(nèi)的,一般工廠內(nèi)數(shù)據(jù)要求的是實(shí)時(shí)性,很久之前的數(shù)據(jù)可以自行刪除處理,我們數(shù)據(jù)庫(kù)用的oracle,所以就想著寫一個(gè)腳本來(lái)刪除,這樣的話,腳本不管放在那里使用都可以達(dá)到效果
由于服務(wù)器是windows,參照Oracle Shell Scripting中,我們寫一下windows下的腳本
首先刪除數(shù)據(jù)的sql語(yǔ)句寫一下
DELETE FROM tablename WHERE createdtime<TRUNC(SYSDATE)-59; --刪除59天前的數(shù)據(jù) commit; --提交事務(wù) alter table tablename enable row movement; --數(shù)據(jù)刪除之后會(huì)產(chǎn)生很多空行,打開(kāi)行移動(dòng),移動(dòng)之后rowid會(huì)發(fā)生變化 alter table tablename shrink space; --連同索引一起壓縮,解決delete語(yǔ)句造成的空間未釋放問(wèn)題 alter table tablename disable row movement; --關(guān)閉行遷移
這一段相當(dāng)于
SPOOL C:\emp.lst SET LINESIZE 100 SET PAGESIZE 50 SELECT * FROM emp; SPOOL OFF
所以我們得到了一個(gè)新的sql文件,例如C:\emp.sql
CONNECT scott/tiger --開(kāi)始刪除 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; --結(jié)束刪除 --如果刪除多個(gè)表,可以將上面語(yǔ)句復(fù)制一下,tablename和where條件修改一下就可以了 EXIT;
然后創(chuàng)建一個(gè)文件C:\get_emp.bat
@echo off echo 開(kāi)始刪除過(guò)期數(shù)據(jù)并縮容 sqlplus /nolog @C:\emp.sql echo 執(zhí)行成功 pause exit
保存之后,執(zhí)行一下看會(huì)不會(huì)出現(xiàn)問(wèn)題,如果不會(huì)出現(xiàn)問(wèn)題,添加一下windows的任務(wù)計(jì)劃程序,或者自己寫一個(gè)windows服務(wù),定期調(diào)用一下這個(gè)bat就可以了
linux版本的類似,寫法這個(gè)連接下面有,寫完之后先進(jìn)行測(cè)試,然后使用cron或者其他進(jìn)行定期調(diào)用即可
當(dāng)然,操作數(shù)據(jù)庫(kù)表不局限于定期清理數(shù)據(jù),也可以進(jìn)行報(bào)表生成、新表創(chuàng)建等其他操作
到此這篇關(guān)于oracle刪除超過(guò)N天數(shù)據(jù)腳本的文章就介紹到這了,更多相關(guān)oracle刪除數(shù)據(jù)腳本內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
oracle報(bào)錯(cuò)(ORA-00600)問(wèn)題處理
最近在做一個(gè)項(xiàng)目,使用的是Oracle數(shù)據(jù)庫(kù),近兩天不知道怎么回事,告警日志里總是顯示這個(gè)錯(cuò)誤(ORA-00600:internalerrorcode,arguments:[kcblasm_1],[103],[],[],[],[],[],[])度娘了一下,終于找到解決方式,分享給大家2014-08-08Oracle用戶密碼過(guò)期如何修改永不過(guò)期
針對(duì)不同的業(yè)務(wù)場(chǎng)景會(huì)有不一樣的業(yè)務(wù)需求,oracle的用戶密碼,生產(chǎn)環(huán)境肯定需要定期進(jìn)行更換,保證安全性,但是也同樣會(huì)有需求要求oracle用戶的密碼永遠(yuǎn)不過(guò)期,這篇文章主要給大家介紹了關(guān)于Oracle用戶密碼過(guò)期如何修改永不過(guò)期的相關(guān)資料,需要的朋友可以參考下2024-03-03Oracle安裝監(jiān)聽(tīng)器錯(cuò)誤的解決方法
這篇文章給大家介紹了oracle安裝監(jiān)聽(tīng)器錯(cuò)誤的解決方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2017-09-09Oracle服務(wù)端1521端口無(wú)法telnet,服務(wù)名未開(kāi)啟監(jiān)聽(tīng)的解決
這篇文章主要介紹了Oracle服務(wù)端1521端口無(wú)法telnet,服務(wù)名未開(kāi)啟監(jiān)聽(tīng)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12判定一個(gè)字符串是否為有效時(shí)間的函數(shù)
判定時(shí)間是否有效的函數(shù),為有效時(shí)間則返回1,不是有效時(shí)間則返回0,需要的朋友可以參考下2014-07-07Oracle數(shù)據(jù)庫(kù)之PL/SQL使用流程控制語(yǔ)句
這篇文章介紹了Oracle數(shù)據(jù)庫(kù)之PL/SQL使用流程控制語(yǔ)句的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05Win11系統(tǒng)下Oracle11g數(shù)據(jù)庫(kù)下載與安裝使用詳細(xì)教程(圖解)
Oracle11g是Oracle公司出的一個(gè)比較輕量版的數(shù)據(jù)庫(kù),在window系統(tǒng)上安裝比較方便,這篇文章主要給大家介紹了關(guān)于Win11系統(tǒng)下Oracle11g數(shù)據(jù)庫(kù)下載與安裝使用的相關(guān)資料,需要的朋友可以參考下2023-12-12Oracle dbca時(shí)報(bào):ORA-12547: TNS:lost contact錯(cuò)誤的解決
這篇文章主要給大家介紹了關(guān)于Oracle在dbca時(shí)報(bào):ORA-12547: TNS:lost contact錯(cuò)誤的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-11-11