如何查詢ORA-07445 ORA-00600錯誤相關資訊
ORA-07445和ORA-00600是系統內部錯誤,一般是由於BUG引起的,要解決或者避免這些錯誤一般需要到metalink上查。metalink甚至專門推出了一個工具用於這兩個錯誤的查詢。
與普通錯誤不同的是,ORA-07445和ORA-00600是一系列錯誤的總稱,引起錯誤的原因可能成千上萬個,如何快速、準確地找出到錯誤的原因是解決這類問題的難點。
出現ORA-07445或ORA-00600錯誤時,一般都會產生一個trace檔案,這個檔案的路徑和名稱可以在alert檔案中找到。
這篇文章主要是談談如何在trace檔案找找出關鍵資訊。
1、ORA-07445
找出ORA-007445最關鍵是找出出錯的函式名(這裡的函式是指開發ORALCE的函式),然後根據函式名搜尋錯誤原因及解決方法。
ORA-07445後一般跟著若干個由[]括起來的字串,通常第一個被[]括起來的字串就是我們需要的函式名。
ORA-07445的報錯一般有兩種:
1)ORA-07445: exception encountered: core dump [lnxmin()+252] [SIGSEGV] [Address not mapped to object] [0x000000002] [] []
這種情況很簡單,第一個被[]括起來的字串是lnxmin,這就是引發錯誤的函式名,我們根據這個資訊去查就可以了。
2)ORA-07445: exception encountered: core dump [0000000100E84B7C] [SIGSEGV] [Address not mapped to object] [0x0000004F0] [] []
這種情況比較麻煩,因為oracle並沒有告訴我們出錯的函式名,0000000100E84B7C可能只是一個地址,無法根據這個來作為關鍵字進行查詢。
這時我們就要從trace檔案著手了。在trace檔案內容的前部分中的Call Stack Trace部分可以發現有用資訊。
對比一下多個trace檔案,可以發現在這種情況下Call Stack Trace一般都包含類似下面的內容:
----- Call Stack Trace -----
calling call entry argument values in hex
location type point (? means dubious value)
-------------------- -------- -------------------- ----------------------------
ksedmp()+328 CALL ksedst()+0 FFFFFFFF7FFF3BD0 ?
000000000 ? 000000000 ?
00000003E ?
FFFFFFFF7FFF4468 ?
1031D56C8 ?
ssexhd()+604 CALL ksedmp()+0 000000000 ? 000103400 ?
0001035D9 ? 000102C00 ?
1035D9000 ? 1035D9C28 ?
sigacthandler()+44 PTR_CALL 0000000000000000 1035E1000 ?
FFFFFFFF7FFF5400 ?
000000000 ? 000000001 ?
1035DEDD8 ? 00000000B ?
qsmkzii_init_qsmksi PTR_CALL 0000000000000000 00000000B ?
nline()+624 FFFFFFFF7FFF5400 ?
FFFFFFFF7FFF5120 ?
00000000B ? 00038001C ?
1035DC458 ?
qsmkzss_setup_summa CALL qsmkzii_init_qsmksi FFFFFFFF7CD12908 ?
ry()+480 nline()+0 000103000 ?
FFFFFFFF7CD93650 ?
000000000 ?
FFFFFFFF7CD93650 ?
103258100 ?
......
其中裡面的ksedmp、ssexhd、sigacthandler這三個函式在每一個ORA-07445 [0000000100E84B7C]類似的trace檔案都存在,這是進行oracle異常處理的,一般不用管。
stack的第一列的第四行的資訊就是我們需要的資訊:qsmkzii_init_qsmksinline,這個就是出錯的函式名。
在metalink根據這個函式名去查詢,一般就可以知道錯誤的原因和是否有合適的方面來解決、避免這個錯誤。
如果根據第四行的函式名得不到有用的資訊,可以嘗試一下第五行的資訊作為函式名,如果還是不能查到有用的資訊,則可以認為metalink上沒有這個錯誤的資訊。
2、ORA-00600
查詢ORA-00600的關鍵資訊比ORA-07445稍微簡單,它相當於ORA-07445的第一種情況。
ORA-00600後一般跟著若干個由[]括起來的字串,通常第一個被[]括起來的字串就是我們需要的引數。
ORA-00600的報錯資訊在從alert檔案和trace檔案都存在,不過為了得到更多的資訊,建議看trace檔案。
一個ORA-00600的trace檔案類似下面:
*** SESSION ID:(22.3813) 2004-10-26 09:57:13.167
*** 2004-10-26 09:57:13.167
ksedmp: internal or fatal error
ORA-00600: internal error code, arguments: [ttcgcshnd-1], [0], [], [], [], [], [], []
Current SQL statement for this session:
SELECT VALUE FROM NLS_INSTANCE_PARAMETERS WHERE PARAMETER ='NLS_DATE_FORMAT'
----- Call Stack Trace -----
calling call entry argument values in hex
location type point (? means dubious value)
-------------------- -------- -------------------- ----------------------------
ksedmp()+328 CALL ksedst()+0 FFFFFFFF7FFF9660 ?
000000000 ? 000000000 ?
00000003E ?
FFFFFFFF7FFF9EF8 ?
1031C9458 ?
kgerinv()+184 PTR_CALL 0000000000000000 000000000 ? 000103400 ?
0001035CD ? 000102C00 ?
1035CD000 ? 1035CD328 ?
kgeasnmierr()+28 CALL kgerinv()+0 1035CD588 ? 1036EDE38 ?
0000013C8 ? 000000001 ?
1035CF694 ? 1035CE958 ?
ttcgcshnd()+248 CALL kgeasnmierr()+0 1035CD588 ? 1036EDE38 ?
1033A2758 ? 000000001 ?
000000000 ? 000000000 ?
ttcc2u()+784 CALL ttcgcshnd()+0 1035CD588 ? 102DA4880 ?
上面的資訊中,ttcgcshnd-1就是我們要找的第一個引數,也是查詢的關鍵字。
3、trace中其他有用的資訊
在ORA-00600和ORA-07445的trace檔案都包含了一些其他的有用資訊。
在trace檔案的PROCESS STATE部分,可以檢視出錯時SESSION的資訊,包含主機名、那個使用者執行的、用什麼工具執行的等。
這些資訊可能不太好找,查詢方法是:從trace檔案中找到PROCESS STATE,然後從PROCESS STATE往下找第一個"session"(關鍵字)出現的地方,這部分資訊就包含我們需要的這些重要資訊。
按照關鍵字"HOST"查可以得到客戶端的IP
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/231499/viewspace-63874/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 日誌查詢錯誤
- MySQL 相關子查詢MySql
- CURL查詢ES相關
- delphi 查詢av錯誤地址
- kratos相關錯誤彙總
- 什麼是SQL 語句中相關子查詢與非相關子查詢SQL
- MySQL 之慢查詢相關操作MySql
- 如何修復 SAP UI5 aggregation with cardinality 0..1 相關的錯誤訊息UI
- 車輛資訊查詢 - 高效快捷地獲取車輛相關資訊的利器
- Linux 查詢 日誌 相關命令Linux
- sql-server相關子查詢SQLServer
- Git相關 | Git 常見的錯誤Git
- [20181106]模擬ora-00600[4194]錯誤.txt
- [20181204]模擬ora-00600[4194]錯誤.txt
- [20181204]模擬ora-00600[4193]錯誤.txt
- 如何處理 Spring Boot 中與快取相關的錯誤?Spring Boot快取
- mysql慢查詢和錯誤日誌分析MySql
- JavaScript錯誤資訊JavaScript
- 華納雲:linux系統中如何查詢oracle錯誤日誌LinuxOracle
- ef8 Contains 查詢條件 報錯 $ 附近錯誤AI
- MySQL慢查詢日誌相關設定MySql
- PostgreSQL並行查詢相關配置引數SQL並行
- 如何查詢和關閉Safari的音訊聲音音訊
- 如何關閉PHP錯誤提示PHP
- 如何查詢GBase資料庫中表的comment資訊資料庫
- ora-00600兩個子錯誤733, 6006解決
- ORA-00600: 內部錯誤程式碼, 引數: [19004]
- Request 驗證錯誤沒有返回錯誤資訊?
- ORA-07445: 出現異常錯誤: 核心轉儲 [kkqstcrf()+1355]CRF
- C++編譯錯誤的正確查詢方式C++編譯
- 關於Solidity指令碼相關環境配置及指令碼資料的查詢Solid指令碼
- cpp查錯誤
- 20240719資料庫關聯查詢、條件查詢資料庫
- 關於laravel Symfony\Component\HttpKerenl\Exception\Method...錯誤資訊LaravelHTTPException
- jpa 聯合查詢資料,查詢使用者資訊與部門資訊
- 域名查詢資訊怎麼操作?可以查詢哪些資訊?(中科三方)
- 域名資訊查詢怎麼操作?Godaddy的whois域名資訊查詢在哪裡?Go
- 多個異構資料庫如何關聯查詢資料庫