暂无图片
分享
LEE
2019-07-03
相同语句同一sql ,一个sql正常,一个报 ora-64203

select查询中 出现ora-64203 

按照ora错误提示 clob 转to_char类型的缓冲区限制导致 ,使用字符串 拼接临时处理 但是比较奇怪
1 另一套环境中跑to_char是可以正常响应并执行返回结果 ,to_char字段类型 为nvarchar2(200)  
2 语句执行返回ora-64203,去掉where条件后可以正常返回结果 


收藏
分享
8条回答
默认
最新
LEE

去掉where条件正常.png

暂无图片 评论
暂无图片 有用 0
LEE

带where条件错误.png

暂无图片 评论
暂无图片 有用 0
LEE

to_char未报错.png

暂无图片 评论
暂无图片 有用 0
LEE
上传附件:orcl_ora_3772_10046.trc
暂无图片 评论
暂无图片 有用 0
Moone

不要使用to_char转换clob,可以使用如下自定义函数:

create or replace function my_clob_substr( c in clob) return varchar2

as

v_characters number := 201;

v_length number := 201;

begin

while v_length > 200 loop

v_characters := v_characters-1;

v_length := lengthb(dbms_lob.substr(c,v_characters,1));

end loop;

return dbms_lob.substr(c,v_characters,1);

end;

/


暂无图片 评论
暂无图片 有用 0
LEE

是用mos上自定义函数 my_clob_substr 转 的
,但也是临时处理,以下问题仍存在
1 另一套环境中跑to_char是可以正常响应并执行返回结果 ,to_char字段类型 为nvarchar2(200)  
2 语句执行返回ora-64203,去掉where条件后可以正常返回结果 

暂无图片 评论
暂无图片 有用 0
LEE

找到问题根本原因了,另一套库 buffer cache命中率不高, 增大sga ,buffer cache命中率达到合理的值, 观察 ESTD_PHYSICAL_READS 逐渐升高至稳定值后,SQL执行没报64203 错误 ,谢谢Moone


暂无图片 评论
暂无图片 有用 0
LEE
问题已关闭: 问题已经得到解决
暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
附件列表
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏