我想每分钟执行一次将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;
还想问得是如果每分钟把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;
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;
/一点建议,楼主为何要动态建表?以每分钟动态建表消耗大,且不用多久数据库会崩溃...
为什么不把记录插到带有时间字段的表内?
job是在完成当前操作后,才修改下一次的执行时间,所以说
如果你的任务是12:00:00执行的,insert 操作用了30秒,则下一次为12:01:30执行可以考虑,直接在存储过程中直接修改next_date.
另,楼主,“一个表容纳不下,...”不可能吧,再大一些可以分区啊...
如果后台是UNIX系统,写一个脚本在CRONTAB中定时执行此存储过程或直接在脚本中做备份表的操作。
如果后台是WINDOWS,也可以把调用存储过程的语句写在一个脚本中,用计划任务中调用sqlplus命令每分钟定时执行脚本文件。直接在存储过程中直接修改next_date的方法是否可行可以试一下。2。备份方法的问题
每分钟建一个表不可取,数据再多,建议每天或每小时(如确有必要)建一张表,表名随你取就是了,方法类似 njhart2003() 所说。
备份表中可比原表多加一个字段:记录插入时间