Oracle IDLE会话

时间:2018-10-08 01:51:25

标签: oracle jdbc denodo

我们在Oracle中保持连接空闲时遇到问题。为了给您一些背景知识,我们的用户连接到Denodo,而Denodo则具有一个连接到Oracle的数据源。该数据源使用一个用户名和密码并创建一个池。该池的初始大小为4,最大活动连接数为20。

使用JDBC,ODBC等从客户端开始进行连接。一些客户端是其他服务器请求数据(Spotfire和BusinessObjects),而其他客户端只是使用R,python,C#和其他脚本开发脚本的普通用户。他们还可以与DBeaver等工具连接。 Oracle用户的设置可以保持最多100个空闲连接。

现在,用户使用他们的脚本进行连接,并且他们拥有可以打开与Denodo的连接,通过查询获取数据,获取返回的数据并关闭与Denodo的连接的代码(我们已经检查过)。 Denodo依次执行相同的操作并打开与Oracle的连接,将查询从客户端传递给Oracle,获取数据并将其中继回客户端。这是我们不太确定的部分。我们期望Denodo关闭与Oracle的连接,但事实并非如此。连接在Oracle中保持打开状态,并显示为空闲。最终,我们有足够的空闲连接来填充为用户设置的配额(100)。

基于此,我们在Denodo中通过与Oracle的连接进行了一些调优,并将这些设置应用于该连接:

FETCHSIZE = 10000 
BATCHINSERTSIZE = 200 
VALIDATIONQUERY = 'SELECT COUNT(*) FROM SYS.DUAL' 
INITIALSIZE = 4 #initial size of pool
MAXIDLE = 25 #max number of idle connections
MINIDLE = 5 #min number of idle connections
MAXACTIVE = 20 #max active in the pool 
EXHAUSTEDACTION = 1 
TESTONBORROW = true 
TESTONRETURN = false 
TESTWHILEIDLE = false 
TIMEBETWEENEVICTION = 300000 #time between evictions in milliseconds
NUMTESTPEREVICTION = 10 #10 connections to be evaluated for eviction
MINEVICTABLETIME = 900000 #min evictable time in milliseconds
POOLPREPAREDSTATEMENTS = false 
MAXSLEEPINGPS = 4
INITIALCAPACITYPS = 8

应用此设置后,我们认为它将清除空闲连接。问题是它还没有。您会看到连接开始蔓延,最终又再次填满,不允许任何其他连接。

我想看到的是Denodo打开它所需的连接,使用它并释放它。在Oracle的Idle中不保持连接。 Oracle连接似乎从未被取消过,最终又达到了100个。

任何帮助将不胜感激

0 个答案:

没有答案