title: ODP.NET Connection Pooling Parameters
body: <p>I am trying to configure connection pooling for my .NET application using ODP.NET version 2.111.6.20.  The database is Oracle 11.1.  </p>
  
  <p>I am using the following connection string in my .NET 2.0 application:</p>
  
  <p><code>Data Source=prod; User Id=FAKE_USER; Password=FAKE_PASS; Pooling=true; Min Pool Size=2; Max Pool Size=5; Connection Timeout=30;"</code></p>
  
  <p>According to the documentation the connection pool should initialize with 2 connections and and increment up to 5 connections as needed.  It should never get higher than 5 connections.  </p>
  
  <p>What I am seeing is the the connections are growing 2 at a time and growing up to 10 connections.  I am monitoring the connections in the Oracle database by querying the v$session table so I know the connections are from that specific application originating from my application.</p>
  
  <p>If anyone can help me identify what might be happening in the connection pool inside this application that might be allowing for more than the Max number of connections I would appreciate it.</p>
  
  <p><strong>Sample C# Code</strong></p>
  
  <p>Here is a sample of the code making the calls to the database:</p>
  
  <pre><code>const string connectionString = "Data Source=prod; User Id=FAKE_USER; Password=FAKE_PASS; Pooling=true; Min Pool Size=5; Max Pool Size=5; Connection Timeout=30;";
  
  using (OracleConnection connection = new OracleConnection(connectionString)) {
      connection.Open();
  
      using (OracleCommand command = new OracleCommand("ALTER SESSION SET TIME_ZONE='UTC'", connection)) {
          command.ExecuteScalar();
      }
  
      using (OracleTransaction transaction = connection.BeginTransaction()) {
          const string procSql = @"BEGIN P_SERVICES.UPDATE_VERSION(:id, :version, :installDate); END;";
          using (OracleCommand command = new OracleCommand(procSql, connection)) {
              command.Parameters.Add(new OracleParameter("id", OracleDbType.Varchar2) { Value = id });
              command.Parameters.Add(new OracleParameter("version", OracleDbType.Varchar2) { Value = version });
              command.Parameters.Add(new OracleParameter("installDate", OracleDbType.TimeStamp) { Value = dateUpdated });
  
              try {
                  command.ExecuteNonQuery();
              } catch (OracleException oe) {
                  if (Log.IsErrorEnabled) {
                      Log.ErrorFormat("Update Error: {0}", oe.Message);
                  }
  
                  throw;
              }
  
              transaction.Commit();
          }
      }
  }
  </code></pre>