当前位置:   article > 正文

【笔记】Oracle不同数据库之间的表级别同步_oracle数据库同步到另一个数据库

oracle数据库同步到另一个数据库

工具:Oracle官方工具sqldeveloper

题目描述:

        这两天在搞两个数据库的数据推送同步,当时想到有两个解决方案,在最开始的mapper层再加个数据源,数据插入时两个数据库一起写入,但是被否了,只好用DBlink+定时任务job执行存储过程的方式。

实操解决:

        1、任务

首先我有两个数据库 clgl 和 jjh 如图,任务是将 jjh 的TEST01表同步推送到 clgl 的同名 TEST01 表中:

        2、 DBlink

任务确定之后,我们开始着手准备两个数据库之间的跨库连接,这里我们使用DBlink的方式。

因为是jjh到clgl,所以我们在clgl表里创建DBlink,连接名为:TESTLINK,代码如下:

  1. --创建一个公共的数据库连接
  2. create public database link TESTLINK --连接的名字
  3. connect to jjh --连接的数据库名 jjh
  4. identified by "123456" --连接的数据库密码 jjh的密码
  5. using '192.168.10.110:1521/orcl'; --连接的地址 悬停在jjh上即可显示

执行成功:

我们可以在左侧列表看到这个DBlink:

        3、 创建同步的存储过程  存储过程名为TestProc

代码如下:

  1. select * from TEST01;
  2. --上边的查询不用复制
  3. --进行表级别的同步 创建存储过程
  4. create or replace procedure TestProc --存储过程名为TestProc
  5. as
  6. begin
  7. delete from TEST01; --先删除clgl中的TEST01表
  8. insert into TEST01(ID,--再insert jjh库中的TEST01表
  9. NAME,
  10. SAL) select ID,
  11. NAME,
  12. SAL from TEST01@TESTLINK; --@前边是clgl的TEST01表名 @后边是DBlink名 TESTLINK
  13. dbms_output.put_line('XYB_JZJXSQ_SYQK同步成功!'); --打印
  14. commit;
  15. end;

 选中存储过程部分开始执行得到:

         4、创建任务job

  1. --创建任务JOB testJob
  2. variable job01 number; --任务名为job01
  3. --两段分开执行
  4. begin
  5. dbms_job.submit(job => :job01, --任务名
  6. what => 'TestProc;', --执行的存储过程名
  7. next_date => to_date('3-11-2022 01:00:00', 'dd-mm-yyyy hh24:mi:ss'),--执行开始时间为11.3的凌晨1点
  8. interval => 'sysdate+12/24'); --执行间隔为12个小时 即下次执行时间为11.3的中午1点
  9. commit;
  10. end;

 执行:     

这里时间搞错了,当时时间为10::39,而写的凌晨1点早就过了,所以会自动间隔12小时到3号晚上的22:39才会执行。

        5、删除和修改

目前笔者都是直接通过SQLdeveloper工具进行直接点点点操作的,方便又好使。

笔记总结:

遇到这种纯经验性的需求一定要多做笔记。

参考链接:

https://blog.csdn.net/UniRong/article/details/78671917

http://ttps://segmentfault.com/a/1190000023044236

http:// http://t.csdn.cn/n4lFs

http://t.csdn.cn/78OMl

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/781633
推荐阅读
相关标签
  

闽ICP备14008679号