打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Oracle批量生成awr报告脚本
userphoto

2024.04.21 浙江

关注

我们在运维Oracle数据库时,有时候会对比Oracle 的awr报告,那么如何批量生成报告呢,下面几个脚本以供参考。

sql脚本,注意时间格式

  1. select
  2. 'spool awr_'||dbid||'_'||instance_number||'_'||b_snap_id||'_'||e_snap_id||'.html'
  3. ||chr(10)||
  4. 'select output from table(dbms_workload_repository.awr_report_html('||dbid||', '||instance_number||','||b_snap_id||','||e_snap_id||'));'
  5. ||chr(10)||
  6. 'spool off'
  7. from
  8. (select dbid,instance_number,snap_id b_snap_id,lead(snap_id,1,0) over(partition by instance_number order by snap_id) e_snap_id
  9. from dba_hist_snapshot
  10. where begin_interval_time>=trunc(sysdate-1)
  11. and begin_interval_time<=trunc(sysdate))
  12. where e_snap_id!=0;

sh脚本,注意脚本开头时间

  1. #!/bin/sh
  2. # set the environment
  3. source /home/oracle/.bash_profile
  4. CONNECTSTR=" / as sysdba"
  5. BEGIN_TIME="20211012_09:00:00"
  6. END_TIME="20211012_12:00:00"
  7. function Dbid {
  8. sqlplus -S $CONNECTSTR <<EOF
  9. set pages 0 termout off verify off feedback off
  10. select DBID from v\$database;
  11. exit
  12. EOF
  13. }
  14. Instnum() {
  15. sqlplus -S $CONNECTSTR <<EOF
  16. set pages 0 termout off verify off feedback off
  17. select instance_number from v\$instance;
  18. exit
  19. EOF
  20. }
  21. Instname() {
  22. sqlplus -S $CONNECTSTR <<EOF
  23. set pages 0 termout off verify off feedback off
  24. select instance_name from v\$instance;
  25. exit
  26. EOF
  27. }
  28. function Snap_id_like_time {
  29. sqlplus -S $CONNECTSTR <<EOF
  30. set pages 0 termout off verify off feedback off;
  31. select SNAP_ID from dba_hist_snapshot
  32. where to_char(end_interval_time,'hh24') in (9,10,11,12,14,15,17)
  33. and trunc(end_interval_time,'mi')> trunc(sysdate-1)
  34. and instance_number in (select instance_number from v\$instance)
  35. order by snap_id;
  36. exit
  37. EOF
  38. }
  39. function Snap_id_between_time {
  40. sqlplus -S $CONNECTSTR <<EOF
  41. set pages 0 termout off verify off feedback off;
  42. select SNAP_ID from dba_hist_snapshot
  43. where trunc(end_interval_time,'hh')>= trunc(to_date('$BEGIN_TIME','YYYYMMDD_HH24:MI:SS'),'hh')
  44. and trunc(end_interval_time,'hh')<= trunc(to_date('$END_TIME','YYYYMMDD_HH24:MI:SS'),'hh')
  45. and instance_number in (select instance_number from v\$instance)
  46. order by snap_id;
  47. exit
  48. EOF
  49. }
  50. function Snap_id_between_id {
  51. sqlplus -S $CONNECTSTR <<EOF
  52. set pages 0 termout off verify off feedback off;
  53. select SNAP_ID from dba_hist_snapshot
  54. where snap_id>= to_number($BEGIN_ID)
  55. and snap_id<= to_number($END_ID)
  56. and instance_number in (select instance_number from v\$instance)
  57. order by snap_id;
  58. exit
  59. EOF
  60. }
  61. echo "==========++++++++++++++===========";
  62. CMDPM=`echo $1 | awk '{print tolower($1)}'`
  63. case $CMDPM in
  64. bi | -bi | byid)
  65. SNAP_ID=`Snap_id_between_id`
  66. ;;
  67. bt | -bt | bytime)
  68. SNAP_ID=`Snap_id_between_time`
  69. ;;
  70. lt | -lt | liketime)
  71. SNAP_ID=`Snap_id_like_time`
  72. ;;
  73. *)
  74. #SNAP_ID=`Snap_id_like_time`
  75. echo "please usage like : $0 -bt(bytime)"
  76. ;;
  77. esac
  78. echo "$SNAP_ID";
  79. echo "==========++++++++++++++===========";
  80. #Lftp to sftpServer .lftp Just fo Linux.
  81. function Lftp_awr_report {
  82. cd .
  83. for VAR in *.htm*
  84. do
  85. lftp -u ${FTPUSER},${FTPPASS} sftp://${FTPSERVERIP}<<EOF
  86. cd /u01/docdata/olm/xh/121.160
  87. put ${VAR}
  88. bye
  89. EOF
  90. done;
  91. }
  92. #FTP to ftpServer
  93. function Ftp_awr_report {
  94. cd /tmp
  95. HOSTNAME=`hostname`;
  96. LOCALDIR="olm/xh/`grep ${HOSTNAME} /etc/hosts|awk '{print $1;}'|head -1`";
  97. ftp -n ${FTPSERVERIP} <<EOF
  98. passive
  99. prompt
  100. user ${FTPUSER} ${FTPPASS}
  101. cd ${LOCALDIR}
  102. binary
  103. mput *.html
  104. ascii
  105. mput out222*.log
  106. bye
  107. EOF
  108. }
  109. function Create_awr_report {
  110. for snap_id_line in $SNAP_ID ; do
  111. bid="$eid"
  112. eid="$snap_id_line"
  113. if [ "$bid" != "" -a "$eid" != "" ] ; then
  114. sqlplus -S $CONNECTSTR <<EOF
  115. set echo off;
  116. set veri off;
  117. set feedback off;
  118. set termout on;
  119. set heading off;
  120. set trimspool on;
  121. set linesize 1500;
  122. set termout off;
  123. column report_name new_value report_name noprint;
  124. select name1 || name2 as report_name
  125. from (select a.snap_id as begin_snap_id,a.end_interval_time as begin_time,
  126. to_char(a.end_interval_time, 'yyyymmdd_') ||
  127. '`Instname`_awr'||to_char(a.end_interval_time, '_hh24')||
  128. to_char(a.end_interval_time, 'mi') || '-' as name1
  129. from dba_hist_snapshot a
  130. where a.snap_id = $bid
  131. and a.instance_number = `Instnum`) t1,
  132. (select b.snap_id as end_snap_id,b.end_interval_time as end_time,
  133. to_char(b.end_interval_time, 'hh24') ||
  134. to_char(b.end_interval_time, 'mi') || '.' || 'html ' name2
  135. from dba_hist_snapshot b
  136. where b.snap_id = $eid
  137. and b.instance_number = `Instnum`) t2
  138. where rownum < 2
  139. and end_snap_id - begin_snap_id < 3
  140. and end_time-begin_time<INTERVAL '2' HOUR;
  141. set termout off;
  142. spool &report_name;
  143. select output from TABLE(DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML(`Dbid`,`Instnum`,$bid, $eid,0 ));
  144. spool off;
  145. set termout on;
  146. clear columns sql;
  147. ttitle off;
  148. btitle off;
  149. repfooter off;
  150. exit
  151. EOF
  152. fi
  153. done
  154. }
  155. Create_awr_report;
  156. #Ftp_awr_report;

内容整理自网络,如有侵权,请联系

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29487349/viewspace-2795517/,如需转载,请注明出处,否则将追究法律责任。                                             

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Oracle AWR 介绍
AWR的基本知识
Oracle awr和ash
脚本:定时生成awr报告
罗海雄:仅仅使用AWR做报告? 性能优化还未入门
Oracle 10g/11g AWR/STATSPACK
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服