请帮忙解析下一下

[复制链接]
查看11 | 回复6 | 2005-2-28 12:57:00 | 显示全部楼层 |阅读模式
SQL> --Schedule a snapshot to be run on this instance every hour, on the hour
SQL>
SQL> variable jobno number;
SQL> variable instno number;
SQL> begin
2select instance_number into :instno from v$instance;
3dbms_job.submit(:jobno, 'statspack.snap;', trunc(sysdate+1/1440,'HH'), 'trunc(SYSDATE+1/1440,''HH'')', TRUE, :ins
tno);
4commit;
5end;
6/
begin
*
ERROR at line 1:
ORA-23420: interval must evaluate to a time in the future
ORA-06512: at "SYS.DBMS_JOB", line 57
ORA-06512: at "SYS.DBMS_JOB", line 129
ORA-06512: at line 3
从网上找到出错的解析,但不太明白,能否解一下?
The program does not raise any packaged exceptions. The interval date expression must evaluate to a future date or the following Oracle exception will be raised:
Cause: The parameter INTERVAL evaluates to a time earlier than SYSDATE.
Action: Choose an expression that evaluates to a time later than SYSDATE
没看懂应怎么解决
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
trunc(sysdate+1/1440,'MI'), 'trunc(SYSDATE+1/1440,''MI''
你这是1分钟执行一次,你的数据库不用作别的事情了


trunc(sysdate+1/144,'MI'), 'trunc(SYSDATE+1/144,''MI''
至少10分钟吧
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
你这个不就是让oracle自动执行statspack包吗?是你的trunc没有用正确,你把'HH' 改成'MI'就可以了
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
最初由 eygle 发布
[B]trunc(sysdate+1/1440,'MI'), 'trunc(SYSDATE+1/1440,''MI''
你这是1分钟执行一次,你的数据库不用作别的事情了


trunc(sysdate+1/144,'MI'), 'trunc(SYSDATE+1/144,''MI''
至少10分钟吧 [/B]

呵呵,这个我知道,我现在是测试,不想10分钟后才见到结果。
现在是可以执行了,不过我怎么停掉这个JOB呢?文档没说啊。JOB号是61。
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
exec dbms_job.remove('jobno')
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
多谢斑竹!
回复

使用道具 举报

千问 | 2005-2-28 12:57:00 | 显示全部楼层
问题的真正原因, 在于trunc(sysdate+1/1440,'HH')会得到一个比当前sysdate早的时间.
当然, 正如QYL说的, 也许只是输入错误, 把'MI'误作为'HH'了.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行