grails oracle连接超时

grails oracle连接超时,grails,gorm,Grails,Gorm,我在grails中有以下数据源配置 dataSource_staging_oracle { dbCreate = "none" pooled = true url = "jdbc:oracle:thin:@//my-box-oracle.com:1521/DB1" driverClassName = "oracle.jdbc.OracleDriver" username = "USER_1" password = "encryptedpasswor

我在grails中有以下数据源配置

dataSource_staging_oracle {
    dbCreate = "none"
    pooled = true
    url = "jdbc:oracle:thin:@//my-box-oracle.com:1521/DB1"
    driverClassName = "oracle.jdbc.OracleDriver"
    username = "USER_1"
    password = "encryptedpassword"
    passwordEncryptionCodec = PropertiesCodec
}
dataSource_prod_oracle {
    dbCreate = "none"
    pooled = true
    autoReconnect = true
    url = "jdbc:oracle:thin:@//my-oracle-prod-box.com:1521/DB2"
    driverClassName = "oracle.jdbc.OracleDriver"
    username = "user_2"
    password = "encrypted_password"
    passwordEncryptionCodec = PropertiesCodec
}
应用程序能够获取数据库连接并正常工作。然而,经过1-2小时的处理后,我看到连接关闭异常

ERROR util.JDBCExceptionReporter - Closed Connection 错误util.jdbceptionReporter-已关闭连接 我相信这与数据源配置属性有关。哪些grails设置可以帮助我刷新连接?我已经将
autoReconnect
poolled
设置为
true


我使用Grails2.3.3

数据源属性将通知数据库中间件服务器对数据库的期望。如果您的Oracle服务器与Grails希望使用的设置不一致,则有时会出现隐藏的错误消息

使用池连接告诉Oracle为应用程序保留大量打开的连接。如果应用程序运行1-2小时并持续处理,我预计池可能会耗尽有效连接。有关一些背景信息,请查看下面包含的链接

查看第4.4节,以查看高级数据源配置选项。是否定义了验证查询?(例如
从dual中选择1;

请查看这篇AskTom帖子,以获得对该问题的清晰解释


使用MySQL,但出现类似错误

下面的配置帮助我解决了问题

dataSource_staging {
            dbCreate = "none"
            pooled = true
            autoReconnect = true
            url = "jdbc:oracle:thin:@//my-box-oracle.com:1521/DB1"
            driverClassName = "oracle.jdbc.OracleDriver"
            username = "USER_1"
            password = "encryptedpassword"
            passwordEncryptionCodec = PropertiesCodec
            properties {
                validationQuery = "SELECT 1 FROM DUAL"
                testOnBorrow = true
                testWhileIdle = true
                testOnReturn = false
                timeBetweenEvictionRunsMillis = 5000
                minEvictableIdleTimeMillis = 60000
                maxAge = 10 * 60000
                maxWait = 10000
                maxIdle = 25
                maxActive = 50
                initialSize = 5
            }
        }

您确定要关注Grails而不是试图解决连接在1-2小时后消失的初始问题吗?@christopher In Grails land,是不是数据源属性决定了连接应该如何获取、保持多长时间、池等?我希望我的配置中缺少一些东西,可以帮助我刷新连接。这是我从应用程序中进行的只读Oracle查询。我理解,但没有Grails配置会说“两小时后,默认情况下终止此连接”。你必须具体说明这一点。因此,这意味着有一些潜在的原因,迫使断开连接。