2017-7-10记录一个故障问题

来源:互联网 发布:软件项目维护费用 编辑:程序博客网 时间:2024/05/21 09:02

最近几天邮件客服时不时的报给我一个邮件不能回复的故障,查看了日志情况如下:

--- The error occurred while applying a parameter map.  --- Check the P_A_KEYWORD_abatorgenerated_selectKeywords-InlineParameterMap.  --- Check the statement (query failed).  --- Cause: java.sql.SQLException: ORA-01460: 转换请求无法实施或不合理; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException:   --- The error occurred while applying a parameter map.  --- Check the P_A_KEYWORD_abatorgenerated_selectKeywords-InlineParameterMap.  --- Check the statement (query failed).  --- Cause: java.sql.SQLException: ORA-01460: 转换请求无法实施或不合理


根据报错情况找到相关的SQL语句如下:

select ID, CONTENT, CREATER, CREATETIME, OPERATE, OPERATETIME, STATUS, DBUPERATER,      DBUPERATETIME, BAK1, BAK2, BAK3, BAK4, BAK5    from P_A_KEYWORD pk   <dynamic prepend="where" >     <isNotEmpty prepend=" and " property="status">pk.status=#status:VARCHAR#</isNotEmpty>     <isNotEmpty prepend=" and " property="content">     <![CDATA[#content:VARCHAR# like  '%'||pk.content||'%' ]]>     </isNotEmpty>    </dynamic>

瞧上去感觉没什么问题呀,怎么会报错呢,重新来一遍debug发现,因为来往邮件很多,这边的业务处理是将来往邮件的内容全部整合到一起做一个关键词过滤,因此导致 content字段炒鸡大,百度了下Varchar2的大小,oracle sql varchar2的最大支持长度为4000个字节(bytes),而 oracle plsql varchar2最大支持长度为32767个字节,这段话看得我很懵,反正我知道肯定是超过大小了,我处理了下只是取最近几封邮件的内容之后即恢复了正常.


目前生产上运行还没出现类似的情况了,麻烦懂上面加粗斜体字段意思的告知下,谢谢!