当前位置:  数据库>oracle

生成AWR报告时出现ORA-06502

    来源: 互联网  发布时间:2017-06-18

    本文导语: 最近在生成一套系统的AWR报告时出现了如下报错:ORA-06502: PL/SQL: numeric or value error: character string buffer too small,然后生成AWR报告的过程就终止了,查看生成的AWR报告,发现报告时不完整的,AWR报告到Complete List of SQL Text部分就结束...

最近在生成一套系统的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> desc WRH$_SQLTEXT

  •  Name                    Null?             Type
  •  ----------------------------------------- -------- ----------------------------
  •  SNAP_ID                                    NUMBER
  •  DBID                    NOT NULL          NUMBER
  •  SQL_ID                   NOT NULL          VARCHAR2(13)
  •  SQL_TEXT                                   CLOB
  •  COMMAND_TYPE                               NUMBER
  •  REF_COUNT                                  NUMBER

保存sql文本的字段为CLOB字段,所以可以采用下面的方法对WRH$_SQLTEXT.SQL_TEXT字段进行截断:

update WRH$_SQLTEXT set sql_text = dbms_lob.substr(sql_text,3000);
commit;

执行完上述操作后,成功生成了AWR报告,但是,过长的sql是被截断的,如果要获得完整的sql,可以根据AWR报告中的sqlid到系统中进行查找。


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux c下利用srand和rand函数生成随机字符串
  • 用JBuilder能将java程序生成exe可执行文件吗?如何生成?
  • Linux下c基于openssl生成MD5的函数
  • 如何指定用javac编译生成类的存放路径。(最好不要告诉我再生成之后再把文件流重新到出这种) iis7站长之家
  • c#如何生成Excel(.xls和.xlsx)文件
  • 高分求jsp中动态生成图片的相关资料、生成svg格式和pdf格式的资料,不够再加分
  • linux下利用(cat,strings,head,sed)命令生成随机字符串
  • 如何使用arm-uclibc-gcc将.c文件编译生成.a,将.c文件编译生成.cgi?
  • php中session_id()函数详细介绍,会话id生成过程及session id长度
  • 如何指定用javac编译生成类的存放路径。(最好不要告诉我再生成之后再把文件流重新到出这种)
  • linux c 生成随机数srand函数和rand函数介绍及代码示例
  • QT Designer生成的代码不能生成可执行程序
  • ORACLE中DBMS_RANDOM随机数生成包
  • 需要从数据库中动态生成的页面是该在SERVLET输出生成,还是应该在JSP编码实现?
  • Linux下c/c++开发之程序崩溃(Segment fault)时内核转储文件(core dump)生成设置方法
  • java生成字母数字组合的随机数示例 java生成随机数
  • 请问我用程序如何编辑Adobe Acrobat 5.0的pdf文件(生成报表)啊?或者如何才能将已生成的execl报表转换成pdf格式?
  • 请问用POI生成Excel文件时,怎么能生成边框线条等?
  • php生成短网址 仿微博短网址生成代码
  • 在JB自己生成的EJB客户端的测试代码中都会自动生成,象String url = "t3://localhost:7001";这样的,请问:
  • java随机生成字符串(字符随机生成类 生成随机字符组合)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3