.net freamwork中 C#写的,如下两段
1. OracleConnection oraConn1 = new OracleConnection("Data Source= source;User Id= user;Password= user;");
OracleConnection oraConn2 = new OracleConnection("Data Source= source;User Id= user;Password= user;");
oraConn1.Open();
oraConn1.Close();
oraConn2.Open();
oraConn2.Close();
2. OracleConnection oraConn1 = new OracleConnection("Data Source= source;User Id= user;Password= user;");
OracleConnection oraConn2 = new OracleConnection("Data Source= source;User Id= user;Password= user;");
oraConn1.Open();
oraConn2.Open();
oraConn1.Close();
oraConn2.Close();如上两段程序,执行第一部分,我看到有一个新的Session;如果换成是执行第二段,发现有六个Session出现,虽然这些都是inactive的,但总觉得这样不好,要多占好几个SessionID。能告诉我这是为什么么?我可以怎么改善解决这个问题呢? 十分感谢!
1. OracleConnection oraConn1 = new OracleConnection("Data Source= source;User Id= user;Password= user;");
OracleConnection oraConn2 = new OracleConnection("Data Source= source;User Id= user;Password= user;");
oraConn1.Open();
oraConn1.Close();
oraConn2.Open();
oraConn2.Close();
2. OracleConnection oraConn1 = new OracleConnection("Data Source= source;User Id= user;Password= user;");
OracleConnection oraConn2 = new OracleConnection("Data Source= source;User Id= user;Password= user;");
oraConn1.Open();
oraConn2.Open();
oraConn1.Close();
oraConn2.Close();如上两段程序,执行第一部分,我看到有一个新的Session;如果换成是执行第二段,发现有六个Session出现,虽然这些都是inactive的,但总觉得这样不好,要多占好几个SessionID。能告诉我这是为什么么?我可以怎么改善解决这个问题呢? 十分感谢!
如果要禁用连接池,在连接字符串里加上:pooling=false .
我试的是
oraConn1.Open()~~~~~orcConnN.Open()
oraConn1.Close()~~~~~orcConnN.Close()
也就是说,连着打开N个连接,然后又关掉N个连接
这时的Session数为下
连接数 Session数
1 1
2 6
6 11
11 16
16 21
21 26
上面这些值,都是临界值,也就是说,连接数是17或者18个时,Session数也是21个。其实我想问的就是这个是为什么?
虽然.Net的WEB服务器连接至Oracle服务器仅一个IP而已,但由于.Net Web服务的开放性,是否可以理解为:增加Session的冗余数可以减少WEB服务器每次连接至Oracle服务器的次数。即每连接Oracle 1次,WEB可能同时处理了1至5个同时访问Web的用户需求。
这在理论上是说得通的
v$px_process都可以看看.