2014-02-05 19 views
1

我有理论上的问题。 我的应用程序使用Odp.Net。我添加为参考文件Oracle.DataAccess.dll版本2.112.3.0。 我正在使用Odp.Net查询数据库和注册表查询通知。 在每台计算机上,我从http://www.oracle.com/technetwork/database/windows/downloads/utilsoft-087491.html安装ODAC 11.2 Release 5(11.2.0.3.20)。Odp.Net - 根据客户和服务器

我想知道我的Odp.Net版本,Oracle客户端版本(可以安装在客户端计算机上)和Oracle服务器版本之间的依赖关系。

问题是,我注册查询通知后,我可以看到USER_CHANGE_NOTIFICATION_REGS表中的行。但几秒钟后,此通知未注册并消失。我读到这与版本问题有关,但我不明白我必须做什么。

我的目标是在我的应用程序中使用相同的Odp.Net文件(Oracle.DataAccess.dll +一些额外的依赖项,如oci.dll等)。

回答

0

解决 Oracle服务器版本11.2.0.1.0 11.2.0.2.0和有一个bug。如果其他版本的客户端注册事件,它会在第一次数据库更改后自动取消注册。为了解决这个问题,我必须保持坚持不懈的命令: alter system set event ='10867 trace name context context forever,level 1,COMMENT ='komentarz'SCOPE = SPFILE;

+1

上述解决方案是一种解决方法,不应长期依赖。正确的解决方法是修补数据库和odp.net客户端。这是一个非常古老的错误,两者的最新补丁将解决它。 –

1

ODP版本解密

ABCD(例如2.112.3.0):

  • 一个(2).NET版本(2.0+你的情况)
  • B(112)的Oracle客户端版本( 11.2以上版本你的情况)
  • C,d(3,0)ODP版本(ODP的3D版为.NET 2.0 Oracle客户端11.2)

另一个EXA mple:“4.100.1.0” - ODP for .Net 4.0+和Oracle Client 10.0+第一版

+0

那么为什么在服务器10.2.0.4.0和客户端10.2.0.3.0更改通知工作良好,但在服务器11.2.0.1.0和客户端10.2.0.3.0它不起作用(就像我写的通知从数据库dissapear几秒钟后)。在这两种情况下,我使用相同的odp 2.112.3.0 – templaris

0

11.2.0.1数据库中有关于更改通知的错误。

下面的SQL导致甲骨文以避免与旧版本的bug的代码路径,但建议您升级数据库:

ALTER SYSTEM SET事件“10867痕迹的名字永远背景下,1级”;

这并不意味着永久性的解决方案。您应该升级两个ODP.NET并将数据库修补到最新的11.2补丁集。

基督教吉文

甲骨文

+0

我知道你的解决方案,但1)我有案件时,服务器是在11.2.0.2版本,我仍然没有收到通知2)后改变系统...所有的作品,但只有时间当我重新启动服务器 - 我可以解决它并添加永久系统更改? – templaris

+0

如果这个alter system修复了这个问题,那么你正在碰到这个bug。除了数据库正在升级,ODP。NET也必须升级来修复这个bug。我认为在发行说明中应该提到这一点。 –