昨晚同事遇到如下问题,经查与下面的场景案例类似解决方法http://blog.sina.com.cn/s/blog_4aedf6370102wg6c.html
问题描述:
ORA-00600: 内部错误代码, 参数: [kpp_concatq:2], [4], [3], [0], [], [], [], [], [], [], [], []
00600. 00000 - "internal error code, arguments: [%s], [%s], [%s], [%s], [%s], [%s], [%s], [%s]"
*Cause: This is the generic internal error number for Oracle program
exceptions. This indicates that a process has encountered an
exceptional condition.
*Action: Report as a bug - the first argument is the internal error number
附上具体语句:
SELECT distinct p.*, '协议价' as TarGroupName,0 as TarGroupID,sp.PRICE as Price ,1 as PriceType
from PD_PRODUCTPRICE_SP sp,PD_PRODUCTS p,PD_CHIPCOST cc,PD_PRODUCT2CHIP p2c ,PD_CHIP cp, SYS_CONTACT_POINT scp
where p.PRODUCTTYPE=1 and cc.ISENABLED = 1 and sp.ORGPARTYID = 'f60d6714-5953-4325-9a9e-225c3a2b8dca'
and sp.ISENABLED = 1 and p.SEQ_PRODUCTID = p2c.PRODUCTID and sp.PRODUCTID = p.SEQ_PRODUCTID
and cc.CHIPID=cp.SEQ_CHIPID and cp.CONTACTPOINTID=scp.ID and cc.CHIPID = p2c.CHIPID
and to_char(cc.STARTDATE,'yyyymmddhh24mi') <= to_char(sysdate,'yyyymmddhh24mi')
and to_char(cc.ENDDATE,'yyyymmddhh24mi') >=to_char(sysdate,'yyyymmddhh24mi')
and to_char(p.STARTDATE,'yyyymmddhh24mi') <= to_char(sysdate,'yyyymmddhh24mi')
and to_char(p.ENDDATE,'yyyymmddhh24mi') >=to_char(sysdate,'yyyymmddhh24mi') and p.ISENABLED = 1
and sp.PRICE >= 0 AND to_char(sp.STARTDATE,'yyyymmddhh24mi') <= to_char(sysdate,'yyyymmddhh24mi')
and to_char(sp.ENDDATE,'yyyymmddhh24mi') >=to_char(sysdate,'yyyymmddhh24mi')
and p.CHANNELTYPE in (0,1)
and (p.AREAS is null or instr( p.AREAS,'T3D')>0 ) and p.AIRPORT = 'PEK' AND ( p.TERMINAL is null or instr(upper(p.TERMINAL),'T3')>0 )
AND scp.FLYSTAGE= '出发'
问题跟踪:
逐步放开语句测试,最后发现是 AND scp.FLYSTAGE= '出发' 造成的
百度问题,有的说是11g版本BUG,但当前版本是12,排除;
还有的文章提到字段类型为nvarchar2的时候,b='a'会自动转化为b=n'a',尝试改为 AND scp.FLYSTAGE= n'出发',仍报错,排除;
最后一篇文章提到,建议把nvarchar2修改为varchar2,说可能是字段类型和字符集有问题,尝试将nvarchar2修改为varchar2,测试,成功。
问题解决了,但原理仍然不太清楚,以后待续。