为方便完成指定数据表的同步 *** 作,可以采用dblink与merge结合的方法完成。
*** 作环境: 此数据库服务器ip为19216819676,有center与branch两个库,一般需要将center的表数据同步到branch,center为源库,branch为目标库,具体步骤如下:
1在源库创建到目标库的dblink
create database link branch --输入所要创建dblink的名称,自定义
connect to dbuser identified by “password” --设置连接远程数据库的用户名和密码
using '19216819676/branch'; --指定目标数据库的连接方式,可用tns名称
在创建dblink时,要注意,有时候可能会报用户名和密码错误,但实际上我们所输入的账户信息是正确的,此时就注意将密码的大小写按服务器上所设置的输入,并在账号密码前号加上双引号(服务器版本不同造成的)。
2成功后验证dblink
select from tb_bd_action@branch; --查询创建好的brach库
正常情况下,如果创建dblink成功,可采用该方式访问到远程数据库的表
3通过merge语句完成表数据同步
此例中需要将center库中的tb_sys_sqlscripe表同步到branch,简单的语法如下:
merge into tb_sys_sqlscripe@branch b using tb_sys_sqlscripe c on (bpk=cpk) --从center将表merge到branch,同步的依据是两个表的pk
when matched then update set bsqlscripe=csqlscripe,bauthor=cauthor --如果pk值是相同则将指定表的值更新到目标表
when not matched then --如果pk值不一至,则将源表中的数据整条插入到目标表中
insert values (cpk, cfk, ccreatetime, clastmodifytime,cauthor,cmodule,cdeleteflag, cscripttype);
commit; --记得merge后必须commit,否则更改未能提交
4为方便每次需要同步时自动完成同步工作,可将该语句做成存储过程或脚本来定时执行或按要求手动执行,简单说一下创建脚本的方法:
a创建merge文件夹
b先将merge语句写完整后,存到mergesql文件中
c新建mergebat文件,编辑后写入以下内容
sqlplus user/password@serverip/database @"%cd%\mergesql"
你要实现的这个可能跟SpringMvc的关系不是很大。
你要达到的目的其实就是在jvm启动的时候把数据库数据加载一份到内存,一个静态变量和一个静态初始化块就可以搞定你的问题,这两者都是在类加载的时候初始化一次,像前面回答的一样,你可以用一个HashMap搞定。稍微具体来说,一个静态变量
publicstaticfinalMapcache=newHashMap()
static{
cache=请求数据库 *** 作
}
key你自己加,String还是int都行,value是你数据库的结构,可以写个实体。获取的时候直接cacheget(key)就可以了。
java如何从数据库读取数据并写入txt文件:
将数据查询出来放在list中,然后写入文件。
给你个写入的类,查询数据自己如果能搞定最好了。
FileWriterfileWriter=newFileWriter("c:\Resulttxt");
int[]a=newint[]{11112,222,333,444,555,666};
for(inti=0;i
fileWriterwrite(StringvalueOf(a[i])"");
}
fileWriterflush();
fileWriterclose();
上面例子中的a也可以是list。
首先你要说明一下这2个数据库是什么关系
数据库集群,那么AB两库是镜像还是互备,当然,根据数据库品牌不同,同步的方式也不一样,不过都可以通过安装过程和建立数据库实例中的配置来实现
数据库之间通过其他可控程序连接,那么,该情况下,需要数据可能出现延迟等,不推荐
数据库之间没有连接,但是都由同一个节点进行数据下发,那么就在这个节点上实现一个跨库事物控制就行了
1、打开mysql的客户端 这里使用navicat,连接数据库,等到navicat主页面,双击需要 *** 作的数据库连接。
2、登录到数据库主页面后,点击左侧的数据库连接,打开数据库,可以看到可以 *** 作的所有数据库。
3、这时有有两个数据库,目标是将数据1的所有数据同步到数据库2上,需要点击主页面上的。
4、打开工具菜单,选择数据库同步菜单,d出数据同步的对话框,可以选择数据源,目标数据库。
5、选择数据库源和需要 *** 作的数据库后,然后在选择目标数据库连接,目标数据库,然后在选择需要 *** 作的表,点击开始即可。
关键是使用方式问题,你想问的是rac的数据同步还是你准备进行两台服务器的数据同步呢?
如果是rac的数据同步那是通过如下进程同步的:
1某个节点从共享数据库中读取一个block到db cache中
2这个节点会在所有的节点进行交叉db block copy
3当任何一个节点的缓存被修改的时候,就会在节点之间进行缓存修改
4将最终修改的结果写到磁盘上
其他的支持两台数据库服务器同步的方式很多:如高级复制、流复制等等,就不一一赘述,如果不清楚可以继续提问。
以上就是关于如何实现两个Oracle数据库的数据同步全部的内容,包括:如何实现两个Oracle数据库的数据同步、java怎么将数据库的数据做缓存,方便查找(java实现数据保存到数据库)、如何实现两个数据库之间的表数据同步等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)