dblink每天将生产库数据备份到测试库(proc,jobs)

来源:互联网 发布:seo关键词优化通科 编辑:程序博客网 时间:2024/06/11 11:30

 

原理:

(1)利用database link使两个数据库之间建立连接。

   (2)建立一个存储过程:实现所有数据表内容的删除,然后将生产库的数据表内容插入到测试库中。(commit)

  (3)利用Jobs定期执行存储过程即可。

1、 在测试库中新建dblink

createdatabaselink to_shengchan(dblink名称)

connectto visuidentifiedby 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_bakis

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;

 

1 0
原创粉丝点击