您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

生成AWR报告时出现ORA-06502

2025/4/30 23:57:18发布8次查看
最近在生成一套系统的awr报告时出现了如下报错:ora-06502: pl/sql: numeric or value error: character string buffer too smal
最近在生成一套系统的awr报告时出现了如下报错:ora-06502: pl/sql: numeric or value error: character string buffer too small,然后生成awr报告的过程就终止了,查看生成的awr报告,发现报告时不完整的,awr报告到complete list of sql text部分就结束了,且最后是以一个非常长的sql语句结束的,且这个sql语句还没有显示完整。查看mos后发现,这是bug 7833620导致的(参考mos文章doc id 1303342.1),但就为了生成awr报告去打patch,有点兴师动众了,于是决定想办法绕过这个bug。
根据上面的分析已经基本清楚,导致awr报告生成失败的原因就是系统中存在一个特别长的sql。明确了这点,接下来就好办了,生成awr报告的的sql文本是来自wrh$_sqltext,那只要将这个基表中的sql文本进行截断,应该就能正确的生成awr报告了。这里说明下,wrh$_sqltext基表保存的是快照期间的sql文本信息,对该表的操作不会影响系统的sql语句运行,但是对基表的操作始终是非常危险的,建议不要直接在生成系统上进行操作,可以将生产的awr数据导入到测试环境上生成awr报告。awr导入/导出具体操作,参看。
wrh$_sqltext基表的结构如下:
保存sql文本的字段为clob字段,所以可以采用下面的方法对wrh$_sqltext.sql_text字段进行截断:
update wrh$_sqltext set sql_text = dbms_lob.substr(sql_text,3000);
commit;
执行完上述操作后,成功生成了awr报告,但是,过长的sql是被截断的,如果要获得完整的sql,,可以根据awr报告中的sqlid到系统中进行查找。
 更多相关教程请访问   mysql视频教程
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product