C# Oracle.ManagedDataAccess OracleInternal.NotificationServices.OnException

C# Oracle.ManagedDataAccess OracleInternal.NotificationServices.OnException,c#,.net,oracle,odp.net,C#,.net,Oracle,Odp.net,我们使用“Oracle.ManagedDataAccess”ODP.NET驱动程序访问Oracle数据库 使用连接字符串连接到数据库时: Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(Host=10.40.40.38)(Port=1521)))(CONNECT_DATA=(SERVICE_NAME=D3T))); User Id=test; Password=test' 内部错误消息: OracleInternal

我们使用“Oracle.ManagedDataAccess”ODP.NET驱动程序访问Oracle数据库

使用连接字符串连接到数据库时:

Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(Host=10.40.40.38)(Port=1521)))(CONNECT_DATA=(SERVICE_NAME=D3T))); User Id=test; Password=test'
内部错误消息:

OracleInternal.NotificationServices.OnException**:ONS:打开连接后未配置节点列表

代码:

string connect = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(Host=10.40.40.38)(Port=1521)))(CONNECT_DATA=(SERVICE_NAME=D3T))); User Id=test; Password=test";
OracleConnection connection = new OracleConnection(connect);
connection.Open();
与数据库的连接工作正常。但是配置内部有什么问题?

我发现这个链接很有用:

基本上,您需要配置ONS,或禁用负载平衡和HAEvents,如下所示:

Oracle.ManagedDataAccess.Client.OracleConfiguration.LoadBalancing = false;
Oracle.ManagedDataAccess.Client.OracleConfiguration.HAEvents = false;

多亏了雅各布·彼得森

但是,如果在C代码中找不到上述设置,请按以下方式配置配置。“如果块已存在,则添加设置”


我们使用单个连接字符串(不含任何xml)配置OracleConnection。
可以使用以下名称设置这两个参数,例如,其他部分与此问题无关


数据源=(描述=(地址=(协议=tcp)(主机=mydbhost)(端口=1521))(连接数据=(服务名称=myservicename))负载平衡=false;ha事件=假;最小池大小=1;增量池大小=1;user id=mydbuser

多年来,我一直在使用ODP.NET托管客户端,在迁移到.NET Core并使用Oracle.ManagedDataAccess和Oracle.ManagedDataAccess.Core Nuget软件包进行最新更新之前,我从未见过这些OSN异常

感谢Jacob Peterson和其他建议忽略或禁用这两个属性“LOAD Balancement=False;HA Events=False”的成员。如果在打开连接时启用,每个异常都会生成3个异常

我假设新版本假设这些功能已启用,而不管服务器和/或连接字符串是否为此做好了准备


因此,我建议忽略它们或将禁用的值附加到连接字符串。

有帮助吗?Oracle服务器上未启动或配置ONS服务。为什么我会出现这个错误?这些错误。服务器上的配置包含以下内容:localport=6150 remoteport=6250 nodes=10.40.40.38:6250,但ONS服务(onsctl)未启动。我是在从Devart切换到Oracle.NET Core 2 beta驱动程序后获得此信息的。我在启动应用程序时也遇到了同样的问题。打开连接时,我在Oracle.ManagedDataAccess.dll中获得了六次“OracleInternal.NotificationServices.OnException”。这消除了错误。但这到底是什么意思,我一点也不懂?
<oracle.manageddataaccess.client>
    <version number="*">
      <settings>
        <setting name="LoadBalancing" value="false" />
        <setting name="HAEvents" value="false" />
      </settings>      
    </version>   
  </oracle.manageddataaccess.client>