执行awrrpt.sql运行awr报告的时候, 在报告中undo段汇总信息的地方出现ORA-6502 错误。
数据库版本为10.2.0.4 for Solaris,详细的错误信息为:
Error encountered in Undo Segment Summary While executing SQL statement: Len = 834 select undotsn , sum(undoblks)/1000 undob , sum(txncount) txcnt , max(maxquerylen) maxq , max(maxconcurrency) maxc , min(tuned_undoretention)/60 '/' max(tuned_undor etention)/60 mintun , sum(ssolderrcnt) '/' sum(nospaceerrcnt) snolno , sum (unxpstealcnt) '/' sum(unxpblkrelcnt) '/' sum(unxpblkreucnt) '/' sum(expstealcnt) '/' sum(expblkrelcnt) '/' sum(expblkreucnt) blkst from dba_hist_undostat where dbid = :dbid a nd instance_number = :inst_num and end_time > :b_eitvtim e and begin_time < :e_eitvtime group by undotsn Encountered error: ORA-06502: PL/SQL: numeric or value error: character string buffer too small Continuing to Next Section...
这显然是Oracle的bug,检查metalink,发现果然是10.2.0.4上的bug,ORA-06502 in AWR Report after upgrade to 10.2.0.4,Error encountered in Undo Segment Summary. [ID 781878.1]。
这个bug在Bug 7453211中进行描述,接近问题的方法就是应用补丁patch 7453211。