在昨晚自動化測試過程中,我的二十個工作線程中有一個線程被炸掉;該應用程序正在嘗試INSERT。 Springframework報告ORA-00942:表或視圖不存在。故障排除ORA-00942
通過企業管理器連接到數據庫(11.1.0.6.0),我拉起一個SQL工作表並查詢表,發現(a)該表現在存在(b)應該插入的行(c)先前由該線程插入的行存在(d)該表具有時間前後的行。
對於很少經驗的Oracle用戶,我如何驗證起源於該數據庫服務器的錯誤,並從那裏我怎麼走錯誤回到根本原因是什麼?
在昨晚自動化測試過程中,我的二十個工作線程中有一個線程被炸掉;該應用程序正在嘗試INSERT。 Springframework報告ORA-00942:表或視圖不存在。故障排除ORA-00942
通過企業管理器連接到數據庫(11.1.0.6.0),我拉起一個SQL工作表並查詢表,發現(a)該表現在存在(b)應該插入的行(c)先前由該線程插入的行存在(d)該表具有時間前後的行。
對於很少經驗的Oracle用戶,我如何驗證起源於該數據庫服務器的錯誤,並從那裏我怎麼走錯誤回到根本原因是什麼?
我將開始接近到數據庫成爲可能,以確認哪些SQL執行,提交,回滾等數據庫本身。我會設置TKPROF(查看文檔,或訪問Tom Kyte's site以獲取更多信息),並查看您的應用程序實際執行的內容。這至少可以幫助你看到你期望執行的是否實際上「到達」,因爲它應該。
一種ORA-00942將發生如果表是「不可見的」調用程序即,如果權限是不夠的。
戴維K說,該表可能已經存在,但成爲「看不見」的過程。
因爲那句「昨夜」的,我的思想會導致可能存在夜間處理過程,如備份或清理過程中,這引起了表脫機。
一個有趣的想法,但我相信被點(d)消除。失敗周圍的窗口很短(大約幾秒鐘)。實際上,我得到了一個具有相同時間戳的行,以便不合格的插入應該由另一個線程提交。 這就是說,如果問題是表變得不可見,我將如何追查根本原因? – VoiceOfUnreason 2009-10-23 13:58:30
很難說不知道你的環境。在我的辦公室裏,我會與DBA或系統管理員通話,看看當時是否有任何流程正常運行。同時詢問是否有任何數據庫日誌。 – Prof 2009-10-26 14:17:08
你能提供此附加信息:1.由表所有者或另一個模式是有特權的INSERT進行插入? 2.如果另一個模式被插入到表中,表的引用是否被所有者限定,通過私有同義詞訪問,還是通過公共同義詞訪問? 3.此數據庫是否有包含同名表的其他模式?當滿足某些條件時,甲骨文遇到了問題 - 不知道該錯誤是否仍然存在於11g中。 – dpbradley 2009-10-22 20:27:24