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

首頁 > 數據庫 > Oracle > 正文

[oracle]使用Oracle10g jdbc 驅動中ConnectionCaching所產生的問題 的補充

2024-08-29 13:33:10
字體:
來源:轉載
供稿:網友
首先參照 [Oracle]使用Oracle10g jdbc 驅動中ConnectionCaching所產生的問題 這篇文章,在最后提出的解決方案是在 getConnection之前進行 無效Cache的監測,和更換。經過實際測試,發現refreshCache的時候,所占用的時間也是一筆不小的開銷,每次平均在0.2秒左右,對于一個Action處理中多次getconnction的處理來說,累計起來的時間能夠達到一秒之多。為了解決這個問題,存在兩種方案:
1. 對于存在dblink的plsql的action,getconnection之前調用refreshCache。 其他的PLSQL,getconnection之前不調用refreshCache
 優點:1。保證plsql的正常調用。不會出現異常。
             2。無dblink的plsql ,不需要調用refreshCache,節省了執行時間。
 缺點:1。需要對有dblink的plsql的action程序進行各個修改。
             2。即使PLSQL沒有修改也要調用refreshCache,還是消耗了不必要的時間。

2.在執行plsql后進行特定異常的判定處理,假如是plsql被廢棄的異常,調用一次refreshCache處理。
優點:1。保證dblink的plsql變更后只調用一次refreshCache處理,沒有消耗不必要的時間。
            2。此處通??梢赃M行共通的修改,即修改點一處。
缺點:1。plsql變更后,必定有一次錯誤被表示。
            2。plsql變更后,必定有一次錯誤被表示。而這個錯誤表示的回數上面不確定。因為使用了connectionpool,所以connection越多,這個錯誤表示的回數上面越不確定

建議解決方法:
   因為plsql的變更通常是開發和測試人員進行調試用,所以開發和測試人員更改完plsql后,馬上進行運行中系統這個PLSQL相關程序的執行,使自己看到這個message,即保證cache已經被refresh,這樣就不會影響客戶訪問正在運行的系統的功能。

參考代碼:
        try {
          PRoc.execute(); // proc is an instance of OracleCallableStatement
        } catch (SQLException e) {
          String em = e.getMessage();
          if(em != null && em.indexOf("ORA-04068") != -1 &&
             em.indexOf("ORA-04061") != -1 &&
             em.indexOf("ORA-04065") != -1 &&
             em.indexOf("ORA-06508") != -1 &&
             em.indexOf("ORA-06512") != -1) {
            ConnectionManager.refreshCache(); // refreshCache method is what the previous article
            throw e;
          }
       }總結:
  本問題的針對性比較強,對于release中的系統但還要進行機能變更的時候,所產生的特定問題的特定解決方法而已。 汗?。。。。。?!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新泰市| 奉化市| 临安市| 浦北县| 山东| 外汇| 邳州市| 黑龙江省| 绍兴市| 东源县| 华阴市| 株洲县| 屯留县| 兴文县| 邵东县| 和田市| 定远县| 特克斯县| 海门市| 东台市| 黔东| 克什克腾旗| 友谊县| 济宁市| 十堰市| 霍林郭勒市| 观塘区| 道孚县| 铁岭县| 永城市| 彰化县| 英吉沙县| 阳春市| 屏东县| 天等县| 馆陶县| 汉寿县| 郧西县| 舞阳县| 皮山县| 九台市|