从11.2.0.3升级到11.2.0.4,并打psu 160917后,执行以下sql,
SELECT MAX(a.零售价) AS 零售价, SUM(a.数量) AS 库存数量
FROM(SELECT drugs_id 项目id, purchase_price 进价, quantity 数量, retail_price 零售价, stock_id 入库明细id, 'ed2f548c-336d-4239-9f7e-3c3e69acec23' 库房id
FROM TABLE(CASE WHEN '5' IN (1,2,3) THEN F_insert_t_drugs_stock('873f3ce5-9f59-3e60-e040-a8c0c90a60dd',0, 'ed2f548c-336d-4239-9f7e-3c3e69acec23',0, 0,1)
WHEN '5' = 4 THEN F_equip_interface('873f3ce5-9f59-3e60-e040-a8c0c90a60dd',0, 'ed2f548c-336d-4239-9f7e-3c3e69acec23',null)
END)
) a
将报 ora-03113的错误,在服务器报警日志中,有以下错误信息:
Error: ORA-07445 [qmxtrRewCaseWhen()+75] [SIGSEGV] [ADDR:0x0] [PC:0x5213C6D] [Address not mapped to object]
错误堆栈中有以下信息:
Error Stack: ORA-7445[qmxtrRewCaseWhen]
Main Stack:
qmxtrRewCaseWhen <- kokbxifv <- kokbXformCollItersInQbc <- kkqvmTrMrg <- kkqvmdrv2
<- kkqvmdrv <- kkqdrv <- opiSem <- opiDeferredSem <- opitca <- kksFullTypeCheck <- rpiswu2
<- kksSetBindType <- kksfbc <- opiexe <- kpoal8 <- opiodr <- ttcpip <- opitsk <- opiino <- opiodr
<- opidrv <- sou2o <- opimai_real <- ssthrdmain <- main
该错误只有在from子句的结果返回没有记录时,才会抱错,如果有记录,就不会抱错.
SELECT drugs_id 项目id, purchase_price 进价,quantity 数量,retail_price 零售价,stock_id 入库明细id,'ed2f548c-336d-4239-9f7e-3c3e69acec23' 库房id
FROM TABLE(CASE WHEN '5' IN (1,2,3) THEN x
WHEN '5' = 4 THEN y)
END)
已经确认该问题是11.2.0.4的一个 bug,bug号为:20114174
该补丁为在线补丁.可以不用停数据库服务.如果是rac,只需要在一个节点打,自动会传到其他节点去.
opatch apply online -connectString <SID_Node1>:<Username_Node1>:<Password_Node1>:<Node1_Name>,<SID_Node2>:<Username_Node2>:<Password_Node2>:<Node2_Name
比如:
opatch apply online -connectString orcl1:sys:oracle:rac01,orcl2:sys:oracle:rac02
|