You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Grails中配置Oracle连接的connection_property_default_lob_prefetch_size参数

配置失效原因

你之前的配置写法不符合Grails数据源的属性传递规则,dbProperties 不是连接池传递JDBC驱动属性的正确层级,同时参数名也需要匹配ojdbc11的官方定义。

正确配置方案

方案1:直接拼接在JDBC URL中(最稳妥,无兼容问题)

直接把参数追加到URL末尾,用&分隔多个参数:

dataSource:
    dbCreate: none
    url: jdbc:oracle:thin:@1.1.1.1:1521:mydb?defaultRowPrefetch=1000&defaultLobPrefetchSize=40000000
    # 其他原有properties配置保持不变即可
    properties:
        jmxEnabled: true
        initialSize: 3
        # ... 其余原有配置保持不变

方案2:通过连接池的connectionProperties配置(适用于默认Tomcat JDBC连接池)

正确的属性配置层级如下:

dataSource:
    dbCreate: none
    url: jdbc:oracle:thin:@1.1.1.1:1521:mydb
    properties:
        jmxEnabled: true
        initialSize: 3
        maxActive: 10
        minIdle: 3
        maxIdle: 7
        maxWait: 10000
        maxAge: 600000
        timeBetweenEvictionRunsMillis: 5000
        minEvictableIdleTimeMillis: 60000
        validationQuery: SELECT 1 from dual
        validationQueryTimeout: 15
        validationInterval: 15000
        testOnBorrow: true
        testWhileIdle: true
        testOnReturn: false
        jdbcInterceptors: ConnectionState
        defaultTransactionIsolation: 2 # TRANSACTION_READ_COMMITTED
        # 新增Oracle驱动属性配置
        connectionProperties: "defaultRowPrefetch=1000;defaultLobPrefetchSize=40000000"

方案3:HikariCP连接池适配配置

如果你使用的是HikariCP作为连接池,配置层级如下:

dataSource:
    dbCreate: none
    url: jdbc:oracle:thin:@1.1.1.1:1521:mydb
    type: com.zaxxer.hikari.HikariDataSource
    properties:
        # 原有连接池配置保持不变
        jmxEnabled: true
        initialSize: 3
        # ... 其余原有配置保持不变
        # 新增Oracle驱动属性配置
        dataSourceProperties:
            defaultRowPrefetch: 1000
            defaultLobPrefetchSize: 40000000

兜底方案:编程式配置

如果上述配置仍不生效,可以在grails-app/conf/spring/resources.groovy中手动注入属性:

import oracle.jdbc.OracleConnection
import org.apache.tomcat.jdbc.pool.BasicDataSource

beans = {
    dataSource(BasicDataSource) {
        // 原有数据源配置项保持不变
        def connProps = new Properties()
        connProps.setProperty(OracleConnection.CONNECTION_PROPERTY_DEFAULT_ROW_PREFETCH, "1000")
        connProps.setProperty(OracleConnection.CONNECTION_PROPERTY_DEFAULT_LOB_PREFETCH_SIZE, "40000000")
        connectionProperties = connProps
    }
}

验证说明

ojdbc11中OracleConnection.CONNECTION_PROPERTY_DEFAULT_LOB_PREFETCH_SIZE对应的实际属性名就是驼峰格式的defaultLobPrefetchSize,不需要用下划线格式,配置完成后重启服务再验证参数即可。

内容的提问来源于stack exchange,提问作者Larry G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 11:12:03