我想每分钟执行一次将C表中的数据导入到D表中,但是现在不是每分钟执行一次,为什么阿???
还想问得是如果每分钟把C表上的数据导入一个名称为"C+当前时间"表,应该怎么做啊?
例如:
现在是2005年8月4日12点30分如果到12点31分得时候将表t_user倒入到t_user200508041231表中,应该怎么做啊??sql语句应该怎么写啊????
请教各位高手了。在线等待中!!!
create or replace procedure Pro_move_t_C
as
begin
insert into scott.D select * from scottC.;
delete from scott.C;
commit;
end;/
variable job1 number;
begin
sys.dbms_job.submit(:job1,'Pro_move_t_C;',sysdate,'sysdate+1/1440');
dbms_job.run(:job1);
commit;
end;

解决方案 »

  1.   

    确定并修改初始化参数job_queue_interval ,使其<60
    create or replace procedure Pro_move_t_C
    authid current_user
    as
    sqlstr   varchar2(1000);
    begin
    sqlstr:='create table t_user'||to_char(sysdate,'yyyymmddhh24mi')
    ||' as select * from t_user';
    execute immediate sqlstr;
    delete t_user;
    commit;
    ...
    end;
    /一点建议,楼主为何要动态建表?以每分钟动态建表消耗大,且不用多久数据库会崩溃...
    为什么不把记录插到带有时间字段的表内?
      

  2.   

    但是job问题没有回答阿,那位高手把job问题回答一下啊?????
      

  3.   

    这个问题比较复杂,你能确保1分钟内能完成所有操作吗?
    job是在完成当前操作后,才修改下一次的执行时间,所以说
    如果你的任务是12:00:00执行的,insert 操作用了30秒,则下一次为12:01:30执行可以考虑,直接在存储过程中直接修改next_date.
      

  4.   

    楼上说的对!“job是在完成当前操作后,才修改下一次的执行时间”
    另,楼主,“一个表容纳不下,...”不可能吧,再大一些可以分区啊...
      

  5.   

    1。JOB执行间隔时间的问题,如 bzszp(SongZip) 所言,如果不能保证1分钟内执行完成,就不能使用常规方法。建议:
    如果后台是UNIX系统,写一个脚本在CRONTAB中定时执行此存储过程或直接在脚本中做备份表的操作。
    如果后台是WINDOWS,也可以把调用存储过程的语句写在一个脚本中,用计划任务中调用sqlplus命令每分钟定时执行脚本文件。直接在存储过程中直接修改next_date的方法是否可行可以试一下。2。备份方法的问题
    每分钟建一个表不可取,数据再多,建议每天或每小时(如确有必要)建一张表,表名随你取就是了,方法类似 njhart2003() 所说。
    备份表中可比原表多加一个字段:记录插入时间