我使用现在托管在生产服务器中的 jsp/servlets 创建了一个数据库应用程序。但是当我对应用程序执行一些任务时,数据库会话数超过 150,然后连接丢失。如果我不重新启动数据库服务器,我将无法使用该应用程序。我正在使用 ORACLE 11g。
问问题
147 次
2 回答
0
问题是缺少正确的数据库连接关闭。当我们在每次迭代中没有关闭数据库连接的情况下进行一些重复的活动时。它增加了与数据库的连接数,并根据每个定义达到最大连接数。为了避免这个问题,我们可以做两件事,
- 我们可以增加最大会话量。如果您正在增加会话参数,您还应该考虑增加进程和事务参数。这是您可以用来确定其值的公式。
进程=x
会话=x*1.1+5
事务=会话*1.1
为此,请使用以下 sql 脚本
sql> alter system set processes=500 范围=两者 sid=' ';
sql> 改变系统设置会话 = 555 范围 = 两个 sid =' ';
sql> alter system set transactions=610 范围=两者 sid='*';
- 另一种方法是您可以将应用程序设计为一次不超过先前定义的数据库连接数。Oracle 会定期自动删除当前未使用的连接。但这需要时间。
于 2013-03-20T03:49:40.253 回答
0
对于这个问题,你可以做两件事,
您可以使用以下命令超过数据库可以处理的进程数。
alter system set sessions = 300 scope = spfile;
为此,您必须以系统用户身份登录数据库。
您可以检查是否所有打开的数据库连接都已关闭。
于 2012-12-04T08:32:52.327 回答