安装配置statspack
a)创建statspack需要的表空间
SQL> create tablespace PERFSTAT datafile '/u01/app/oracle/oradata/hdb11g/PERFSTAT.ora' size 16M autoextend on maxsize 2G;
Tablespace created.
b)创建statspack相关的包
cd $ORACLE_HOME/rdbms/admin
管理员登录sqlplus / as sydba
SQL> @spcreate.sql创建statspack
SQL> @spdrop.sql如果创建不成功,可以删除statspack
创建完成
c)查询statspack的创建,可以查看lis日志文件
ora11gr2.sannet.net | hdb11g | /u01/app/oracle/product/11.2.0.3.0/db_1/rdbms/admin > ls -l|grep .lis
-rw-r--r-- 1 oracle dba 195 Oct 11 17:26 spcpkg.lis
-rw-r--r-- 1 oracle dba 5479 Oct 11 17:26 spctab.lis
-rw-r--r-- 1 oracle dba 3271 Oct 11 17:25 spcusr.lis
-rw-r--r-- 1 oracle dba 19890 Oct 11 17:22 spdtab.lis
-rw-r--r-- 1 oracle dba 1977 Oct 11 17:22 spdusr.lis
使用statspack
使用perfstat账户登录到数据库实例
创建statspack的snapshot后,并且snapshot必须大于2个以上才能生成报告.
SQL> exec statspack.snap
SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
Session altered.
SQL> select dbid,snap_id,snap_time,startup_time fromstats$snapshot;
DBID SNAP_ID SNAP_TIME STARTUP_TIME
---------- ---------- ------------------- -------------------
2282949272 3 2012-10-12 09:43:34 2012-10-12 09:41:10
2282949272 1 2012-10-11 17:43:50 2012-10-11 11:40:13
2282949272 2 2012-10-11 17:51:40 2012-10-11 11:40:13
创建statspack报告
cd $ORACLE_HOME/rdbms/admin
SQL> @spreport.sql
另外spauto.sql,sppurge.sql,sptrunc.sql可以用来管理这些快照.
spauto.sql
创建生成snapshot的job
使用perfstat登录到数据库创建job
cd $ORACLE/rdbms/admin
SQL>@spauto.sql
查看user_jobs
SQL>select job,log_user,last_date,next_date,interval from user_jobs;
JOB LOG_USER LAST_DATE NEXT_DATE INTERVAL
---------- ------------------------------ ------------------- ------------------- ------------------------------
3 PERFSTAT 2012-10-15 14:00:02 2012-10-15 15:00:00 trunc(SYSDATE+1/24,'HH')
移除job,如果不想再生成快照,可以去掉这个job
SQL>exec dbms_job.remove('3')
sppurge.sql
删除一段时间的快照数据。
sptrunc.sql
删除所有快照的数据。