专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »数据库 » oraclejdbc驱动:[oracle]使用Oracle10g jdbc 驱动中Connecti »正文

oraclejdbc驱动:[oracle]使用Oracle10g jdbc 驱动中Connecti

来源: 发布时间:星期三, 2009年1月7日 浏览:2次 评论:0
="t18"> 隐含连接缓存Cache
在Oracle 数据库10g 的前JDBC 驱动可提供连接缓存Cache支持然而
在可扩展性、易用性和可治理性方面存在诸多限制例如所有对象均在
数据库中并作为同用户进行鉴权而没有清除失效连接机制;
此外由于所有对话均属于同数据库并作为同用户进行鉴权因此
根本无法存储作为其它用户进行鉴权连接Pre-10g JDBC 驱动缓存Cache
治理不答应连接缓存Cache在可能失效时调整大小或刷新;不支持搜索连接或收
回所放弃连接这些缺点促使了对种更完善新型连接缓存Cache机制“隐含
连接缓存Cache”需求
隐含连接缓存Cache可提供丰富特性包括:透明或隐含访问连接缓存Cache支持
存储任何经过鉴权连接能够刷新或重复利用来自缓存Cache失效连接
持基于用户定义属性连接检索、基于属性和权重连接检索透明访问连接缓存Cache
通过缺省设置DataSources 答应获得直接到数据库物理连接利用“隐
含连接缓存Cache“通过简单将DataSource 属性ConnectionCachingEnabled
指向true便可从连接缓存Cache获得连接始终使用同标准getConnection
API这极大简化了DataSource 和连接缓存Cache访问其它所有事项均可选
并可根据需求来执行例如可以选定组定义缓存Cache行为连接缓存Cache属性
而不必使用缺省属性// Example to show binding of OracleDataSource to JNDI
// with relevant cache properties _disibledevent= ods.getConnection;
conn.close; // connection to the cache
感谢Oracle10g jdbc driver带来令人激动人心特性但是在实际使用过程中出现了下列问题:
问题描述: 在使用了ConnectionCachingEnabled(True); 语句后我们发现当在Cache模式运行下
假如这个时候对数据库中PLSQL内容进行更改后运行访问这个PLSQL会报出如下:
(CSDN如何上传图片fa)依次为ORA-06512ORA-0650ORA-04065ORA-04061ORA-04068最后是Package状态已经被废弃经过调查发现
1假如不使用Cache不会出现这个问题
2使用Cache这个问题会在区别server上面在区别段时间间隔内自动消失
3假如不使用Cache也无法使用Oracle提供连接池功能如最小连接数化时所建立连接数等
4不是所有PLSQL内容变更后都出现这个问题只有PLSQL中包含有DB LINKPLSQL才存在此问题解决篇:
根据2使用Cache这个问题会在区别server上面在区别段时间间隔内自动消失
这个特性从Cache设定参数上进行测试终于发现 解决思路方法
解决思路方法:
这段是Oracle官方文档
Connection Recycling Support
Over a period of time, connection cache accumulates stale connections. There are two modes for recycling or refreshing stale connections in the cache: REFRESH_INVALID_CONNECTIONS and REFRESH_ALL_CONNECTIONS.
• With REFRESH_INVALID_CONNECTIONS each PooledConnection in the cache is checked3; invalid, the connection’s resources are removed and replaced with a PooledConnection.
• WIth REFRESH_ALL_CONNECTIONS, all the available connections in the cache are closed and replaced with valid physical connections.
3 The validity test is as simple as: select 1 from dual;设定:
在从data source中取得db连接的前如下这段话即可
OracleConnectionCacheManager.refreshCache(cache名,oracle.jdbc.pool.OracleConnectionCacheManager.REFRESH_INVALID_CONNECTIONS);整理总结: 新技术伴随着新风险 莫名其妙问题虽然解决了但是 为什么是DBLINK这其中具体产生原因又是什么呢?

相关文章

读者评论

  • 共0条 分0页

发表评论

  • 昵称:
  • 内容: