Linux平台生成AWR报告

在Linux平台上生成AWR(Automatic Workload Repository)报告通常是指针对Oracle数据库的操作。AWR报告是Oracle数据库性能诊断的一个重要工具,它可以帮助DBA分析数据库在一段时间内的性能表现。

以下是生成AWR报告的一般步骤:

1. 确认Oracle数据库环境

确保Oracle数据库已经安装,并且数据库正在运行。同时,确认已经开启了自动统计信息的收集,这是生成AWR报告的前提。

2. 登录数据库

使用具有相应权限的账号登录到Oracle数据库。

sqlplus / as sysdba

或者使用具体的用户名和密码登录:

sqlplus username/password

3、在sqlplus中输入@awrrpt 

开始按照提示操作,首先是选择要生成awr报告的类型,可以选择text类型和html类型,这里以html类型为例,输入html 

选择查看最近多少天的镜像记录;输入1,则表示要查看今天0点开始到当前时间的记2录;输入2,则表示要查看昨天0点开始到当前时间的记录,以此类推。缺省记录最近7天。这里输入1作为示例 
输入天数后,界面会显示出一个时间段的表格,每个时间点都对应一个Snap Id,间隔时间默认是1个小时,接下来,输入要生成报告的时间开始点对应的Snap Id,这里以2014-08-28 00:00为例,表中看到其对应的Snap Id是22844。然后,要输入生成报告的时间的结束点对应的Snap Id,这里选2014-08-28 11:00为例,表中看到其对应的Snap Id是22855
接着要求输入生成报告的名字,系统会自动生成一个默认的名字,并会在提示信息中显示出来,如果使用默认名,则不用输入任何内容,直接回车即可。默认名称格式一般都是awrrpt_1_开始snapid_结束snapid.html,我们也可以输入自己定义的名称如:awrrpt_20140828

然后就会在$ORACLE_HOME/rdbms/admin目录下生成html格式的报告

4、下载到本地

用ftp工具登录服务器,并把生成的报告下载到本地。

5、问题处理(重点)

oracle 生成AWRRPT报ora-06502错误的临时解决办法

oracle11g中生成awrrpt时,有时会报ora-06502错误,最近在生成一套系统的AWR报告时出现了如下报错:ORA-06502: PL/SQL: numeric or value error: character string buffer too small,然后生成AWR报告的过程就终止了,查看生成的AWR报告,发现报告时不完整的,AWR报告到Complete List of SQL Text部分就结束了,且最后是以一个非常长的sql语句结束的,且这个sql语句还没有显示完整。

根据上面的分析已经基本清楚,导致AWR报告生成失败的原因就是系统中存在一个特别长的sql。明确了这点,接下来就好办了,生成AWR报告的的sql文本是来自WRH$_SQLTEXT,那只要将这个基表中的sql文本进行截断,应该就能正确的生成AWR报告了。这里说明下,WRH$_SQLTEXT基表保存的是快照期间的sql文本信息,对该表的操作不会影响系统的sql语句运行,但是对基表的操作始终是非常危险的,建议不要直接在生成系统上进行操作,可以将生产的AWR数据导入到测试环境上生成AWR报告。

ERROR:ORA-06502:PL/SQL:numeric or value error:character string buffer

too small ORA-06502:at "YSY.DBMS_WORKLOAD_REPOSITORY", line 919

ORA-06502:at line 1

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,1000);

commit;

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值