ITPUB SQL大賽之BUG(四)

yangtingkun發表於2011-04-03

由於SQL大賽題目相對比較困難,不但需要使用大量的特性,且SQL實現十分複雜,一般執行時間也會比較長,這些因素導致碰到bug的機率直線上升。這裡介紹SQL大賽期間碰到的幾個bug

這篇描述碰到的ORA-7445(kditpin)錯誤。

ITPUB SQL大賽之BUG(一):http://yangtingkun.itpub.net/post/468/515815

ITPUB SQL大賽之BUG(二):http://yangtingkun.itpub.net/post/468/515926

ITPUB SQL大賽之BUG(三):http://yangtingkun.itpub.net/post/468/515982

 這個問題其實很簡單,基本上看得錯誤資訊就可以判斷問題所在了:

Tue Mar 15 00:51:47 2011
ORA-1652: unable to extend temp segment by 64 in tablespace                 TEMP
Exception [type: SIGSEGV, Address not mapped to object] [ADDR:0x0] [PC:0x4BEB610, kditpin()+54] [flags: 0x0, count: 1]
Errors in file /data/oracle/diag/rdbms/test112/test112/trace/test112_ora_19832.trc  (incident=25579):
ORA-07445:
出現異常錯誤: 核心轉儲 [kditpin()+54] [SIGSEGV] [ADDR:0x0] [PC:0x4BEB610] [Address not mapped to object] []
ORA-01652:
無法透過 64 (在表空間 TEMP ) 擴充套件 temp
Incident details in: /data/oracle/diag/rdbms/test112/test112/incident/incdir_25579/test112_ora_19832_i25579.trc
Tue Mar 15 00:52:03 2011
Trace dumping is performing id=[cdmp_20110315005203]
Tue Mar 15 00:52:06 2011
Sweep [inc][25579]: completed
Sweep [inc2][25579]: completed

當時在測試SQL大賽第二期第二題M=3N=7時,SQL的執行時間,執行了一段時間後,前臺出現了ORA-3113錯誤。一般而言,前臺出現ORA-3113,後臺多半是ORA-600ORA-7445錯誤,檢查alert日誌,發現了上面的錯誤。

其實已經沒有必要看詳細的錯誤資訊了,導致錯誤的原因很簡單,臨時表空間被佔滿,且資料檔案不是自動擴充套件的,導致了ORA-1652錯誤。

以前在執行SQL的時候也碰到過ORA-1652錯誤,不過這裡的問題是丟擲了ORA-7445(KDITPIN)錯誤。

查詢了以下metalink,並沒有找到接近的描述,這種由常規錯誤導致的ORA-7445ORA-600一般都有一定的偶然性,很難重現。不過這個問題其實很容易接近,要不然繼續加到臨時表空間資料檔案的大小,要不然去進一步最佳化SQL語句,減少對臨時表空間的佔用。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-691626/,如需轉載,請註明出處,否則將追究法律責任。

相關文章