前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >通过shell定制ash脚本(r3笔记第33天)

通过shell定制ash脚本(r3笔记第33天)

作者头像
jeanron100
发布2018-03-14 17:58:01
1.1K0
发布2018-03-14 17:58:01
举报
文章被收录于专栏:杨建荣的学习笔记

ash是在10g以来一个很有用的特性,能够作为awr的补充,对于排查一些历史的问题能够提供更加详细和针对性的数据。 当然个人在使用ash的时候感觉最慢的地方就是在于输入时间戳了,每次输入侧时候都得一边看着样例,一边按照格式,一份ash的报告,至少20%以上的时间耗在这个时间戳上了。 有时候想查看几个时间点的数据,如果精确到分钟,那么运行ashrpt.sql就得一次又一次的输入时间戳,虽然报告生成的速度还是很快,但是老是感觉手工劳动的部分太多,毕竟有很多的选项我们并不需要。 所以使用了如下的脚本来定制ash,只需要通过shell脚本输入两个时间戳即可。

代码语言:javascript
复制
print "
        WHENEVER SQLERROR EXIT 5
        SET FEEDBACK  OFF
        SET HEAD OFF
        SET PAGES 0 
        connect ${DB_CONN_STR}@${SH_DB_SID}\n
         set linesize 150
        select  d.dbid||','||i.instance_number||',to_date('||chr(39)||$1||chr(39)||','||chr(39)||'yyyymmddHH24MISS'||chr(39)||'),to_date('||chr(39)||$2||chr(39)||','||chr(39)||'yyyymmddHH24MISS'||chr(39)||')'  text
                        from v\$database d,
             v\$instance  i ;
        " | sqlplus -s /nolog > ash_inputs.lst
sqlplus -s ${DB_CONN_STR}@${SH_DB_SID}  <<EOF
set echo off verify off timing off feedback off trimspool on  trimout on
set long 1000000 pagesize 6000 linesize 80
spool  ashrpt_$1_$2.lst
select output from table(dbms_workload_repository.ash_report_text(`cat  ash_inputs.lst`));
spool off;
EOF

比如我想查看22号7点25分到7点26分的ash数据,就直接输入下面的命令即可。

ksh genashtext.sh 20141022072500 20141022072600

OUTPUT -------------------------------------------------------------------------------- ASH Report For TEST01/TEST01

DB Name DB Id Instance Inst Num Release RAC Host ------------ ----------- ------------ -------- ----------- --- ------------ TEST01 3645037571 TEST01 1 11.2.0.3.0 NO rac1

CPUs SGA Size Buffer Cache Shared Pool ASH Buffer Size ---- ------------------ ------------------ ------------------ ------------------ 2 299M (100%) 48M (16.1%) 200M (67.0%) 4.0M (1.3%)

Analysis Begin Time: 22-Oct-14 07:25:00 Analysis End Time: 22-Oct-14 07:26:00 Elapsed Time: 1.0 (mins) Begin Data Source: V$ACTIVE_SESSION_HISTORY End Data Source: V$ACTIVE_SESSION_HISTORY 关于ash还是有一些额外的东西需要补充,ash和awr的部分还是有一些不同,比如ash的数据有在内存中的有在硬盘中归档了的。 在生成ash报告的时候就可以选择。 完整的方法和参数是下面的样子。 FUNCTION ash_report_text(l_dbid IN NUMBER, l_inst_num IN NUMBER, l_btime IN DATE, l_etime IN DATE, l_options IN NUMBER DEFAULT 0, l_slot_width IN NUMBER DEFAULT 0, l_sid IN NUMBER DEFAULT NULL, l_sql_id IN VARCHAR2 DEFAULT NULL, l_wait_class IN VARCHAR2 DEFAULT NULL, l_service_hash IN NUMBER DEFAULT NULL, l_module IN VARCHAR2 DEFAULT NULL, l_action IN VARCHAR2 DEFAULT NULL, l_client_id IN VARCHAR2 DEFAULT NULL, l_plsql_entry IN VARCHAR2 DEFAULT NULL, l_data_src IN NUMBER DEFAULT 0 ) 其中l_data_src就决定了数据来源是从内存,硬盘还是两者兼有。默认是都有。 当然了还可以根据需要来绑定sql/session来更有针对性的查看信息。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2014-10-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 杨建荣的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档