国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 數(shù)據(jù)庫(kù) > Oracle > 正文

[oracle]使用Oracle10g jdbc 驅(qū)動(dòng)中ConnectionCaching所產(chǎn)生的問(wèn)題

2024-08-29 13:33:09
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
隱含連接緩存
在Oracle 數(shù)據(jù)庫(kù)10g 之前,JDBC 驅(qū)動(dòng)程序可提供連接緩存支持,然而
在可擴(kuò)展性、易用性和可治理性方面存在諸多限制。例如,所有對(duì)象均在
同一數(shù)據(jù)庫(kù)中,并作為同一用戶進(jìn)行鑒權(quán),而沒(méi)有清除失效連接的機(jī)制;
此外,由于所有對(duì)話均屬于同一數(shù)據(jù)庫(kù),并作為同一用戶進(jìn)行鑒權(quán),因此
根本無(wú)法存儲(chǔ)作為其它用戶進(jìn)行鑒權(quán)的連接。PRe-10g JDBC 驅(qū)動(dòng)程序緩存
治理不答應(yīng)連接緩存在可能失效時(shí)調(diào)整大小或刷新;不支持搜索連接或收
回所放棄的連接。這些缺點(diǎn)促使了對(duì)一種更完善的新型連接緩存機(jī)制“隱含
連接緩存”的需求。
隱含連接緩存可提供豐富的特性,包括:透明或隱含訪問(wèn)連接緩存,支持
存儲(chǔ)任何經(jīng)過(guò)鑒權(quán)的連接,能夠刷新或重復(fù)利用來(lái)自緩存的失效連接,支
持基于用戶定義的屬性的連接檢索、基于屬性和權(quán)重的連接檢索。透明訪問(wèn)連接緩存
通過(guò)缺省設(shè)置,DataSources 答應(yīng)獲得直接到數(shù)據(jù)庫(kù)的物理連接。利用“隱
含連接緩存“,通過(guò)簡(jiǎn)單將DataSource 屬性ConnectionCachingEnabled
指向true,便可從連接緩存獲得連接,始終使用同一標(biāo)準(zhǔn)getConnection()
API。這極大簡(jiǎn)化了DataSource 和連接緩存訪問(wèn)。其它所有事項(xiàng)均可選,
并可根據(jù)需求來(lái)執(zhí)行。例如,可以選定一組定義緩存行為的連接緩存屬性,
而不必使用缺省屬性。// Example to show binding of OracleDataSource to JNDI
// with relevant cache properties set on the DataSource.

// Set DataSource properties
ods.setUser(“Scott”);

ods.setConnectionCachingEnabled(True);
ods.setConnectionCacheName(“MyCache”);
ods.setConnectionCacheProperties(cp);
ctx.bind(“MyDS”, ods);

ods =(OracleDataSource) ctx. lookup(“MyDS”); // lookup cache DataSource
//Transparent creation and retrieval of connection(s) from “MyCache”
conn = ods.getConnection();
conn.close(); // return connection to the cache
感謝Oracle10g jdbc driver帶來(lái)的令人激動(dòng)人心的特性,但是在實(shí)際的使用過(guò)程中,出現(xiàn)了下列問(wèn)題:
問(wèn)題描述: 在使用了setConnectionCachingEnabled(True); 語(yǔ)句后,我們發(fā)現(xiàn)當(dāng)程序在Cache模式運(yùn)行下
,假如這個(gè)時(shí)候?qū)?shù)據(jù)庫(kù)中的PLSQL的內(nèi)容進(jìn)行更改后,運(yùn)行程序訪問(wèn)這個(gè)PLSQL的話,會(huì)報(bào)出如下錯(cuò)誤:
(CSDN如何上傳圖片,faint)依次為ORA-06512,ORA-0650,ORA-04065,ORA-04061,ORA-04068,最后一個(gè)錯(cuò)誤是Package的狀態(tài)已經(jīng)被廢棄。經(jīng)過(guò)調(diào)查,發(fā)現(xiàn)
1。假如不使用Cache,不會(huì)出現(xiàn)這個(gè)問(wèn)題。
2。使用Cache,這個(gè)問(wèn)題會(huì)在不同的server上面在不同的一段時(shí)間間隔內(nèi)自動(dòng)消失。
3。假如不使用Cache,也無(wú)法使用Oracle提供的連接池功能。如最小的連接數(shù),初始化時(shí)所建立的連接數(shù)等。
4。不是所有的PLSQL的內(nèi)容變更后都出現(xiàn)這個(gè)問(wèn)題,只有PLSQL中包含有DB LINK的PLSQL才存在此問(wèn)題。解決篇
根據(jù)2。使用Cache,這個(gè)問(wèn)題會(huì)在不同的server上面在不同的一段時(shí)間間隔內(nèi)自動(dòng)消失。
這個(gè)特性,從Cache的設(shè)定參數(shù)上進(jìn)行測(cè)試,終于發(fā)現(xiàn) 解決方法。
解決方法:
   這段是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; if invalid, the connection’s resources are removed and replaced with a new PooledConnection.
• WIth REFRESH_ALL_CONNECTIONS, all the available connections in the cache are closed and replaced with new valid physical connections.
3 The validity test is as simple as: select 1 from dual;程序中的設(shè)定
在從data source中取得db連接之前調(diào)用如下這段話即可
  OracleConnectionCacheManager.refreshCache(cache名,oracle.jdbc.pool.OracleConnectionCacheManager.REFRESH_INVALID_CONNECTIONS);總結(jié): 新技術(shù)伴隨著新風(fēng)險(xiǎn), 莫名其妙的問(wèn)題雖然解決了,但是 為什么是DBLINK,這其中的具體的產(chǎn)生原因又是什么呢?

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 湖口县| 铅山县| 兴城市| 东辽县| 赤城县| 金阳县| 黑龙江省| 岢岚县| 鹤山市| 甘南县| 中方县| 江孜县| 卢龙县| 鄂托克前旗| 威海市| 蓬溪县| 黄骅市| 怀来县| 类乌齐县| 横山县| 株洲市| 永春县| 兴和县| 潜江市| 焦作市| 佳木斯市| 昌图县| 石家庄市| 元阳县| 石楼县| 闻喜县| 无棣县| 江川县| 桃园县| 翼城县| 堆龙德庆县| 游戏| 伊吾县| 上杭县| 云浮市| 怀安县|