2010-11-16 33 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