我们的客户使用我们的产品,其中包括使用.NET 4 +,Entity Framework和ODP.NET构建的Windows服务。出于某种原因,在某个特定安装中,而不是任何其他安装,Windows服务似乎在6200上生成流量。Oracle Documentation表示这是Oracle Notification Services使用的端口。这是意料之外的,因为我们的产品不使用ONS。我发现other Oracle Documentation表示RAC /快速故障转移也使用ONS,但我们已经向客户确认他们在任何环境中都不使用RAC,而且我们没有使用RAC选项在连接字符串中。我们也不是(据我们所知)使用Database Change Notifications或对缓存数据进行任何缓存/验证,这听起来也是利用ONS。
任何人都可以帮忙解释为什么我们会生成端口6200流量,更重要的是,如何让它停止?谢谢!
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<connectionStrings [Redacted] />
<appSettings [Redacted] />
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="Oracle.ManagedDataAccess.Client" type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</providers>
<contexts>
<context type="[Redacted]" disableDatabaseInitialization="true" />
</contexts>
</entityFramework>
<system.data>
<DbProviderFactories>
<remove invariant="Oracle.ManagedDataAccess.Client" />
<add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</DbProviderFactories>
</system.data>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" />
</runtime>
</configuration>
答案 0 :(得分:0)
可能取决于已安装的Oracle客户端版本。在12.1.0.2中,发布了ONS功能的自动配置。它可能在建立数据库连接的开始时就像ONS自动发现一样产生这种流量。
答案 1 :(得分:0)
我们已将罪魁祸首缩小到3个Oracle / ODP.NET特定连接字符串设置中的一个或多个:
ENLIST
,HA EVENTS
和/或LOAD BALANCING
Oracle关于Fast Application Notification的文档向我们介绍了我们尚未意识到的这些设置。这将引导我们获取Oracle所有Feature Connection String Attributes。
的文档登记 - 默认“true” - 服务组件自动登记 分布式交易。
HA事件 - 默认“false” - 启用ODP.NET连接池 在RAC服务时主动删除池中的连接, 服务成员或节点发生故障。
负载平衡 - 默认“false” - 启用ODP.NET连接池 根据负载平衡跨RAC实例平衡工作请求 咨询和服务目标。
我们将所有3设置为显式为false,并且端口6200连接已结束。
ENLIST=false; HA EVENTS=false; LOAD BALANCING=false;
如果要相信默认值,则Enlist是罪魁祸首,但客户的可用性不允许进行离散测试。我们遇到了其他各种文档,将所有这三个功能链接到Oracle Notification Services&amp;港口6200。