Oracle 利用触发器在2个数据库之间同步进行update

Oracle 利用触发器在2个数据库之间同步进行update,第1张

--先在2个DB之间建立dblink,然后可参考以下代码进行编写:

--说明:一般的更新都是增删改3个 *** 作,我这只写了改的 *** 作给你作参考。

Create Trigger tri_testabc

After Update On tb_student_db1 For Each Row

Declare

Begin

If updating Then

Update tb_score_db2@dblink Set

tb_score_db2stu_id = :Newstu_id

Where tb_score_db2tud_id = Oldsut_id;

End If;

Exception

When Others Then

--异常处理

Null;

End;

源表中有没有一个自然增长的、与写入顺序相关的字段,比如ID、写入时间?如果有,就做一个定时运行的JOB,如每小时或每6小时,间隔根据你的需要而定;再建一个同步记录表,记录每次同步时已经同步的数据,比如ID、时间,下次JOB运行时,从上次同步过的记录往后继续追加到新库。

如果是唯一的ID,可以在JOB启动时读取源表当前最大的ID,然后追加上次同步的ID+1到最大ID范围的数据到新库,成功后在同步记录里记录当前最大的ID,作为下次同步的起始依据。

如果有时间,那就根据你的JOB运行间隔,每次只追加在时间间隔内写入的数据,比如12:00:00000到12:00:00999时间范围内的数据,然后下次追加13:00:00000到13:00:00999。

如果啥都没有,那就只好定时全表刷新,先TRUNCATE目标表,然后源表整个复制过来,不过这样做随着时间推移数据激增,效率是相当可怕的。

昏。楼上所说的所有方法,统统不适用于楼主的情况。

楼主你也是没经验吧。你要及时同步做什么。你的测试服务器不修改数据么?不修改表结构么?你修改了怎么可能还从生产上同步过来。

最好最简单的一种方法,就是逻辑导出和落导入。而且支持跨版本。

具体的方法就是,在你的生产数据库上执行

exp userid=system/password file=expdmp log=explog statistics=none buffer=800000 full=y

这样就生成了一个叫expdmp的导出文件。此时需要注意你的环境变量,包括NLS之类的。如果你懂了就看下一步,否则自己去研究一下。如果没看清到时候出了乱码别怪我。

把那个expdmp拷贝到你的测试服务器上去,然后在同一个目录下执行

imp userid=system/password file=expdmp log=implog statistics=none

buffer=800000 full=y

做完就可以了,你的测试库就和生产库同步了。相同用户密码一样。

这才是最简单最行之有效的数据库同步办法。

当然,如果是我我现在还喜欢用热备份直接恢复。也很好很强大。可惜不能跨平台跨版本。

能实现,

sqlserver 到oracle可以用触发器实现,前提是你需要先在sql server上创建到oracle的连接。

之后oracle 到外网你可用通过程序或别的方法实现。

有时候项目开发的需要,必须将sqlServer中的某县表同步到Oracle数据库汇总,有其他系统来读取这些数据,不同数据库类型之间的数据同步我们可以使用连接服务器和sqlAgent来实现。加入我们泽凯有一个和听合同管理系统,其中有表contract和contract_project是需要同步到一个MIS系统中的ORACLE,那么我们可以按照以下步骤实现数据的同步

1在oracle数据库中建立对应的contract和contract_project表,需要同步那些数据字段我们就建立那些字段到oralce表中

需要注意哦的是oralce的数据类型和SQLServer的数据类型是不一样的,那么他们之间是什么样的关系,我们可以再sqlServer下运行:

SELECT

FROM msdbdboMSdatatype_mappings

来查看sqlServcer和oralce数据库的的类型类型对应

2建立连接服务器,我们将oralce系统作为SQLserver的链接服务器加入到SQLserver中

有时候我们需要在sqlsercer下访问另外一个sqlserver数据库上的数据或者访问其他oracel数据库就上的数据吗,想要完成这些 *** 作,我首先要创建一个数据库链接。

数据库链接能够让本地的一个sqlservwer登录用户勇摄到远程的一个数据库服务器上,并且像 *** 作本地数据库一样,那么怎样创建数据库链接?

创建一个sqlserver对应的oracle的数据库链接,

以上就是关于Oracle 利用触发器在2个数据库之间同步进行update全部的内容,包括:Oracle 利用触发器在2个数据库之间同步进行update、oracle10 数据库单表如何进行同步到另外一个oracle10数据库中、oracle数据库同步等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9760272.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存