原理:
(1)利用database link使两个数据库之间建立连接。
(2)建立一个存储过程:实现所有数据表内容的删除,然后将生产库的数据表内容插入到测试库中。(commit)
(3)利用Jobs定期执行存储过程即可。
1、 在测试库中新建dblink:
createdatabaselink to_shengchan(dblink名称)
connectto visu identifiedby visu
using‘(DESCRIPTION=
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST =10.138.10.196)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST =10.138.10.198)(PORT = 1521)) --生产库集群IP
)
(CONNECT_DATA =
(SERVICE_NAME = yyjcrac) --实例名
)
)‘
2、 创建存储过程:
createorreplaceprocedure proc_shengchan_bak is
begin
------------以下是非实时表数据-----------------
deletefromz_visu_data_chk;
commit;
insertinto z_visu_data_chk
select * from z_visu_data_chk@to_shengchan t;
commit;
deletefrom z_visu_data_dish;
commit;
insertinto z_visu_data_dish
select * from z_visu_data_dish@to_shengchan t;
commit;
deletefromz_visu_data_fin;
commit;
insertinto z_visu_data_fin
select * from z_visu_data_fin@to_shengchan t;
commit;
deletefromz_visu_data_hr;
commit;
insertinto z_visu_data_hr
select * from z_visu_data_hr@to_shengchan t;
commit;
end;
创建存储过程时,必须执行F8,使其编译成功。
3、 执行存储过程
3.1 手动执行
call proc_shengchan_bak()
或者 exec proc_shengchan_bak
3.2 通过Jobs执行(创建job)
DECLARE
X NUMBER;
BEGIN
SYS.DBMS_JOB.SUBMIT
( job => X
,what => ‘TESTPROC;‘
,next_date => to_date(‘02-07-2008 01:00:00‘,‘dd/mm/yyyyhh24:mi:ss‘)
,interval =>‘TRUNC(sysdate) + 1 +9/ (24)‘ --每天早上9点执行
,no_parse => FALSE
);
SYS.DBMS_OUTPUT.PUT_LINE(‘Job Number is: ‘ || to_char(x));
COMMIT;
END;