我正在嘗試使用ODP.NET版本2.111.6.20爲我的.NET應用程序配置連接池。數據庫是Oracle 11.1。ODP.NET連接池參數
我用我的.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個連接。
我所看到的是連接正在增長,一次增長到10個連接。我通過查詢v $ session表來監視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();
}
}
}
你可以發表你如何執行你的命令的例子嗎?很高興看到您使用的是「USING」還是手動創建/處理您的連接/命令 –
請參閱代碼示例原始文章的更新...如您所見,我已在使用語句代碼而不是手動關閉處理連接 – jprincipe
My Oracle.DataAccess程序集是4.112.3.0,是否您的程序集版本爲2.111.6.20?如果是這樣,也許是時候更新了。除非你被限制在.NET 4以前版本,並且不能? –