求教oracle中如何定时删除一个月前的数据

gundamff 2008-06-12 03:50:30
有3个表 需要每月1号定时删除掉前30天的记录
翻了一下以前的问题 说是用JOB做 不是很明白 谁能给详细说说 谢谢了
...全文
746 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
broha 2010-12-08
  • 打赏
  • 举报
回复
怎么解决的啊?
gundamff 2008-06-13
  • 打赏
  • 举报
回复
感谢~~ 已经解决了~
hebo2005 2008-06-13
  • 打赏
  • 举报
回复
噢,我上面的存储过程名写的是
delet_data

job里写的是delete_data
名字不对
gundamff 2008-06-13
  • 打赏
  • 举报
回复
ORA-06550: 第 4 行, 第 3 列:
PL/SQL: Statement ignored


DECLARE
*
ERROR 位于第 1 行:
ORA-06550: 第 1 行, 第 93 列:
PLS-00201: 必须说明标识符 'DELETE_DATA'
ORA-06550: 第 1 行, 第 93 列:
PL/SQL: Statement ignored
ORA-06512: 在"SYS.DBMS_JOB", line 79
ORA-06512: 在"SYS.DBMS_JOB", line 136
ORA-06512: 在line 4
gundamff 2008-06-12
  • 打赏
  • 举报
回复
哦.....谢谢了~
明天再看看
hebo2005 2008-06-12
  • 打赏
  • 举报
回复
你用其它工具试试看,我这直接是从现成的job拷过来的,肯定没问题的
你在toad或者pl/sql下试试
gundamff 2008-06-12
  • 打赏
  • 举报
回复
授予 DBA 角色了啊
hebo2005 2008-06-12
  • 打赏
  • 举报
回复
你没建job的权限?
gundamff 2008-06-12
  • 打赏
  • 举报
回复

运行建JOB那段...
hebo2005 2008-06-12
  • 打赏
  • 举报
回复
先建成个存储过程
CREATE OR REPLACE PROCEDURE delet_data
IS
BEGIN
delete test a
WHERE date<sysdate-30;



COMMIT;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
NULL;
WHEN OTHERS
THEN
-- Consider logging the error and then re-raise
RAISE;
END delete_data;
/


再建个JOB


DECLARE
X NUMBER;
BEGIN
SYS.DBMS_JOB.SUBMIT
( job => X
,what => 'delete_data;'
,next_date => to_date('13/06/2008 00:00:00','dd/mm/yyyy hh24:mi:ss')
,interval => 'TRUNC(LAST_DAY(SYSDATE)) + 1'
,no_parse => FALSE
);
SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || to_char(x));
COMMIT;
END;

/

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧