免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5722 | 回复: 6
打印 上一主题 下一主题

当oracle数据库数据变动,不使用触发器如何知道数据发生了变动. [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-12-06 14:48 |只看该作者 |倒序浏览
100可用积分
正在搞一个自动侦查数据变动就调整的一个算法.

最好知道是那个表的那条数据发生了变动.

最佳答案

查看完整内容

Database Change Notification的产生背景  在现在的程序开发过程中,我们经常考虑的一个提高性能的方法就是用data cache。Data cache 避免了我们每次需要数据的时候都去访问数据库,这样节省了大量的时间。但是这样就出现了一个问题,当我们用data cache的时候,如果在数据库中的数据发生了改变,那么我们data cache 中的数据就和数据库的数据不一致了,这样将会导致错误。为了解决这个问题,我们一般常用两种方法。  1. 让用 ...

论坛徽章:
0
2 [报告]
发表于 2007-12-06 14:48 |只看该作者
Database Change Notification的产生背景

  在现在的程序开发过程中,我们经常考虑的一个提高性能的方法就是用data cache。Data cache 避免了我们每次需要数据的时候都去访问数据库,这样节省了大量的时间。但是这样就出现了一个问题,当我们用data cache的时候,如果在数据库中的数据发生了改变,那么我们data cache 中的数据就和数据库的数据不一致了,这样将会导致错误。为了解决这个问题,我们一般常用两种方法。

  1. 让用户手动的更新data cache的内容,例如提供一个更新按钮。

  2. 让我们的程序间隔一定的时间自动去更新data cache的内容。

  不难看出,这两种方法都有相当的局限性。

  第一种方法用户必须记住经常的去更新数据,如果数据库中的数据改了但是用户并没有去更新数据,这样将导致错误。第二种方法的局限性是我们没有办法设置一个恰好的时间间隔使数据库数据变化的时候保证data cache的数据也发生变化。

  Database Change Notification就是为了解决这个难题。

  Database Change Notification 的基本概念

  Database Change Notification的作用就是当数据库中的数据发生变化的时候,自动发出一个通知。

  用Database Change Notification有三个步骤:

  1. 注册: 指定数据库要监听的查询。ODP.NET自动注册基于这个查询的监听事件。数据库可以监听DML(Data Manipulation Language)事件,DDL(Data Definition Language)事件,和global 事件(例如关闭数据库)。

  2. 通知:一旦数据库中的数据发生变化,数据库将自动发出通知,我们要在我们的程序中定义事件处理操作。

  3. 响应:在我们的程序中,一旦收到通知,我们一般情况下会自动更新data cache,当然我们可以通知用户数据发生改变,由他来决定是否进行更新。

论坛徽章:
0
3 [报告]
发表于 2007-12-08 21:34 |只看该作者
1、记录更新时间,需要改应用。
2、分析archivelog。。

论坛徽章:
0
4 [报告]
发表于 2007-12-09 15:23 |只看该作者

——感觉还是触发器好!

——自己搞程序来分析archivelog?不现实!

——更改应用:发生更改,就记录其主键及更改时间于一个表,另一进程不断扫描此表即可知道发生了变动及变动位置,接下来进行调整,并置已经处理标志(已处理则定期移入历史表)。

——我的结论:通过触发器来记录被更改记录的特征如主键即可,应用可以完全不改,由另一进程不断扫描进行“调整”。

论坛徽章:
0
5 [报告]
发表于 2007-12-12 14:18 |只看该作者
楼上两位的说法我都知道,但总是感觉不想通过改应用,也不想使用触发器。

论坛徽章:
0
6 [报告]
发表于 2007-12-14 17:40 |只看该作者
这个属于Oracle 10g Release2的 新功能

论坛徽章:
0
7 [报告]
发表于 2007-12-21 13:33 |只看该作者
不知道送积分了没有?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP