首页 技术 正文
技术 2022年11月19日
0 收藏 482 点赞 4,728 浏览 1923 个字

不用闪回技术,因为业务想眼睁睁的看到备份表,而不是让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 :)

下一篇: django 参考
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,492
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,907
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,740
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,495
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,132
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,297