Oracle跨数据库实现定时同步指定表中的数据

简介: Oracle跨数据库实现定时同步指定表中的数据

一. 概述


在目标数据库中向源数据库建立一个database link远程连接,之后编写一个存储过程,用于将源数据库中的数据同步到目标数据库,再编写一个Oracle定时任务,最后在该定时任务中执行上述存储过程,即可实现定时同步。


二. 具体实现步骤


(1)在目标机上使用sqlplus登录


<pre><code>

sqlplus tianzhi_smart/tianzhi_smart@10.2.200.133:1521/orcl

</code></pre>


(2)建立远程连接database link

用如下命令建立DB Link:


<pre>

create public database link db21

connect to scott

identified by "tiger"

using '192.168.56.6:1521/ORCL';

</pre>


注意事项:


  1. 创建远程连接的类型必须为public;


  1. 在创建dblink时,要注意,有时候可能会报用户名和密码错误,但实际上我们所输入的账户信息是正确的,此时就注意将密码的大小写按服务器上所设置的输入,并在账号密码前号加上双引号(服务器版本不同造成的)。


(2)创建存储过程


<pre>

create or replace procedure UPDATETEST

as

begin

delete from TEST01;

insert into TEST01 (ID, NAME, SAL) select ID, NAME, SAL from TEST@db21;

dbms_output.put_line('同步成功!');

end;

/

</pre>


(3)创建任务JOB


<pre>

SQL> variable job1 number;

SQL>

SQL>

begin

dbms_job.submit(:job1,'UPDATETEST;',sysdate,'sysdate+1');

end;

/

</pre>


说明:


  1. 定时任务调用执行存储过程,执行时间间隔为1天,1/1440为一分钟。


  1. 时间不要设太短,否则很吃内存,会造成电脑卡死。


(4)运行任务JOB


<pre>

SQL> begin

2  dbms_job.run(:job1);

3  end;

4  /

</pre>


(5)删除任务JOB


<pre>

SQL> begin

dbms_job.remove(:job1);

end;

/

</pre>


三. 工作心得

(1) 磨刀不误砍柴工


对于此类步骤清楚,条理清晰的问题,在执行过程中,一定要确保每一步的执行结果都是正确的,千万不要等到执行到最后一步时,才去检验是否存在问题。


如果不对前面的步骤进行检验,只等到最后一步出现问题的时候才去检查。不仅不能明确问题出现的准确位置,而且还得倒着层层往前查找问题。如果问题是出现第一步,那之后肯定会连环出问题,这样不仅可能会需要大幅进行修改,而且还会很影响状态,费工费时。


而如果没进行一步,就检验清楚,将战场打扫干净。来一个干掉一个,后面即使出现问题,也是属于各个击破,不至于搞成被群殴的下场。


(2) 书到用时方恨少


这两天公司项目处于上线调试阶段,由于项目需要部署在集团公司机房,而集团公司又距离公司有一定的距离,同时集体公司机房为了确保安全又是与外界隔离开来的。所以,在部署调试阶段,出现问题,都只能是现场进行解决,而不能再是带回公司进行解决。


而出现问题时,我一直有一个感受。那就是通过上网搜索或者询问别人的方式,基本都可以想出来一个笨方法。而笨方法一般都是属于套路性的方式,代码重复率很高。

人都有偷懒的心理,为了少干点活儿,都会想一些巧方法。而我想出来的巧方法,一般都是知道有这种方式,但就是不知道如何具体去用。比如AOP,设计模式,涉及到复杂逻辑的存储过程等。


由于平时学的少,学的不够深入,虽然知道,但等到真到用的时候,却两眼抓黑,无处下手,真有一种摔头捶胸之感。


(3) 主动学习专业技能,物质基础决定上层建筑


一直在工作之外,逍遥地干着轻松愉快的事儿,完全不顾及工作技能上的不足。现在倒好,由于技能实力不足,有问题有任务时,不能及时杠上,都快要危及到自己的饭碗了。如果饭碗丢了,还拿什么谈诗和远方。


别看上面的解决过程简单,昨天就是为了解决这个数据库同步的问题,愣是折腾到凌晨十二点半。坚持日更千字不间断的我,愣是不得不中断一天。现在看来,这完全是可以避免的。如果平时注意多多积累专业知识,主动学习专业技能,提升学习和适应能力,遇到此类问题肯定是可以在不到一个小时的时间内就处理掉,而我愣是折腾了将近一天的时间。


平时看似在工作之外的时间,多花了时间做自己感兴趣的事情,看似是有效利用了时间,但虽然工作上出现的问题越来越多,才发觉自己其实在不恰当的时间段内做了应该分散开来的应该做的事情。导致没有利用完整的时间去进行充电学习。而专业技能上不来,工作上问题得不到及时解决,只得去加班,去熬夜解决,这不是自己工作努力的表现。这都是平时不注意学习的结构,而平时不注意积累,到最后只会低效的工作拖累,浪费大量的时间。


总之,工作之外的时间,主动学习专业技能,不是在占用业余时间,从长远来看,是在节约业余时间。因为以后技能提升了,工作效率提高了,反而会留出更多的业余时间去做自己想做的事情。工作技能提高了,才能保证好自己的饭碗,才能去更加随性的追求自己的诗和远方。


适当的时间,干正确的事儿。说的就是这个道理。一句话,守不住饭碗,其他的都是扯淡!

相关文章
|
15天前
|
存储 人工智能 Cloud Native
云栖重磅|从数据到智能:Data+AI驱动的云原生数据库
在9月20日2024云栖大会上,阿里云智能集团副总裁,数据库产品事业部负责人,ACM、CCF、IEEE会士(Fellow)李飞飞发表《从数据到智能:Data+AI驱动的云原生数据库》主题演讲。他表示,数据是生成式AI的核心资产,大模型时代的数据管理系统需具备多模处理和实时分析能力。阿里云瑶池将数据+AI全面融合,构建一站式多模数据管理平台,以数据驱动决策与创新,为用户提供像“搭积木”一样易用、好用、高可用的使用体验。
云栖重磅|从数据到智能:Data+AI驱动的云原生数据库
|
8天前
|
存储 Oracle 关系型数据库
【赵渝强老师】Oracle的还原数据
Oracle数据库中的还原数据(也称为undo数据或撤销数据)存储在还原表空间中,主要用于支持查询的一致性读取、实现闪回技术和恢复失败的事务。文章通过示例详细介绍了还原数据的工作原理和应用场景。
【赵渝强老师】Oracle的还原数据
|
14天前
|
缓存 关系型数据库 MySQL
高并发架构系列:数据库主从同步的 3 种方案
本文详解高并发场景下数据库主从同步的三种解决方案:数据主从同步、数据库半同步复制、数据库中间件同步和缓存记录写key同步,旨在帮助解决数据一致性问题。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
高并发架构系列:数据库主从同步的 3 种方案
|
17天前
|
SQL 关系型数据库 数据库
国产数据实战之docker部署MyWebSQL数据库管理工具
【10月更文挑战第23天】国产数据实战之docker部署MyWebSQL数据库管理工具
58 4
国产数据实战之docker部署MyWebSQL数据库管理工具
|
8天前
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
26 3
|
8天前
|
监控 关系型数据库 MySQL
Linux环境下MySQL数据库自动定时备份策略
在Linux环境下,MySQL数据库的自动定时备份是确保数据安全和可靠性的重要措施。通过设置定时任务,我们可以每天自动执行数据库备份,从而减少人为错误和提高数据恢复的效率。本文将详细介绍如何在Linux下实现MySQL数据库的自动定时备份。
21 3
|
15天前
|
关系型数据库 分布式数据库 数据库
云栖大会|从数据到决策:AI时代数据库如何实现高效数据管理?
在2024云栖大会「海量数据的高效存储与管理」专场,阿里云瑶池讲师团携手AMD、FunPlus、太美医疗科技、中石化、平安科技以及小赢科技、迅雷集团的资深技术专家深入分享了阿里云在OLTP方向的最新技术进展和行业最佳实践。
|
18天前
|
SQL Oracle 关系型数据库
Oracle数据库优化方法
【10月更文挑战第25天】Oracle数据库优化方法
26 7
|
18天前
|
Oracle 关系型数据库 数据库
oracle数据库技巧
【10月更文挑战第25天】oracle数据库技巧
22 6
|
18天前
|
存储 Oracle 关系型数据库
Oracle数据库优化策略
【10月更文挑战第25天】Oracle数据库优化策略
17 5

推荐镜像

更多