oracle awr script
随着大数据时代的到来,数据量呈爆炸式增长,逐渐受限于系统基础架构的老化和性能瓶颈的出现,关系型数据库就显得更加重要。而Oracle作为一个世界知名的关系型数据库系统,其应用在企业级系统中得到了广泛的应用。由于其在全球企业级系统领域占有量比较大的份额,使得对其性能改进的需求也越来越迫切。而为了对Oracle数据库系统进行调优,监测运行时的系统管理信息就变得尤为重要,其中AWR即是一种较为常用的工具。
AWR(Automatic Workload Repository,自动工作负荷库)是Orlacle数据库中提供的一套完备的性能监测和分析体系。其主要是通过定期采集数据库运行时的一些性能数据来定位数据库性能瓶颈、找到系统性能提升的潜力,可能缺点是消耗一定的CPU资源和占用一定的磁盘空间。而为了更加便捷有效地调取AwR的相关监测数据,需要采用脚本的方式。
那么如何编写一段有效的Oracle AWR脚本呢?首先在脚本的开头,需要定义好对应的数据库连接信息,其中包括ip/用户名/密码/oracle实例名等等,如下所示:
#!/bin/bash>>ORACLE_HOME=/oracle/product/12.1.0_2>>export ORACLE_HOME>>ORACLE_SID=mztest1>>export ORACLE_SID>>NLS_LANG=AMERICAN_AMERICA.ZHS16GBK>>export NLS_LANG>>MAILRECIPIENTS=example@mail>>export MAILRECIPIENTS>>MAIL_SUBJECT="AWR Report">>export MAIL_SUBJECT>>DB_USER=test>>DB_PWD=oracle>>DB_NAME=mztest1>>export DB_USER DB_PWD DB_NAME
作为一种非常有效的性能调试脚本,Oracle AWR Script最常用的功能过程在于定期生成数据库的性能报告。在这里,可以采取Shell脚本调用SQL命令来实现自动性能报告的生成和分析,SQL语句代码如下:
#!/bin/bash>>ORACLE_HOME=/oracle/product/12.1.0_2>>export ORACLE_HOME>>ORACLE_SID=mztest1>>export ORACLE_SID>>NLS_LANG=AMERICAN_AMERICA.ZHS16GBK>>export NLS_LANG>>MAILRECIPIENTS=example@mail>>export MAILRECIPIENTS>>MAIL_SUBJECT="AWR Report">>export MAIL_SUBJECT>>DB_USER=test>>DB_PWD=oracle>>DB_NAME=mztest1>>export DB_USER DB_PWD DB_NAME>>sqlplus -s /nolog <<EOF>>conn $DB_USER/$DB_PWD@$DB_NAME>>set serveroutput on>>SET TERMOUT OFF>>SET LINESIZE 320>>SET PAGESIZE 50000>>set feedback off>>set timing off>>set echo off>>col SNAP_ID format 99999>>col SNAP_TIME format a23>>col DB_TIME format 99999999>>col CPU_SEC format 99999999.999>>col DB_CPU_SEC format 99999999.999>>col CON_S format 99999999.999>>col LOGICAL_READS format 99999999.99>>col PHYSICAL_READS format 99999999.99>>col PHYSICAL_READ_REQUESTS format 99999999.99>>col LOCK_WAIT_TIME format 99999999.999>>col ROWS_PROCESSED format 99999999.9>>col DB_ULOG_BYTES format 99999999.9>>define begin_snap=$1>>define end_snap=$2>>spool /opt/oracle/script/awr_res.htm>>clear columns>>CLEAR BREAKS>>set hea off>>set pagesize 0>>set feedback off>>set echo off>>set lines 2000>>SELECT dbid FROM v$database;>>SELECT '#################### Report Period : '||to_char(begin_snap_time,'YYYY-MM-DD HH24:MI:SS')||' - '||to_char(end_snap_time,'YYYY-MM-DD HH24:MI:SS')||' ####################' FROM dba_hist_snapshot WHERE instance_number=1 AND snap_id=&begin_snap;>>SELECT * FROM TABLE(dbms_workload_repository.awr_report_html(&DBID,&INSTANCE_NUMBER,&begin_snap,&end_snap,0));>>spool off>>exit;>>EOF
在执行完这段SQL代码之后,可以在终端中看到输出的性能报告,提供给数据库管理员进行分析、优化和改进,进而提升数据库的性能与稳定性。当然,在分析完成之后,也需要将相关的结果邮件发送给相关人员,以便于及时响应和改进操作。脚本如下:
>>mailx -v -s "${MAIL_SUBJECT} --date +%Y%m%d
" ${MAILRECIPIENTS} < /opt/oracle/script/awr_res.htm
在整个脚本执行完成之后,就会自动采集分析数据库中的性能数据,并生成相应的性能报告,并将其以邮件形式发送给指定的接收人员,方便进行后续的系统性能优化操作。
总而言之,Oracle AWR Script是一种非常优秀的运维脚本,可以大幅度提升系统的性能和稳定性,方便管理员进行性能数据分析和优化,进而实现数据库系统的不断升级和发展。
上一篇:oracle audit删除
下一篇:oracle asm备份