begin tle 观察 pre 报表 lec title 实现
观察 Oracle 数据库性能,oracle 自带的 awr 功能为我们提供了一个近乎完美的解决方案,通过 awr 特性我们可以随时从数据库提取 awr 报告。通过报告可以了解一个系统的整个运行情况,生成的报告包括多个部分。
如何获取 awr 报告?
获取 awr 报告通常是采用 html 形式;打开页面比较友好;也方便查看。
通过方法 1 awrrpt.sql 脚本执行需要我们提供一些交互信息。操作也比较简单。本文通过 shell 脚本中来实现自动产生指定时段的 awr 报告。采用方法 2。
1. 产生 awr report 的 sql 脚本 autoawr.sql
- SET ECHO OFF;
- SET VERI OFF;
- SET FEEDBACK OFF;
- SET TERMOUT ON;
- SET HEADING OFF;
- VARIABLE dbid NUMBER;
- VARIABLE inst_num NUMBER;
- VARIABLE bid NUMBER;
- VARIABLE eid NUMBER;
- BEGIN SELECT MIN(snap_id) INTO: bid FROM dba_hist_snapshot WHERE TO_CHAR(end_interval_time, 'yyyymmdd') = TO_CHAR(SYSDATE - 1, 'yyyymmdd');
- SELECT MAX(snap_id) INTO: eid FROM dba_hist_snapshot WHERE TO_CHAR(begin_interval_time, 'yyyymmdd') = TO_CHAR(SYSDATE - 1, 'yyyymmdd');
- SELECT dbid INTO: dbid FROM v$database;
- SELECT instance_number INTO: inst_num FROM v$instance;
- END;
- /
- set pagesize 0;
- set linesize 121;
- COLUMN report_name NEW_VALUE report_name NOPRINT;
- SELECT instance_name || '_awrrpt_' || instance_number || '_' || b.timestamp || '.' || 'html'
- report_name
- FROM v$instance a,
- (SELECT TO_CHAR (begin_interval_time, 'yyyymmdd') timestamp
- FROM dba_hist_snapshot
- WHERE snap_id = :eid) b;
- SET TERMOUT OFF;
- SPOOL $AWR_DIR/ & report_name;
- SELECT output FROM TABLE(DBMS_WORKLOAD_REPOSITORY.awr_report_html(: dbid, :inst_num, :bid, :eid));
- SPOOL OFF;
- SET TERMOUT ON;
- CLEAR COLUMNS SQL;
- TTITLE OFF;
- BTITLE OFF;
- REPFOOTER OFF;
- UNDEFINE report_name
2. 产生 awr report 的 shell 脚本 autoawr.sh
- # ! /bin/bash
- if [ - f~ / .bash_profile];
- then source~ / .bash_profile fi
- export AWR_CMD = /home/oracle / awr export AWR_DIR = /home/oracle / awr / report RETENTION = 31
- #----------------------------------------------#Generate awr report#----------------------------------------------$ORACLE_HOME / bin / sqlplus / as sysdba << EOF@$ {
- AWR_CMD
- }
- /autoawr.sql;
- exit;
- EOF
- # ------------------------------------------------
- # Removing files older than $RETENTION parameter
- # ------------------------------------------------
- find ${AWR_DIR} -name "*awrrpt*" -mtime +$RETENTION -exec rm {} \;
- exit/
利用 shell 脚本自动获取 awr 报表
来源: http://www.bubuko.com/infodetail-2227325.html