多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 數據庫 > Oracle > 利用ORACLE存儲過程與JOB結合實現對數據表自動備份

利用ORACLE存儲過程與JOB結合實現對數據表自動備份

來源:程序員人生   發布時間:2014-05-25 18:49:14 閱讀次數:3484次

網(LieHuo.Net)教程 利用ORACLE存儲過程與JOB結合實現對數據表自動備份。

1、創建存儲過程
create or replace procedure data_auto_backup as
v_tablename varchar2(200);
v_year varchar2(10);
v_month varchar2(10);
v_bakdate varchar2(50);
v_maxdate date;
v_tablecount integer;
v_recordcount integer;
begin
select max(t.field1) - 30 into v_maxdate from table1 t;
v_year := to_char(v_maxdate,'yyyy');
v_month := to_char(v_maxdate,'MM');
v_bakdate := to_char(v_maxdate,'yyyy-MM-dd');

-- 檢查將要使用的年月表是否存在
v_tablename := 'table1' || v_year || v_month;

SELECT COUNT(TABLE_NAME) INTO v_tablecount FROM USER_TABLES ut WHERE ut.table_name = v_tablename;

if v_tablecount>0 then
dbms_output.put_line('該表存在!');
else begin
dbms_output.put_line('該表不存在或當前用戶無權訪問!');
execute immediate 'CREATE TABLE ' || v_tablename || ' AS SELECT * FROM table1 sr WHERE sr.field2=''''';
end;
end If;

-- table1表備份
execute immediate 'DELETE FROM ' || v_tablename || ' sr WHERE TO_CHAR(sr.field1,''yyyy-MM-dd'') = ''' || v_bakdate || '''';
execute immediate 'INSERT INTO ' || v_tablename || ' SELECT * FROM table1 sr WHERE TO_CHAR(sr.field1,''yyyy-MM-dd'') = ''' || v_bakdate || '''';

--dbms_output.put_line('DELETE FROM ' || v_tablename || ' sr WHERE TO_CHAR(sr.field1,''yyyy-MM-dd'') = ''' || v_bakdate || '''');
--dbms_output.put_line('INSERT INTO ' || v_tablename || ' SELECT * FROM table1 sr WHERE TO_CHAR(sr.field1,''yyyy-MM-dd'') = ''' || v_bakdate || '''');
--dbms_output.put_line('SELECT COUNT(sr.field2) FROM ' || v_tablename || ' sr WHERE TO_CHAR(sr.field1,''yyyy-MM-dd'') = ''' || v_bakdate || '''');

execute immediate 'SELECT COUNT(sr.field2) FROM ' || v_tablename || ' sr WHERE TO_CHAR(sr.field1,''yyyy-MM-dd'') = ''' || v_bakdate || '''' into v_recordcount;
if v_recordcount>0 then begin
execute immediate 'DELETE FROM table1 sr WHERE TO_CHAR(sr.field1,''yyyy-MM-dd'') = ''' || v_bakdate || '''';
--dbms_output.put_line('DELETE FROM table1 sr WHERE TO_CHAR(sr.field1,''yyyy-MM-dd'') = ''' || v_bakdate || '''');
end;
end If;

commit;

-- 檢查將要使用的年月表是否存在
v_tablename := 'table2' || v_year || v_month;

SELECT COUNT(TABLE_NAME) INTO v_tablecount FROM USER_TABLES ut WHERE ut.table_name = v_tablename;

if v_tablecount>0 then
dbms_output.put_line('該表存在!');
else begin
dbms_output.put_line('該表不存在或當前用戶無權訪問!');
execute immediate 'CREATE TABLE ' || v_tablename || ' AS SELECT * FROM table2 cpi WHERE cpi.field3=''''';
end;
end If;

-- table2表備份
execute immediate 'DELETE FROM ' || v_tablename || ' sr WHERE TO_CHAR(sr.field1,''yyyy-MM-dd'') = ''' || v_bakdate || '''';
execute immediate 'INSERT INTO ' || v_tablename || ' SELECT * FROM table2 sr WHERE TO_CHAR(sr.field1,''yyyy-MM-dd'') = ''' || v_bakdate || '''';

--dbms_output.put_line('DELETE FROM ' || v_tablename || ' sr WHERE TO_CHAR(sr.field1,''yyyy-MM-dd'') = ''' || v_bakdate || '''');
--dbms_output.put_line('INSERT INTO ' || v_tablename || ' SELECT * FROM table2 sr WHERE TO_CHAR(sr.field1,''yyyy-MM-dd'') = ''' || v_bakdate || '''');
--dbms_output.put_line('SELECT COUNT(sr.field3) FROM ' || v_tablename || ' sr WHERE TO_CHAR(sr.field1,''yyyy-MM-dd'') = ''' || v_bakdate || '''');

execute immediate 'SELECT COUNT(sr.field3) FROM ' || v_tablename || ' sr WHERE TO_CHAR(sr.field1,''yyyy-MM-dd'') = ''' || v_bakdate || '''' into v_recordcount;
if v_recordcount>0 then begin
execute immediate 'DELETE FROM table2 sr WHERE TO_CHAR(sr.field1,''yyyy-MM-dd'') = ''' || v_bakdate || '''';
--dbms_output.put_line('DELETE FROM table2 sr WHERE TO_CHAR(sr.field1,''yyyy-MM-dd'') = ''' || v_bakdate || '''');
end;
end If;

commit;
dbms_output.put_line('Ok' || v_recordcount);
end;

2、創建JOB

--1天運行一次,當前運行第一次
begin
sys.dbms_job.submit(job => :job,
what => 'data_auto_backup;',
next_date => sysdate,
interval => 'sysdate+1');
commit;
end;
/

轉自:http://www.cnblogs.com/stoneblog/

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 色吊丝二区三区中文字幕 | 二区视频| 免费一级毛片在级播放 | 成人国产一区二区三区 | 久操福利| 国产成人久久综合漫画 | 亚洲一区二区三区四区五区六区 | 一级黄色淫片 | 日韩专区亚洲精品欧美专区 | 国产欧美高清 | 亚洲视频在线观 | 伊人精品视频在线 | 久久成人精品 | 欧美激情一区二区三区在线播放 | 一级一级一级毛片免费毛片 | 国产jlzzjlzz视频免费 | 国产亚洲欧美在线视频 | 综合图片区 | 国产日韩精品视频一区二区三区 | 亚洲人成亚洲人成在线观看 | 粉嫩00福利视频在线精品 | 色视频2 | 黄色欧美一级片 | 欧美成人免费高清二区三区 | 欧美巨大video粗暴 | 亚洲第一页乱 | 最近免费字幕中文大全在线观看 | 伊人精品视频在线 | 国产福利资源 | 成年人小视频在线观看 | 国产精品久久久久天天影视 | 久久久久久久岛国免费观看 | 日本xxx护士21| 九九精 | 国产成人综合久久 | 国产成人综合亚洲一区 | 国产一区二区三区久久精品小说 | 精品国产第一国产综合精品 | xxx在线视频 | 免费的禁片 | 国产一区二区三区免费在线视频 |