我想配置连接池使用ODP.NET版本2.111.6.20我的.NET应用程序。 该数据库是Oracle 11.1。
我用我的.NET 2.0的应用程序下面的连接字符串:
Data Source=prod; User Id=FAKE_USER; Password=FAKE_PASS; Pooling=true; Min Pool Size=2; Max Pool Size=5; Connection Timeout=30;"
根据该文件的连接池应该有2个连接和初始化,并根据需要增加多达5个连接。 它不应该获得比5间的连接更高。
我所看到的是连接在一个时间增长2和成长至10个连接。 我通过查询V $会话表监控Oracle数据库的连接,所以我知道的连接是由特定的应用程序从我的应用程序发起。
如果有人能帮助我确定哪些可以用这样的应用程序,它可能会被允许超过连接的最大数目我将不胜感激更内部的连接池发生。
C#示例代码
下面是使数据库的调用的代码示例:
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();
}
}
}