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) 主动学习专业技能,物质基础决定上层建筑


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


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


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


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


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

相关文章
|
11月前
|
Oracle 关系型数据库 Linux
【赵渝强老师】Oracle数据库配置助手:DBCA
Oracle数据库配置助手(DBCA)是用于创建和配置Oracle数据库的工具,支持图形界面和静默执行模式。本文介绍了使用DBCA在Linux环境下创建数据库的完整步骤,包括选择数据库操作类型、配置存储与网络选项、设置管理密码等,并提供了界面截图与视频讲解,帮助用户快速掌握数据库创建流程。
900 93
|
10月前
|
Oracle 关系型数据库 Linux
【赵渝强老师】使用NetManager创建Oracle数据库的监听器
Oracle NetManager是数据库网络配置工具,用于创建监听器、配置服务命名与网络连接,支持多数据库共享监听,确保客户端与服务器通信顺畅。
475 0
|
12月前
|
存储 数据管理 数据库
数据字典是什么?和数据库、数据仓库有什么关系?
在数据处理中,你是否常困惑于字段含义、指标计算或数据来源?数据字典正是解答这些问题的关键工具,它清晰定义数据的名称、类型、来源、计算方式等,服务于开发者、分析师和数据管理者。本文详解数据字典的定义、组成及其与数据库、数据仓库的关系,助你夯实数据基础。
数据字典是什么?和数据库、数据仓库有什么关系?
|
11月前
|
数据采集 关系型数据库 MySQL
python爬取数据存入数据库
Python爬虫结合Scrapy与SQLAlchemy,实现高效数据采集并存入MySQL/PostgreSQL/SQLite。通过ORM映射、连接池优化与批量提交,支持百万级数据高速写入,具备良好的可扩展性与稳定性。
|
11月前
|
人工智能 Java 关系型数据库
使用数据连接池进行数据库操作
使用数据连接池进行数据库操作
264 11
|
11月前
|
SQL Oracle 关系型数据库
Oracle数据库创建表空间和索引的SQL语法示例
以上SQL语法提供了一种标准方式去组织Oracle数据库内部结构,并且通过合理使用可以显著改善查询速度及整体性能。需要注意,在实际应用过程当中应该根据具体业务需求、系统资源状况以及预期目标去合理规划并调整参数设置以达到最佳效果。
690 8
|
存储 关系型数据库 数据库
【赵渝强老师】PostgreSQL数据库的WAL日志与数据写入的过程
PostgreSQL中的WAL(预写日志)是保证数据完整性的关键技术。在数据修改前,系统会先将日志写入WAL,确保宕机时可通过日志恢复数据。它减少了磁盘I/O,提升了性能,并支持手动切换日志文件。WAL文件默认存储在pg_wal目录下,采用16进制命名规则。此外,PostgreSQL提供pg_waldump工具解析日志内容。
1095 0
|
监控 Oracle 关系型数据库
"深度剖析:Oracle SGA大小调整策略——从组件解析到动态优化,打造高效数据库性能"
【8月更文挑战第9天】在Oracle数据库性能优化中,系统全局区(SGA)的大小调整至关重要。SGA作为一组共享内存区域,直接影响数据库处理能力和响应速度。本文通过问答形式介绍SGA调整策略:包括SGA的组成(如数据缓冲区、共享池等),如何根据负载与物理内存确定初始大小,手动调整SGA的方法(如使用`ALTER SYSTEM`命令),以及利用自动内存管理(AMM)特性实现智能调整。调整过程中需注意监控与测试,确保稳定性和性能。
1510 2

推荐镜像

更多