如何实现Oracle数据库之间的数据同步?

我们都知道,在Oracle数据库的管理与开发工作中,总会存在着一些表数据和基础资料数据,这时需要有效的将这些数据库进行同步合并,有没有什么简单的方法可以实现Oracle数据库之间的数据同步呢?在此诚恺科技重庆服务器频道同大家分享利用dblink与merge结合的方法实现Oracle数据库之间数据同步。
操作环境: 此数据库服务器ip为192.168.196.76,有center与branch两个库,一般需要将center的表数据同步到branch,center为源库,branch为目标库,具体步骤如下:
1.在源库创建到目标库的dblink
create database link branch     --输入所要创建dblink的名称,自定义
connect to dbuser identified by “password”  --设置连接远程数据库的用户名和密码
using '192.168.196.76/branch';  --指定目标数据库的连接方式,可用tns名称

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

正常情况下,如果创建dblink成功,可采用该方式访问到远程数据库的表.
3.通过merge语句完成表数据同步
此例中需要将center库中的tb_sys_sqlscripe表同步到branch,简单的语法如下:
merge into tb_sys_sqlscripe@branch b using tb_sys_sqlscripe c on (b.pk=c.pk)  --从center将表merge到branch,同步的依据是两个表的pk
when matched then  update set b.sqlscripe=c.sqlscripe,b.author=c.author  --如果pk值是相同则将指定表的值更新到目标表
when not matched then                                --如果pk值不一至,则将源表中的数据整条插入到目标表中
insert values (c.pk, c.fk, c.createtime, c.lastmodifytime,c.author,c.module,c.deleteflag, c.scripttype);
commit;               --记得merge后必须commit,否则更改未能提交

4.为方便每次需要同步时自动完成同步工作,可将该语句做成存储过程或脚本来定时执行或按要求手动执行,简单说一下创建脚本的方法:
a.创建merge文件夹
b.先将merge语句写完整后,存到merge.sql文件中
c.新建merge.bat文件,编辑后写入以下内容
sqlplus user/password@serverip/database @"%cd%\merge.sql"

当运行merge.bat时就会自动完成所指定不同数据库间的同步工作。

更我关于服务器、虚拟化、数据库的相应知识文章可参考重庆诚恺科技官网。
转自:http://www.cqeis.com/news_detail/newsId=34e12494-e6d5-49ed-b337-39edb7de4c84.html


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/443913.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c++面试题总结1

内存结构 堆:由程序员手动分配和释放,完全不同于数据结构中的堆,分配方式类似链表。由malloc(c语言)或new(c)来分配,free(c语言)和delete(c&…

JBPM4.4整合SSH2项目

一:导入相应的jar包: *注意事项: (1).与项目中的jar包不能出现冲突 (2).版本应一致 jbpm-bpmn.jar jbpm-console-form-plugin.jar jbpm-console-graphView-plugin.jar jbpm-console-integration.jar jbpm-console-reports.jar jbpm-db.jar jbpm-example…

Linux简单命令收录(who,echo,date)【上】

shell严格区分输入命令的大小写,如who、Who和WHO是不同的,其中只有全小写——who是正确的Linux命令。 命令与选项和参数之间要用空格或制表符隔开。连续空格会被shell解释称单个空格。 选项:对命令的特殊定义,以“-”开始&#…

移动端测试面试题目大全

ADB工作原理 当用户启动一个adb客户端,客户端首先确认是否已有一个adb服务进程在运行。如果没有,则启动服务进程。当服务器运行, adb服务器就会绑定本地的TCP端口5037并监听adb客户端发来的命令,所有的adb客户端都是用端口 5037与…

Linux简单命令收录(cal,passwd,clear)【下】

1、cal NAME cal - display a calendar 显示日历 SYNOPSIS cal [options] [[[day] month] year] cal [options] [timestamp|monthname] 用法&#xff1a; cal [选项] [[[日] 月] 年] cal [选项] <时间戳|月份名> OPTIONS -1…

web知识点大总结

#第一章 Web基础知识 Web开发基本概念 1、万维网是一个由许多相互链接的超文本组成的系统&#xff0c;通过互联网访问。 2、web&#xff1a;worldwideweb&#xff0c;万维网&#xff0c;简称web&#xff0c;www&#xff0c;通常称为网页。 3、web开发&#xff1a;进行网页页…

Linux命令集—— cat AND more

1、cat NAME cat - concatenate files and print on the standard output 连接所有指定文件并将结果写到标准输出。【经常用来显示文件的内容&#xff0c;类似DOS的TYPE 命令】 SYNOPSIS cat [OPTION]... [FILE]... cat [选项]... [文件]... With no FILE, or when FILE…

Linux简单命令集——less

NAME less - opposite of more more的对立面 注意 与more命令类似&#xff0c;less命令也用来分屏显示文件的内容&#xff0c;但是less命令允许用户向前或向后浏览文件。例如&#xff0c;less命令显示文件内容时&#xff0c;可以用⬆键和⬇键分别将屏幕内容下移一行和上移一…

《重构-改善既有代

重要列表 1、如果你发现自己需要为程序添加一个特性&#xff0c;而代码结构使你无法很方便地达成目的&#xff0c;那就先重构哪个程序&#xff0c;使特性的添加比较容易的进行&#xff0c;然后再添加特性 2、重构前&#xff0c;先检查自己是否有一套可靠的测试机制&#xff0…

Myeclipse 6.5 优化

1、取消自动validation validation有一堆&#xff0c;什么xml、jsp、jsf、js等等&#xff0c;我们没有必要全部都去自动校验一下&#xff0c;只是需要的时候才会手工校验一下&#xff01; 取消方法&#xff1a; windows–>perferences–>MyEclipse Enterprise Workbench–…

Linux简单命令集——head

NAME head - output the first part of files 输出文件的第一部分SYNOPSIS head [OPTION]... [FILE]...head [选项]... [文件]...head命令在屏幕上显示指定文件file的开头若干行&#xff0c;行数由参数值来确定。显示行数的默认值是10。-c, --bytes[-]NUM print the firs…

操作系统中避免死锁的银行家算法【表面C++实际C语言】一学就废的菜鸡代码

文章目录银行家算法实验原理数据结构初始化输出资源分配量安全性算法银行家算法完整代码测试数据测试结果第一题第二题银行家算法 银行家算法是一种最有代表性的避免死锁的算法。在避免死锁方法中允许进程动态地申请资源&#xff0c;但系统在进行资源分配之前&#xff0c;应先…

GitHub 使用指南

目录切换分支删除已有文件只删除远程仓库中的文件&#xff0c;不删除本地仓库中的文件同时删除远程仓库和本地仓库中的文件提交文件git查看本地分支连接的是哪个远程分支切换分支 查看本地和远程所有分支 git branch -a当前本地分支为绿色&#xff0c;当前所在分支前带有“*”号…

百度EBG测试部AI测试工程师面经

百度EBG测试部AI测试工程师 1、自我介绍 自我介绍尽量多说一点&#xff0c;她会问你“还有吗&#xff1f;” 2、项目介绍 简历上的项目都让介绍了。会问这个项目是做什么的&#xff0c;是由谁开发&#xff0c;项目如何得到的&#xff0c;在测试过程中实现了什么。 3、自己…

一学就废的并查集它来了

文章目录题目描述输入输出样例输入样例输出提示算法思想代码实现寻找根节点汇总连接情况完整代码关于flag的初值题目描述 某省调查城镇交通状况&#xff0c;得到现有城镇道路统计表&#xff0c;表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城…

一道很简单的贪心算法题~【贪心:我不要脸的伐?】

文章目录题目描述输入输出样例输入样例输出C语言代码实现思路排序处理完整代码C代码实现排序完整代码彩蛋题目描述 小健有一家自己的商店&#xff0c;主营牛奶饮品&#xff0c;最近资金紧张&#xff0c;他想以尽可能低的价格进购足够的牛奶以供日常的需要。所以小健想要求助你…

Eclipse 中修改java编译版本

修改方法是&#xff1a; 1&#xff1a;Preferences-->Java-->Compiler->Compiler compliance level&#xff0c;选择一个需要的版本&#xff0c;比如从默认的1.4改为5.0 2&#xff1a;如果只想修改一个工程的Compiler compliance level,就右单击工程&#xff0c;选择属…

百战c++(1)

Public和private的区别 public和private是类里的关键字&#xff0c;用于规定类内数据或者成员函数的访问权限。private类型的数据或者函数&#xff0c;只能在相应的类内被访问&#xff0c;而public类型的数据或者函数被访问的权限比较宽&#xff0c;还可以在其它类或者其它函数…

一学就废的三种简单排序【冒泡、插入、选择】

文章目录其他排序算法冒泡排序算法实现代码实例插入排序算法实现代码实例选择排序算法实现代码实例其他排序算法 一学就废的归并排序 冒泡排序 排列顺序从前到后或者从后往前都可&#xff0c;本文选择从后到前的顺序&#xff0c;升序排列&#xff1a;比较相邻两个元素&#x…

百战c++(2)

delete 和 delete []的真正区别 delete 对应 new delete[]对应new[]对于简单类型包括简单类型数组&#xff0c;delete 与delete[]没有区别。对于自定义类型数组&#xff0c;delete 只会删除一个元素&#xff0c;delete 则会删除所有元素。 指针和数组的区别 野指针是什么 野指…