博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle 数据同步系列--触发器
阅读量:5323 次
发布时间:2019-06-14

本文共 797 字,大约阅读时间需要 2 分钟。

   现在随着项目集成的越来越深入,异构的数据多起来,数据同步的场景也用的多起来,我甚至在考虑是否忽悠用户上Oracle GoldenGate了,这样就可以不用考虑采用哪种同步方案了。

   简单的介绍一下我们数据的业务,与边界交换网管相关,有两个表一个是缓冲表,另外一个是持久化表。在一个库类,不同的表名,看似很简单,

要不然也不会写出来,主要是其中有多个blob字段! 这样有如下个问题

   1.Blob字段无法做数据变化监控,只能监控id 和其他字段的变化

   2.Blob字段在入另外表时必须先iNSERT 后 UPDATE,总共在一个事物隔离级别中,进行的。

   想了个偷懒的方法

   1.通过ID,得到变化的id,在缓冲表中得到,触发的数据,然后通过merge into快速的更新到持久化表。

   出现的问题

    

ORA-04091: 表 ORA-04091: 表 BOCOITMS.ITMS_VES_EPODATA_MEDIASYN 发生了变化, 触发器/函数不能读它ORA-06512: 在 "BOCOITMS.TRIG_VES_EPODATA_MEDIASYN", line 4ORA-04088: 触发器 'BOCOITMS.TRIG_VES_EPODATA_MEDIASYN' 执行过程中出错ORA-06512: 在 "BOCOITMS.PROC_MEDIA_SYNC", line 7. 发生了变化, 触发器/函数不能读它

   很眼熟,这就是触发器中无法再去回查原来的表。

       

         2.通过自治式事务解决以上的问题,但是自治事务是无法拿到最新的值得。

   最后还是通过老老实实的方法。先插入空的blob,再更新blob的方式解决的 。 

  

 

  

转载于:https://www.cnblogs.com/jerryxing/p/3450426.html

你可能感兴趣的文章
泛型子类_属性类型_重写方法类型
查看>>
eclipse-将同一个文件分屏显示
查看>>
mysql5.x升级至mysql5.7后导入之前数据库date出错的解决方法!
查看>>
poj2388---求奇数个数字的最中间的数
查看>>
对闭包的理解
查看>>
java.lang.OutOfMemoryError异常解决方法
查看>>
Css让文字自适应Table宽度[转]
查看>>
[Javascript] Flattening nested arrays: a little exercise in functional refactoring
查看>>
练习10-1 使用递归函数计算1到n之和(10 分
查看>>
使用maven构建多模块项目,分块开发
查看>>
Oracle MySQL yaSSL 不明细节缓冲区溢出漏洞2
查看>>
windows编程ASCII问题
查看>>
.net webService代理类
查看>>
C#高级编程笔记(一)
查看>>
Code Snippet
查看>>
MFC模态对话框程序不响应OnIdle
查看>>
Node.js Express项目搭建
查看>>
zoj 1232 Adventure of Super Mario
查看>>
Oracle 序列的应用
查看>>
1201 网页基础--JavaScript(DOM)
查看>>