【问题标题】:Oracle Transactions doesn't work as expected in some client machines in a .net windows applicationOracle Transactions 在 .net windows 应用程序中的某些客户端计算机中无法按预期工作
【发布时间】:2010-09-02 12:38:51
【问题描述】:

我在 VB.NET (2.0) 和 Oracle 数据库中有一个 Windows 应用程序,连接由 System.Data.OracleClient 处理。我的oracle客户端是10g。在服务器端,AutoCommit 处于关闭状态。应用程序将事务(isolationLevel:ReadCommitted)用于某些操作。

问题在于,在某些机器中(并且仅在其中一些机器中)事务无法按预期工作。我检测到的问题如下:

  1. 回滚不起作用(它们通常在异常的捕获中使用)。之前所做的所有更改都已提交。

  2. 从我的应用程序中,我调用了一个使用选择子句“for update no wait”的存储过程。例外的行为是锁定选定的行,但它没有发生。

显然,所有机器的客户端配置都是相同的,但在其中一些机器中,事务具有这种行为。显然我错过了什么......

有什么帮助吗?

提前致谢

格斯。

【问题讨论】:

    标签: .net oracle transactions oracle10g locking


    【解决方案1】:

    需要更多关于配置的细节。

    “症状”表明提交发生在您不期望的情况下(即回滚不起作用并且锁被释放)。

    是否有任何形式的连接池?我会看看 V$SESSION。如果每个最终用户都有自己的会话,可能不会。最终用户能否在他们的 PC 上启动多个版本的应用程序,并且每个版本都有自己的会话?它们能否在应用程序中生成单独的 Windows,并获得它们自己的会话?

    可能所有客户端的配置方式相同,但人们使用它们的方式不同(例如,Fred 在后台运行报告,而 Wilma 在创建新任务的同时重新分配任务)。

    我还会在代码中查找提交。为此,我可能会跟踪操作。密切关注 v$transaction 以了解事务何时开始。

    【讨论】:

      【解决方案2】:

      不确定您对我们的期望。您说一方面您的应用程序适用于某些客户端计算机,但不适用于其他计算机。但另一方面,“所有机器的客户端配置都相同”。

      很明显,其中一种说法是错误的:要么您的应用程序可能会在任何客户端机器上失败,但还没有出现,或者有问题的客户端有一些不同之处。请记住,这可能与客户端机器本身无关,而是与它们的网络连接有关。例如,他们是否使用不同的防火墙?

      无论哪种方式,我们都不太可能为您解决问题。您需要打开(或输入)一些跟踪以了解您的应用中发生这些故障的何时和何处。然后你就有机会理解问题的为什么部分(或者至少给我们足够的信息来向你解释)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-02
        • 1970-01-01
        • 1970-01-01
        • 2018-11-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多