创建32位ODP.Net OracleConnection对象非常慢

时间:2013-02-21 17:56:33

标签: oracle odp.net

我正在使用Oracle ODP.Net 11.2.0.2提供程序连接到Oracle数据库。当我将以下代码作为控制台应用程序运行时,OracleConnection对象的创建需要2分钟以上:

using System;
using Oracle.DataAccess.Client;

namespace OracleConnectionTest
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Creating connection...");
            OracleConnection conn = new OracleConnection("Data Source=mydatabase;User Id=myuserid;Password=mypassword");

            Console.WriteLine("Opening connection...");
            conn.Open();

            Console.WriteLine("Closing connection");
            conn.Close();

            Console.WriteLine("Done");
        }
    }
}

无论是从命令行还是从Visual Studio运行控制台应用程序,都会发生创建速度慢的问题。但是,如果我在启用调试器的情况下运行它(使用F5),那么它运行得非常快。如果我将.Net项目编译为64位(并使用64位Oracle客户端),它会快速运行。如果我在Windows服务应用程序中创建连接并启动该服务,它将快速连接。一个同事能够在安装了相同的32位客户端的情况下运行相同的代码,并为他快速运行。

我的环境必须有一些独特的东西导致减速。我在哪里可以确定发生了什么?

1 个答案:

答案 0 :(得分:5)

尝试在Oracle主目录中创建“log \ diag \ clients”目录结构。请参阅this blog post - 博主遇到了同样的问题,并通过创建该目录结构解决了这个问题。