使用shell定制awr脚本(r3笔记第32天)

大家在做性能问题诊断的时候,awr是不可或缺的工具,使用?/rdbms/admin/awrrpt.sql可能大家使用的多了,可能有时候感觉输入参数还是有些太繁琐了。一边复制,一边得到一个快照列表查看,其实还是不太方便。 比如我想查看某一天的8点到9点的快照,生成一个awr报告,那么可能得算一下大概需要多少天的快照,然后从一个冗长的快照列表中去一个一个复制,还是有些繁琐的。自己在生成awr的过程中总是感觉有些不太方便,今天下决心自己定制了一把。 首先解决快照列表的问题。一般我们需要得到如下的一个列表。 Instance DB Name Snap Id Snap Started Level ------------ ------------ --------- ------------------ ----- TEST01 TEST01 1274 19 Oct 2014 22:00 1 1275 19 Oct 2014 23:00 1 1276 20 Oct 2014 00:00 1 1277 20 Oct 2014 01:00 1 1278 20 Oct 2014 02:00 1 我使用了如下的脚本做了定制,比如我需要两天以前的,那天是10月19号,需要得到3点到9点的快照,那么我就直接可以使用脚本得到一个快照的简单列表。 输出的结果如下。前后各宽裕一个小时。这样我就简单就可以选择哪些快照是我需要的。随时查看。

Current Instance ~~~~~~~~~~~~~~~~

DBID DB_NAME INST_NUM INST_NAME ---------- --------- ---------- ---------------- 3645037571 TEST01 1 TEST01

DB_NAME SNAP_ID SNAPDAT LVL --------- ---------- -------------------------- ---------- TEST01 1262 19 Oct 2014 02:00 1 1263 19 Oct 2014 03:00 1 1264 19 Oct 2014 04:00 1 1265 19 Oct 2014 05:00 1 1266 19 Oct 2014 06:00 1 1267 19 Oct 2014 07:00 1 1268 19 Oct 2014 08:00 1 1269 19 Oct 2014 09:00 1

8 rows selected. 脚本内容如下:

sqlplus -s $DB_CONN_STR@$SH_DB_SID <<EOF break on db_name set pages 50 set linesize 100 prompt prompt Current Instance prompt ~~~~~~~~~~~~~~~~

select d.dbid dbid , d.name db_name , i.instance_number inst_num , i.instance_name inst_name from v\$database d, v\$instance i; select di.db_name db_name , s.snap_id snap_id , to_char(s.end_interval_time,'dd Mon YYYY HH24:mi') snapdat , s.snap_level lvl from dba_hist_snapshot s , dba_hist_database_instance di where s.dbid = 3645037571 and di.dbid = 3645037571 and s.instance_number = 1 and di.instance_number = 1 and di.dbid = s.dbid and di.instance_number = s.instance_number and di.startup_time = s.startup_time and to_char(END_INTERVAL_TIME,'yyyymmdd')='$1' and EXTRACT(HOUR FROM END_INTERVAL_TIME) between $2-1 and $3+1 order by db_name, instance_name, snap_id;

EOF 得到了快照列表,得到awr报告就容易得多了。 可以使用如下的脚本来得到awr html格式的报告,输入参数只需要两个快照号。

print " WHENEVER SQLERROR EXIT 5 SET FEEDBACK OFF SET HEAD OFF SET PAGES 0 connect ${DB_CONN_STR}@${SH_DB_SID}\n select d.dbid||','||i.instance_number||','||$1||','||$2||',0' text from v\$database d, v\$instance i ; " | sqlplus -s /nolog > awr_inputs.lst

sqlplus -s ${DB_CONN_STR}@${SH_DB_SID} <<EOF spool awrrpt_$1_$2.lst select output from table(dbms_workload_repository.awr_report_text( `cat awr_inputs.lst`)); spool off;

EOF 比如我希望得到4点到8点的awr报告,就可以直接输入两个快照号即可。 ksh genawrhtml.sh 1264 1268 >ls -lrt -rw-r--r-- 1 ora11g dba 258496 Oct 21 08:24 awrrpt_1264_1268.lst

原文发布于微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文发表时间:2014-10-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏康怀帅的专栏

在开发环境使用 Docker

本文是对官方文档的总结与备注。 官方文档:https://docs.docker.com/develop/ 根据官方文档的层次,分为 容器 (Container...

7214
来自专栏搜云库

使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上

一个用于构建和推送Docker镜像的Maven插件。 使用Maven插件构建Docker镜像,将Docker镜像push到DockerHub上,或者私有仓库,上...

1.1K9

为Spring开发者准备的Docker备忘录

我最近一直在使用 Docker 去部署 Spring Boot 应用程序。Docker非常的酷。我学到了很多 Docker 的技巧。

19210

将Spring Boot应用程序部署到Bluemix

在之前的博客文章中,我介绍了如何通过Swagger在Spring Boot应用程序中记录REST API。下面我将介绍如何将这些应用程序作为Docker容器部署...

2437
来自专栏圣杰的专栏

.NET Core+MySql+Nginx 容器化部署

1. 引言 上两节我们通过简单的demo学习了docker的基本操作。这一节我们来一个进阶学习,完成ASP.NET Core + MySql + Nginx的容...

4388
来自专栏乐沙弥的世界

CRS-1006 , CRS-0215 故障一例

    安装好sles 10 sp3 + Oracle 10g RAC之后,在配置监听器时,总是提示主机bo2dbp上的监听服务已经在运行,忽略错误之后手动在b...

693
来自专栏咖啡的代码人生

(BAE)jetty8+struts2导致 welcome-file-list 失效

最近在使用BAE的过程中,有个问题始终解决不了,在配置struts2框架环境的时候, 如果拦截配置的是<url-pattern>/*</url-patter...

4029
来自专栏FreeBuf

使用Docker构建Web渗透测试工具容器

? Docker是世界领先的软件集装化平台,针对不同的渗透测试类型,我们完全可以使用Docker创建相应的环境。有了Docker容器,你可以把测试环境放到U盘...

3049
来自专栏我的博客

ThinkPHP3.2使用cli模式

php if(version_compare(PHP_VERSION,'5.3.0','<')) die('require PHP > 5.3.0 !'); ...

4896
来自专栏姚俊刚的专栏

Dockerfile 分享之 SSH Server

Docker 官方网站上给出的示例里面有个 用 Dockerfile 构建 SSH Server 的例子, 我在腾讯云的主机上实验了一下, 中间添加了一些优化,...

1.7K0

扫码关注云+社区

领取腾讯云代金券