ora-00600 kpp_concatq:2错误解决方法

时间:2024-03-23 22:16:27

昨晚同事遇到如下问题,经查与下面的场景案例类似解决方法http://blog.sina.com.cn/s/blog_4aedf6370102wg6c.html

ora-00600 kpp_concatq:2错误解决方法

问题描述:

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,测试,成功。
  问题解决了,但原理仍然不太清楚,以后待续。