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

在Oracle中实现每日表备份并删除7天前的备份表的更多相关文章

  1. Linux下通过脚本自动备份Oracle数据库并删除指定天数前的备份

    说明: Oracle数据库服务器操作系统:CentOSIP:192.168.0.198端口:1521SID:orclOracle数据库版本:Oracle11gR2 具体操作: 1.root用户登录服务 ...

  2. Linux下自动备份Oracle数据库并删除指定天数前的备份

    说明: Oracle数据库服务器 操作系统:CentOS IP:192.168.0.198 端口:1521 SID:orcl Oracle数据库版本:Oracle11gR2 具体操作: 1.root用 ...

  3. Windows环境下Oracle数据库的自动备份脚本自动删除30天前的备份

    @echo off echo ================================================ echo Windows环境下Oracle数据库的自动备份脚本 echo ...

  4. Debian下自动备份文件并上传到远程FTP服务器且删除指定日期前的备份Shell脚本

    说明:  1.备份目录/home/osyunwei下面所有的文件到/home/osyunweibak里面,并且保存为osyunwei20120701.tar.gz的压缩文件格式(2012_07_01是 ...

  5. SqlServer批量备份多个数据库且删除3天前的备份

    /******************************************* * 批量备份数据库且删除3天前的备份 ************************************ ...

  6. CentOS Linux自动备份MySQL数据库到远程FTP服务器并删除指定日期前的备份Shell脚本

    说明: 我这里要把MySQL数据库存放目录/var/lib/mysql下面的pw85数据库备份到/home/mysql_data里面,并且保存为mysqldata_bak_2011_11_03.tar ...

  7. MSSQL Server2012备份所有数据库到网络共享盘上面,并自动删除几天前的备份。。

    --要备份到哪一服务的IP网络位置,要提前打开文件夹共享.这里还要输入用户名和密码,下面这一行是建立共享 exec master..xp_cmdshell 'net use \\192.168.8.1 ...

  8. Mongodb自动备份数据库并删除指定天数前的备份

    1.创建Mongodb数据库备份目录 mkdir -p /home/backup/mongod_bak/mongod_bak_now mkdir -p /home/backup/mongod_bak/ ...

  9. oracle定时备份与删除N天前备份文件

    oracle定时备份数据库,以及删除7天前备份的数据. 1.创建存放备份目录: mkdir /home/oracle/data_backup mkdir /home/oracle/log_backup ...

随机推荐

  1. 通过javascript 直接播放amr格式的语言

    前段时间做了个功能(有2.3个月了,突然想起来了,就记录一下),语言播放.一开始觉得很简单~~~ 计划应用的是H5的audio标签,但因为这个标签不支持amr格式的语言,但是手机端传到后台的录音却都是 ...

  2. 使用httpClient模拟http请求

    在很多场景下都需要用到java代码来发送http请求:如和短信后台接口的数据发送,发送数据到微信后台接口中: 这里以apache下的httpClient类来模拟http请求:以get和Post请求为例 ...

  3. eslint 配置及规则说明

    中文官方网站 安装 可以全局安装,也可以在项目下面安装. 如下是在项目中安装示例,只需要在 package.json 中添加如下配置,并进行安装: “eslint”: “^4.11.0” 配置 配置方 ...

  4. Only the original thread that created a view hierarchy can touch its views解决办法

    这周操作系统作业布置了一个作业,内容是做个小软件,来模拟消费者生产者问题,作业实现起来不来,因为之前写过这个算法,所以关键步骤就是在消费和生产的时候更新缓存区的UI控件就行,之后问题就来了,出现了标题 ...

  5. hdu5745--La Vie en rose (DP+bitset)

    好题,学到新姿势! 题意:给两个字符串 a 和 b ,b可以进行变换,规则是可以任意交换相邻两个字符的位置,但是不可以有交叉(例如3和4交换,5和6交换 互不影响,但是2和3,3和4就不可以).求a中 ...

  6. easyui datebox 只选择月份的方法

    easyui datebox 只选择月份的方法 效果如下图: 代码如下: <html > <head> <meta charset="utf-8"&g ...

  7. Vue2.0-token权限处理

    token一种身份的验证,在大多数网站中,登录的时候都会携带token,去访问其他页面,token就想当于一种令牌.可以判断用户是否登录状态.本次页面是通过Element-ui搭建的登录界面 当用户登 ...

  8. pyenv docter检测出configure: error: OpenSSL is not installed.解决方案

    1 在安装相应版本的python时,前声明 CFLAGS=-I/usr/include/openssl \ LDFLAGS=-L/usr/lib64 \ pyenv install -v 3.5.1

  9. jdk8-lambda表达式的使用

    1, 遍历list集合 List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3 ...

  10. java监听器、定时器的使用

    1.监听器 在web.xml配置 <!-- 时间任务 --> <listener> <listener-class> com.hk.common.timer.Tim ...