資料庫:Oracle Database 11g Release 11.1.0.7.0
場景:一個很長的SQL,做跨執行個體查詢,使用了with語句,每個with語句中的查詢單獨執行沒有任何問題,但是整體執行就報ORA-03113錯誤,并且alert日志中出現錯誤:
Exception [type: SIGSEGV, Address not mapped to object] [ADDR:0x4D4245522C3A2250] [PC:0x4D4245522C3A2250, {empty}]
Errors in file /oradata/diag/rdbms/orcl/orcl/trace/orcl_ora_3604988.trc (incident=96599):ORA-07445: exception encountered: core dump [PC:0x4D4245522C3A2250] [SIGSEGV] [ADDR:0x4D4245522C3A2250] [PC:0x4D4245522C3A2250] [Address not mapped to object] []
Incident details in: /oradata/diag/rdbms/orcl/orcl/incident/incdir_96599/orcl_ora_3604988_i96599.trc
網上關于這個錯誤的說法很多(搜尋:ORA-03113 ORA-07445),有說這是oracle的一個bug,需要打更新檔。但後面我發現去掉這個大SQL中有一個計算方法很複雜并且沒有定義别名的字段(sum中用了decode、case when導緻的)之後,查詢可以成功執行;以此,發現如果給這個字段加上别名之後,也不報錯了,是以估計是這個原因導緻的。
希望對大家有用!