症狀:sql
測試部的同事在一臺PC上部署了一個DB2 v8.2,同時在這臺PC上部署了TOMCAT,上面跑WebService。數據庫
她修改了系統時間,改了N次,有將來的時間,也有過去的時間。函數
問題是在這以後,再使用Quest Central for DB2 v4.9訪問數據庫,就會出SQL0440N錯誤,而用DB2控制中心則正常。測試
解決:spa
見轉載的下文:紅字部分。操作系統
結論:ci
若是有修改系統時間的需求,那麼不要將數據庫和應用部署在一塊兒。v8
轉自:www.ibm.com部署
如何處理 DB2 使用過程當中遇到的SQL0440N 的錯誤? |
Document #: 1807544E21000
Body:
[標題] 如何處理 DB2 使用過程當中遇到的 SQL0440N 的錯誤?
環境: 產品:DB2 UDB 平臺:跨平臺 版本:v8,v7
問題描述:
在調用 DB2 所自帶的函數(如 SUM,MAX 等)時,有時會遇到 SQL0440N 的報錯信息,這裏介紹致使這一問題發生的一種緣由,及其解決問題的方法。
解答:
若是用戶在運行包含 DB2 自帶函數的 SQL 語句時,以下述使用了 ABS 函數的查詢語句:
db2 select prodname, abs(margin) from prodlist
遇到 SQL0440N 的錯誤:
SQL0440N 在函數路徑中找不到名稱爲 "ABS" 且帶兼容自變量的函數。 SQLSTATE=42884
使用命令:
db2 ? sql0440n
查看錯誤的解釋時,獲得以下得輸出內容:
SQL0440N 找不到具備兼容自變量的類型爲「<例程類型>」的名爲「<例程名>」的已受權例程。
解釋:
當數據庫管理器找不到可用來實現引用的例程時,若引用例程「 <例程名>」 ,則會發生此錯誤。引發此錯誤的緣由有下列幾個: : :
從輸出信息中對問題緣由的解釋能夠發現,致使這一問題的緣由有多種,當用戶將所列示的緣由逐條檢查後,卻發現這些都不是致使本身當前所遇到的 SQL0440N 錯誤的緣由,此時可考慮另一個 SQL0440N 解釋信息中未提到的一種狀況:即當函數的建立時間晚於系統的當前時間,一樣會出現該報錯。
爲檢查問題,用戶可利用下面的 SQL 語句對各函數建立的時間戳選項 CREATE_TIME 進行查詢:
db2 select funcschema, funcname, create_time from syscat.functions
若是存在某些函數的建立時間晚於當前系統時間的狀況,例如用戶誤置系統的時間爲過去某個時間,而使用的函數的建立時間又晚於這一時間,便會在運行相關 SQL 語句時遇到 SQL0440N 的報錯。
解決這一問題的方法很簡單,用戶只要從新正確地設置操做系統的當前時間,使它晚於 DB2 自帶函數的建立時間便可。產品 |