2010-11-16 17 views
2

如果數據存在一小時,我需要清除表中的所有記錄。 知道開始時間,我有一個列「StartTime」與「日期」數據類型。 我想我需要一個計時器來做到這一點,如何在oracle中使用定時器執行過程

我怎麼能在oracle中做到這一點?

回答

1

要求不是很清楚。

這是一個工作/計劃,你必須運行一次,將刪除存在超過一個小時的記錄?如果是這樣的話,你可以使用..

delete from <table_name> 
where StartTime < (sysdate-1/24); 
commit; 

如果你需要不斷清除記錄,您將需要安排此爲作業。頻率取決於您希望刪除記錄的頻率。

您試圖解決什麼商業案例?

4

對於哪個版本的Oracle?

對於版本v7.3.4到9i,請使用DBMS_JOB來安排任務。 10g +,你想用DBMS_SCHEDULER。我不清楚你多久需要/需要這個運行...

3

您可以創建計劃的作業在Oracle 10g及以上使用DBMS_SCHEDULER

如果你真的很講究,你可以安排這個工作 - 它要求你的過程 - 運行每隔1分鐘,這樣的數據將被清除出只要第60分鐘過期。

參考this link對於如何設置/通過腳本在Oracle 10g調度作業爲例

6

根據您的具體要求是什麼,我可能會看看使用視圖,只顯示有效的行查詢時。這會使得看起來只有最後一小時的記錄可用。這也意味着你不需要在創建完成一小時後刪除行。

然後要刪除行,我會看看使用DBMS_JOB或DBMS_SCHEDULER刪除行中的建議在其他一些答案。

請記住,僅僅因爲您的要求是在一小時後清除表格中的行,您可能確實只需要移除查詢它們的能力,您可以使用視圖執行查詢。

+1

+1優秀的建議。有時用戶說「1小時後記錄被刪除」,但他們真正的意思是「1小時後記錄從不出現在屏幕上」。 – 2010-11-16 12:02:40

相關問題