1樓:網友
檢視 看裡面的配置資訊,和網上google出來的比較下。
oracle 17410什麼錯
2樓:龍氏風采
應該是資料庫連線不正常導致的,排查原因:
網路問題,內網之中訪問,無防火牆,不是網路原因。
網上說是oracle 版本的bug,經分析,oracle相關的bug不會影響到現在的oracle版本,不是版本bug原因。
jdbc版本原因,可能會是該原因導致的,遂將jdbc的版本公升級到和oracle版本相符的版本,但是問題依然存在。
在絕望是時候突然想到,生產的oracle和測試的oracle唯一的區別是:生產的oracle對長期閒置的資料庫連線會自動斷開,而我們系統使用的資料庫連線池是apache的dbcp的basicdatasource連線池。
於是就在本地的oracle中修改idle_time引數為一分鐘,測試,果然出現了同樣的問題,問題的根源找到,但是如何解決呢?
現在問題是:oracle將資料庫連線斷開了,但是連線池卻認為該連線是可以用的,就將該連線分配給了應用程式使用,連線池和應用程式在分配和使用該連線之前沒有校驗資料庫連線的可用性。
檢視dbcp的文件和原始碼,發現有這4個屬性可以用:
validationquery屬性,將從連線池中獲取的資料庫連線返回給呼叫者之前,通過這個sql查詢判斷其有效性, 如果設定,這個查詢sql必須至少有一條資料 ,可將該屬性設為select 1 from dual
testonborrow屬性,確定從連線池中獲取的物件是否有效,如果無效從連線池移除,然後嘗試下乙個物件,這個屬性預設為true,可以不設定。
testonreturn屬性,放回連線池之前判斷物件是否有效,這個屬性預設為false,建議設為true
testwhileidle屬性,通過空閒物件驅逐器判斷物件是否有效,如果無效從連線池移除,預設為false。
至此,增加這些屬性之後,連線池的配置如下。
falseselect 1 from dual
truetrue
true在生產上測試,問題得到解決。
oracle怎麼檢視例項名,什麼是oracle例項,寫出在oracle如何查詢例項名的sql語句
方法有很多種,一般用system使用者登入。方法一 select name from v database 結果 方法二 select instance name from v instance 結果 方法三 在plsql的命令視窗下執行 show parameter instance結果 sele...
jdbc連線oracle錯誤,jdbc連線oracle錯誤
是不是監聽服務沒有開啟啊?開啟執行視窗輸入services.msc查詢oracle開頭的服務將其開啟 需要oracle的資料庫驅動。他說找不到oracle.jdbc.driver.oracledriver 這個類。應該是你的驅動包沒有導進去。如果需要的話。我傳給你哈。是資料的sid和你連線字串中的s...
請問一下的oracle字元函式lpad怎麼解釋
將左邊的字串填充一些特定的字元 其語法格式如下 lpad string1,padded length,pad string 其中string1是需要貼上字元的字串 padded length是返回的字串的數量,如果這個數量比原字串的長度要短,lpad函式將會把字串擷取成padded length p...