不用闪回技术,因为业务想眼睁睁的看到备份表,而不是让DBA搞一通之后,才能看到备份数据表

OK,那好办了,写个存储过程解决你的需求,每天建个新表,把数据备份进去,业务人员可以看到这些每天的备份表

然后只保留7天,7天前的表给删掉

创建存储过程

create or replace PROCEDURE DAILY_BACKUP AS
v_now VARCHAR2(8);
v_seven varchar2(8);
v_7tab1_has int;
v_7tab2_has int;
v_7tab3_has int;
v_table_name_1 CONSTANT VARCHAR2(20) := 'TAB_TEST1_';
v_table_name_2 CONSTANT VARCHAR2(20) := 'TAB_TEST2_';
v_table_name_3 CONSTANT VARCHAR2(20) := 'TAB_TEST3_';

BEGIN
--获取当天日期
select to_char(SYSDATE, 'YYYYMMDD')
into v_now
from dual;

--获取7天前日期
select to_char(TRUNC(SYSDATE -7), 'YYYYMMDD')
into v_seven
from dual;

--删除7天前的表
select count(1) into v_7tab1_has from user_tables where TABLE_NAME = upper(v_table_name_1  || v_seven);
if v_7tab1_has=1 then
--如果存在,则执行drop table
execute immediate 'drop table TBS.'|| v_table_name_1  || v_seven;
end if;

select count(1) into v_7tab2_has from user_tables where TABLE_NAME = upper(v_table_name_2 || v_seven);
if v_7tab2_has=1 then
--如果存在,则执行drop table
execute immediate 'drop table TBS.'|| v_table_name_2 || v_seven;
end if;

select count(1) into v_7tab3_has from user_tables where TABLE_NAME = upper(v_table_name_3 || v_seven);
if v_7tab3_has=1 then
--如果存在,则执行drop table
execute immediate 'drop table TBS.'|| v_table_name_3  || v_seven;
end if;

--创建当天的数据备份
EXECUTE IMMEDIATE 'CREATE TABLE TBS.' || v_table_name_1  || v_now || ' AS SELECT * FROM TAB_TEST1';
EXECUTE IMMEDIATE 'CREATE TABLE TBS.' || v_table_name_2 || v_now || ' AS SELECT * FROM TAB_TEST2';
EXECUTE IMMEDIATE 'CREATE TABLE TBS.' || v_table_name_3 || v_now || ' AS SELECT * FROM TAB_TEST3';

END DAILY_BACKUP;

创建作业(每天中午12点执行,注意,你用图形界面创建作业更方便 ,不一定要用语句)

BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => '"TBS"."DAILYBACKDATA"',
job_type => 'STORED_PROCEDURE',
job_action => 'TBS.DAILY_BACKUP',
number_of_arguments => 0,
start_date => NULL,
repeat_interval => 'FREQ=DAILY;BYHOUR=12;BYMINUTE=0;BYSECOND=0',
end_date => NULL,
enabled => FALSE,
auto_drop => FALSE,
comments => 'DAILYBACKDATA');

DBMS_SCHEDULER.SET_ATTRIBUTE(
name => '"TBS"."DAILYBACKDATA"',
attribute => 'logging_level', value => DBMS_SCHEDULER.LOGGING_OFF);

DBMS_SCHEDULER.enable(
name => '"TBS"."DAILYBACKDATA"');
END;

Enjoy :)

最新文章

  1. web api与webservice(转)
  2. ubuntu 14.04 64位安装iNodeClient
  3. Unity连Photon服务器入门详解
  4. 用户登录流程详解 +volley(StringRequest)
  5. hdu1853 km算法
  6. SpringMVC 自定义参数绑定实现日期类型绑定
  7. android ftp案例分析
  8. XCode破解真机调试
  9. fatal error RC1004: unexpected end of file found处理方法
  10. http://begin.lydsy.com/JudgeOnline/problem.php?id=2774(poi病毒)
  11. 自签名的https证书是不安全的
  12. ELK安装
  13. Linux垃圾清理
  14. OS&SYS&Shuti模块
  15. VS2013 opencv配置
  16. Use MusicBrainz in iOS(三)查询专辑的完整信息
  17. 在junit中添加fail--有test失败即build Failed
  18. 构建你自己的论坛,基于windows服务器的xampp+discuz论坛
  19. SQlserver创建函数实现只取某个字段的数字部分
  20. json工具性能比较:json-lib和jackson进行Java对象到json字符串序列化[转]

热门文章

  1. C/C++掌握技能(二)
  2. Swift5 语言参考(一) 关于语言参考
  3. Windows Service 项目中 Entity Framework 无法加载的问题
  4. CentOS 设置 oracle 开机自动启动
  5. JS: 数组的循环函数
  6. C# 字符串操作详解
  7. vector源码(参考STL源码--侯捷):空间分配导致迭代器失效
  8. Jmeter测试Mysql数据库-入门篇
  9. php -- 连接Mysql 数据库
  10. CNN初探