知识大全 Oracle10gRelease2新功能之变化通知
Posted 数据库
篇首语:人生处万类,知识最为贤。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Oracle10gRelease2新功能之变化通知相关的知识,希望对你有一定的参考价值。
Oracle10gRelease2新功能之变化通知 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
引言
在 NET应用程序中 我们有很多方法实现对Oracle数据库的访问 但是从功能和性能上来分析 Oracle Data Provider for NET(ODP NET)无疑是我们最好的选择 它是Oracle专门为基于 NET的应用程序设计的一套接口 它的访问速度要远远快于其它方法
本文将介绍Oracle Database的新功能之一 Change Notification 为了能更好的说明这个新功能 我将用例程的方式来介绍它的定义和使用方法
Database Change Notification的产生背景
在现在的程序开发过程中 我们经常考虑的一个提高性能的方法就是用data cache Data cache 避免了我们每次需要数据的时候都去访问数据库 这样节省了大量的时间 但是这样就出现了一个问题 当我们用data cache的时候 如果在数据库中的数据发生了改变 那么我们data cache 中的数据就和数据库的数据不一致了 这样将会导致错误 为了解决这个问题 我们一般常用两种方法
让用户手动的更新data cache的内容 例如提供一个更新按钮
让我们的程序间隔一定的时间自动去更新data cache的内容
不难看出 这两种方法都有相当的局限性
第一种方法用户必须记住经常的去更新数据 如果数据库中的数据改了但是用户并没有去更新数据 这样将导致错误 第二种方法的局限性是我们没有办法设置一个恰好的时间间隔使数据库数据变化的时候保证data cache的数据也发生变化
Database Change Notification就是为了解决这个难题
Database Change Notification 的基本概念
Database Change Notification的作用就是当数据库中的数据发生变化的时候 自动发出一个通知
用Database Change Notification有三个步骤
注册 指定数据库要监听的查询 ODP NET自动注册基于这个查询的监听事件 数据库可以监听DML(Data Manipulation Language)事件 DDL(Data Definition Language)事件 和global 事件(例如关闭数据库)
通知 一旦数据库中的数据发生变化 数据库将自动发出通知 我们要在我们的程序中定义事件处理操作
响应 在我们的程序中 一旦收到通知 我们一般情况下会自动更新data cache 当然我们可以通知用户数据发生改变 由他来决定是否进行更新
举例
在ODP NET中使用Database Change Notification很简单 请看下面的例程 这个例程用HR数据库用户
static void Main(string[] args) string sql = select first_name last_name salary from employees where employee_id = ; string constr = User Id=hr;Password=hr;Data Source=oramag;Pooling=false ; OracleConnection con = new OracleConnection(constr); con Open(); OracleCommand cmd = new OracleCommand(sql con); OracleDependency dep = new OracleDependency(cmd); dep OnChange += new OnChangeEventHandler(OnDatabaseNotification); cmd ExecuteNonQuery();
while (notificationReceived == false) Console WriteLine( Waiting for notification ); System Threading Thread Sleep( );
cmd Dispose(); con Dispose();
Console WriteLine( Press ENTER to continue ); Console ReadLine();
public static void OnDatabaseNotification(object src OracleNotificationEventArgs args) Console WriteLine( Database Change Notification received! ); DataTable changeDetails = args Details; Console WriteLine( Resource has changed changeDetails Rows[ ][ ResourceName ]);
notificationReceived = true;
HR一定要有change notification 权限 我们用下面的命令
grant change notification to hr;
在你的电脑上安装ODP NET 添加下面的using statement在你的代码刚开始的地方
using System Threading;using System Data;using Oracle DataAccess Client;
现在你就可以运行这段例程了 输出如下
Waiting for notification
这个时候去修改你的数据库 例如用下面的命令
update employees set salary = salary+ where employee_id = ;mit;
可以看到有如下的输出
cha138/Article/program/Oracle/201311/18853相关参考
Oracle10g回溯版本查询追踪行变化 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 故障检查
IP地址变化后Oracle10g不受影响 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!在实际的工作
Oracle10gas之集群 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 对于大规模的企业级应
Oracle10g之ORA-32004问题 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 今天在
知识大全 Oracle10gR2 新视图:V$SESSION变化跟踪
Oracle10gR2新视图:V$SESSION变化跟踪 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下
知识大全 Solaris安装Oracle10g之libCstd.so.1问题解决
Solaris安装Oracle10g之libCstd.so.1问题解决 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶
Oracle10G启用闪回功能 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! [oracle@l
详解Oracle10g中MERGE功能的增强 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Or
用Oracle的功能特性提高应用的执行效率 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!本文希望通
ORACLE入门之ORACLE的备份 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一意义 当