oracle通过计划任务备份表

1.先手动创建表

create table user01_backup_20210204 select * from user01

commit;

 

2.清空表

truncate table user01_backup_20210204

delete from user01_backup_20210204

 也可以将此语句写到下面存储过程中,配合备份策略实现备份

3.创建存储过程

 

create or replace procedure p_backupuser01 is

begin

   

    execute immediate 'insert into user01_backup_20210204 select * from user01';

    commit;

   

end;

 

4.创建计划任务

 

VARIABLE backupuser01 number;

  begin

  sys.dbms_job.submit(:backupuser01,’p_backupuser01;’, trunc(sysdate+1)+1/24,’ trunc(sysdate+1)+1/24’);

  commit;

  end;

  /

 

这里需要注意的是,在submit方法的前面一定要先定义job这个变量,另外,submit方法的第二个参数是一个存储过程的名,记得在后面添加“:”号,在next_date是一个时间类型变量而不是一个字符串,所以需要注意不要把它当成字符串,不需要对该参数加引号。最后一个参数interval是一个字符串类型,记得添加引号。最常见的错误如下图所示:
  ORA-01008: not all variables bound就是没有定义变量的意思。一定记的在使用submit方法时定义jobid变量。

 

下面是常有的设置Interval的方法:
  2 每天固定时间运行,比如早上8:10分钟:Trunc(Sysdate+1) + 8/24
  ² 每天:trunc(sysdate+1)
  ² 每周:trunc(sysdate+7)
  ² 每月:trunc(sysdate+30)
  ² 每个星期日:next_day(trunc(sysdate),’SUNDAY’)
  ² 每天6点:trunc(sysdate+1)+6/24
  ² 半个小时:sysdate+30/1440

 

TRUNC()函数分两种   
trunc实际上是truncate函数,字面意思是截断,截尾。 
1.TRUNC(for dates) 
TRUNC函数为指定元素而截去的日期值。截尾后返回最近日期 
其具体的语法格式如下: 
TRUNC(date[,fmt]) 
date 一个日期值 
fmt 日期格式,该日期将由指定的元素格式所截去。忽略它则由最近的日期截去 
下面是该函数的使用情况: 
select   trunc(sysdate,'mm')   from   dual=2009-1-1 
   
2.TRUNC(for number) 
TRUNC函数的功能是将数字进行截断,对所截取的结果并不四舍五入。   
其具体的语法格式如下 
TRUNC(number[,decimals]) 
number 待做截取处理的数值 
decimals 指明需保留小数点后面的位数。可选项,忽略它则截去所有的小数部分 
下面是该函数的使用情况: 
TRUNC(89.985,2)=89.98 
TRUNC(89.985)=89 
TRUNC(89.985,-1)=80 
  注意:第二个参数可以为负数,表示为小数点左边指定位数后面的部分截去,即均以0记。

 

5.可以通过 select * from all_jobs 查看作业状态

原文地址:https://www.cnblogs.com/zhm1985/p/14371278.html