今天做了statspack采集脚本,实现自动采集上午9点到下午6点的快照信息。特此备注,方便使用
OS:solaris 8
DB:oracle 9206
先看crontab信息:
#statspack collection
10 18 * * * /pglobal/cmxp/sprepstat.sh
20 18 * * * /pglobal/cmxp/spjobchg.sh
由于快照采集间隔是30分钟一次,所以脚本采集的是18点前的快照。
sprepstat.sh
#!/bin/sh
#set env
DATE=`date +%Y%m%d%H%M`
ORACLE_HOME=/pglobal/cmxp/oracle/app/oracle/product/9.2.0
export ORACLE_HOME
ORACLE_SID=csms3
export ORACLE_SID
$ORACLE_HOME/bin/sqlplus '/ as sysdba' <set head off;
set timing off;
spool snap_begin.lst;
select min(snap_id) snap_id
from stats$snapshot;
spool off;
spool snap_end.lst;
select max(snap_id) snap_id
from stats$snapshot;
spool off;
exit;
EOF
BEGIN_SNAP=`cat snap_begin.lst | tail -3 |grep -v spool|awk '{print $1}'`
END_SNAP=`cat snap_end.lst | tail -3 |grep -v spool|awk '{print $1}'`
REPORT_NAME=sp`date +%Y%m%d`_ac
$ORACLE_HOME/bin/sqlplus '/ as sysdba' <define begin_snap=$BEGIN_SNAP;
define end_snap=$END_SNAP;
define report_name=$REPORT_NAME;
@?/rdbms/admin/spreport;
exit;
EOF
spjobchg.sh
#!/bin/sh
#set env
jobdate=`date +%Y%m%d`
ORACLE_HOME=/pglobal/cmxp/oracle/app/oracle/product/9.2.0
export ORACLE_HOME
ORACLE_SID=csms3
export ORACLE_SID
$ORACLE_HOME/bin/sqlplus '/ as sysdba' <begin
sys.dbms_job.change(job => 930,
what => 'statspack.snap;',
next_date => to_date('$jobdate 10:20:00', 'yyyymmdd hh24:mi:ss')+1,
interval => 'trunc(SYSDATE+1/48,''MI'')');
commit;
end;
/
exit;
EOF
$ORACLE_HOME/bin/sqlplus '/ as sysdba' <delete from stats$snapshot;
commit;
exit;
EOF
第一个脚本是采集信息,第二个脚本是修改JOB的时间,我不想在18点以后继续收集,因为我们晚上要跑大量的后台应用JOB,还有备份,所以不想这个时侯占资源。占表空间,并一次删除,不留历史记录,如果参考我的做法的话,请酌情处理这个部分。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16628454/viewspace-567480/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/16628454/viewspace-567480/