gpt4 book ai didi

oracle - ODP.NET + 端口 6200 上的意外流量(Oracle 通知服务)

转载 作者:行者123 更新时间:2023-12-04 21:33:12 24 4
gpt4 key购买 nike

我们有一个使用我们产品的客户端,其中包括使用 .NET 4+、 Entity Framework 和 ODP.NET 构建的 Windows 服务。出于某种原因,在一个特定的安装中,而不是任何其他安装,Windows 服务似乎在 6200 上产生流量。Oracle Documentation表示这是 Oracle Notification Services 使用的端口。这是出乎意料的,因为我们的产品不使用 ONS。我找到了 other Oracle Documentation这表明 RAC/Fast Failover 也使用 ONS,但我们已经与客户端确认他们在任何环境中都不使用 RAC,并且我们没有在连接字符串中使用 RAC 选项。我们也没有(据我们所知)使用 Database Change Notifications或对缓存数据进行任何缓存/验证,这听起来也利用了 ONS。

谁能帮助解释为什么我们会产生端口 6200 流量,更重要的是,如何让它停止?谢谢!

Netstat Results

Task Manager

<?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>

最佳答案

我们已将罪魁祸首范围缩小到 3 个特定于 Oracle/ODP.NET 的连接字符串设置中的一个或多个:
ENLIST , HA EVENTS ,和/或 LOAD BALANCING
Oracle 关于 Fast Application Notification 的文档向我们透露了这些我们不知道的设置。这将我们引向 Oracle 关于其所有 Feature Connection String Attributes 的文档。 .

Enlist - Default "true" - Serviced components automatically enlist in distributed transactions.

HA Events - Default "false" - Enables ODP.NET connection pool to proactively remove connections from the pool when a RAC service, service member, or node goes down.

Load Balancing - Default "false" - Enables ODP.NET connection pool to balance work requests across RAC instances based on the load balancing advisory and service goal.



我们将所有 3 显式设置为 false,并且端口 6200 连接结束。
ENLIST=false; HA EVENTS=false; LOAD BALANCING=false;

如果要相信默认值,那么 Enlist 就是罪魁祸首,但客户的可用性不允许进行离散测试来确认。我们遇到了其他各种文档,这些文档将所有 3 项功能都链接到 Oracle 通知服务和端口 6200。

关于oracle - ODP.NET + 端口 6200 上的意外流量(Oracle 通知服务),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45843830/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com