2013-08-22 65 views
0

这是我第一个问题,我希望能很好地解释,所以我可以找到答案。Oracle9i数据库允许有最大数量的连接吗?

我在一家交付公司的网站项目中工作,该公司在Oracle9i服务器中拥有所有数据。 大多数网络用户只是想知道他们什么时候会获得他们的软件包,但我确定也有一些机器人每天多次查询该信息以更新他们的系统。 我正在研究停止这些机器人的代码(例如,在15分钟内询问第三个查询后发现验证码),因为我们有一些Web服务可用于批量查询所有数据。

现在,我的问题是,高峰时间12.00-14.00数据库开始回答非常缓慢。 这是我从Web应用程序解析的一些数据。我没有这个级别的Web服务日志,但那里也有很多查询。

enter image description here

它显示了时间戳时,我请求来自数据源的连接,所述Integer.toHexString(connection.hashCode()),该数据源的名称,时间戳,当我关闭连接和差在两个时间戳之间。 大部分时间查询在不到一秒钟内结束,但昨天我有超过2分钟的这种奇怪的延迟。

数据库上允许的最大连接数是否超过限制,数据库在再次尝试之前会排队查询一段时间?

在此先感谢。

回答

2

是否有某种允许的databas

是连接maximun数量。

SESSIONSbasic initialization parameters之一和

指定可在 系统中创建会话的最大数目。由于每个登录都需要一个会话,因此该参数 可有效确定系统中最大并发用户数。

默认值是从PROCESSES参数导出(此加22的1.5倍);因此,如果你没有改变PROCESSES参数(默认为100)会话到你的数据库的最大数量将是172

您可以通过查询V$PARAMETER确定值:

SQL> select value 
    2 from v$parameter 
    3 where name = 'sessions'; 

VALUE 
-------------------------------- 

480 

所以当它超过了限制数据库队列我的查询有一段时间再次尝试之前?

当你试图超出会话参数的值异常ORA-00018: maximum number of sessions exceeded将得到提升。

有些东西可能会排队查询,但它会在您自己的代码中,而不是由Oracle指定的。


这听起来好像你应该找到更多的信息。如果不是最大会话数,那么您需要捕获需要很长时间的查询并对其进行配置;我认为这是更可能的情况。如果您的会议数量最多,那么您需要查看您的(公司)代码以确定发生的事情。

你还没有真正解释过有关应用程序的任何信息,但听起来好像你正在为每个用户打开一个会话(或更多)。您可能想重新考虑这是否是正确的方法。

0

感谢编辑vape。

我也发现了真正的问题。 我有方法要求连接到同步的数据源,并且在高峰时间请求连接时导致锁定。我已经删除了,一切工作正常。

相关问题