如何在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
相关产品推荐
相关产品推荐

