oracle error-1555,从另外一个角度看ORA-1555
十多年前,ORA-1555是一個十分經典的面試問題,超過60%的面試官都會像求職者提出這個問題。在10年前老白的《Oracle DBA 優化日記》中,也深入的討論了這個問題。傳統的對ORA-1555的看法是從快照過舊這個錯誤上引申開來的,重點還是關注UNDO空間,回滾段,UNDO_RETENTION,以及QUERY DURATION等因素,考慮從SQL優化,增加UNDO,優化RBS等角度去解決問題。隨著存儲設備越來越廉價,UNDO 不足的問題已經不存在了,我們也不需要像運行ORACLE 8i/9i時候一樣,為UNDO用20G好還是40g好去犯愁,一個幾百GB的UNDO也是很容易獲得的。最近這幾年里,大家對ORA-1555這個錯誤已經不大關注了,因為大家也發現絕大多數這個錯誤是因為不夠優化的SQL引起的,甚至很多企業的日志報警系統里,為了避免過多的報錯,把ORA-1555列在了排除列表里。前年,在我們開始開發日志深度分析工具的時候,ORA-1555這個經典的問題當然是不會錯過的,于是老白的團隊按照日志深度分析的架構重新梳理了這個經典錯誤號。這一梳理不要緊,老白發現以前對ORA-1555的認知完全是不足的。實際上ORA-1555錯誤并不全是因為快照過舊引起的,經過初步分析,我們至少可以把ORA-1555錯誤分為6大類:
第一類是UNDO與回滾段相關的;第二類是SQL執行計劃由于表分析數據不準等原因出現錯誤導致執行效率過低;第三類是開發商編寫的SQL質量太低;第四類是Bug 22241601導致的索引邏輯損壞,遇到這種情況,需要重建索引解決;第五類是Bug 8231583 導致的錯誤,必須重建UNDO表空間來解決;第六類是應用程序寫LOB字段出現問題,主要原因是LOB字段初始化代碼存在問題,需要開發商修改應用解決。大家也看出來了,不同的類別的錯誤,其處置方法是不一樣的,我們以前面對這個錯誤的時候只看到了其中的一面,而沒有看到其全貌。經過繼續梳理,我們發現ORA-1555錯誤的情況實際上更為復雜。
這張思維導圖也僅僅是列出了ORA-1555的常見情況,并沒有覆蓋所有的可能問題。從這里我們也看出,日志的分析實際上是一個十分復雜的工作。以前遇到一些未知的或者導致嚴重后果的錯誤的時候,我們往往會請專家來協助分析或者到MOS上去查找相關的資料。這種效率十分低下。通過日志深度分析工具來解決問題,可以幫我們解決一大部分的問題,當分析工具無法從已知診斷路徑中發現問題的時候,會被記錄下來,后續就需要專家介入,對此類未知問題進行分析,并優化診斷路徑。在這種復雜的分析場景中,目前十分熱的AI技術并沒有辦法發揮更大的作用,靠數據和算法無法解決深度推理的問題,這個也已經是業內的常識了。工具不能解決所有的問題,只有工具+人的生態才能不斷演進和積累知識,使工具越來越強大(我這里不敢說越來越智能,目前階段,運維工具的智能大多數還是來自于專家智能,而不是數據智能)。對日志問題的診斷路徑進行分類后,后續就可以提供更為強大的功能了。
針對某個日志報錯,自動分析工具可以生成分析報告,在報告中可以幫你列出和該日志報錯相關的后續診斷建議,以及已知的優化處置建議。似乎這一切很完美,不過還有一個問題,這些診斷路徑不是從天上掉下來的,需要大量的技術團隊去做分析與整理,這個工作必須是人工的,而且嚴重依賴于專家。能做這種工作的專家是稀缺資源,另外一點,很多這方面的專家并不愿意把自己腦子里的東西拿出來做成工具,和大家分享。于是這個工作想要大規模的推廣開來還是存在難度的。要解決這個問題,還是要走互聯網+的路子,建立一個更為廣泛的技術江湖,一方面有更多的用戶通過技術江湖結成聯盟,他們系統中發現的一些未被深度分析的錯誤信息能夠貢獻出來,把相關的錯誤信息與日志文件提交到社區,由社區的虛擬專家團隊去進行分析與處理,最終形成分析工具下發到社區成員。經過不斷的積累,日志分析知識點工具的積累會良性發展,這個工具也能夠越來越強大了。老白希望這樣的技術社區能夠早點建立起來,屆時,老白的團隊也十分愿意成為社區的用戶和知識貢獻者。
總結
以上是生活随笔為你收集整理的oracle error-1555,从另外一个角度看ORA-1555的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php检测网址是否有效,php 检测因特
- 下一篇: Linux怎么对当前目录提权,linux