Odp.Net – 取决于客户端和服务器

我对理论提出质疑。 我的应用程序使用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第5版(11.2.0.3.20)。

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

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

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

ODP版本解密

abcd(例如2.112.3.0):

  • a(2).Net版本(在您的情况下为2.0+)
  • b(112)Oracle客户端版本(在您的情况下为11.2+)
  • c,d(3,0)ODP版本(适用于Oracle Client 11.2的.Net 2.0的3d版ODP)

另一个例子:“4.100.1.0” – ODP for .Net 4.0+和Oracle Client 10.0+ 1st version

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

以下SQL导致Oracle避免使用旧版本的错误代码路径,但建议您升级数据库:

alter system set events’10867 trace name context,level 1′;

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

Christian Shay

神谕

已解决的Oracle服务器版本11.2.0.1.0和11.2.0.2.0存在错误。 如果客户端在其他版本注册事件中,它将在首次更改数据库后自动取消注册。 要解决它,我必须持续命令:alter system set event =’10867 trace name context,level 1,COMMENT =’komentarz’SCOPE = SPFILE;