Oracle11g Statspack的配置实践
一、安装statspack
做好以上两个步骤后,就可以开始安装过程,具体如下:
1、 用sysdba连接(才有权安装)
$sqlplus / as sysdba 或者 $sqlplus /nolog SQL> conn /as sysdba
2、检查条件
SQL> show parameter job_queue_processes
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
job_queue_processes integer 10
(需要大于0,这是为了能够建立自动任务,执行数据收集)
SQL> show parameter timed_statistics
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
timed_statistics boolean TRUE
(需要至少配置为true,因为statspack就是要针对动态性能视图差值进行对比分析,只要timed_statistics=true时才能收集操作系统的计时统计。)
3、创建perfstat表空间
如果想知道具体已有数据文件具体路径,则可以通过
SQL> select file_name from dba_data_files;
FILE_NAME
--------------------------------------------------------------------------------
/opt/oracle/oradata/XXX/users01.dbf
/opt/oracle/oradata/XXX/sysaux01.dbf
/opt/oracle/oradata/XXX/undotbs01.dbf
/opt/oracle/oradata/XXX/system01.dbf
查询得知。
SQL> create tablespace perfstat datafile '/opt/oracle/oradata/XXX/perfstat.dbf' size 500m;
Tablespace created.
4、如果安装有错误,在下一次尝试安装Statpack之前, 需要执行spdrop.sql脚本删除用户和已经安装的视图
SQL> @?/rdbms/admin/spdrop.sql
5、执行spcreate.sql脚本并按提示输入新增用户密码及其默认表空间和临时表空间名。脚本路径为$ORACLE_HOME/RDBMS/ADMIN
注意:
perfstat模式使用的密码,如果输入口令不符合规范(如123或以数字开头的口令),创建会失败。这里用perfstat
perfstat使用的默认表空间 ,这里用上面创建的表空间perfstat
perfstat使用的临时表空间,这里使用系统临时表空间temp
SQL> @?/rdbms/admin/spcreate.sql
......
Enter value for perfstat_password: perfstat
Enter value for default_tablespace: perfstat
Enter value for temporary_tablespace: temp
.....
SPCUSR complete. Please check spcusr.lis for any errors.
6.用perfstat连接验证
SQL> connect perfstat/perfstat
Connected.
SQL>exit
二、生成statspack报告
1、手工执行并形成报告
以perfstat用户登录进去,连续执行两次或以上execute statspack.snap ,再执行@?/rdbms/admin/spreport即可:
$ sqlplus perfstat/perfstat
SQL> execute statspack.snap
PL/SQL procedure successfully completed.
SQL> execute statspack.snap
PL/SQL procedure successfully completed.
SQL> @?/rdbms/admin/spreport.sql
......
Enter value for begin_snap: 1
Begin Snapshot Id specified: 5
Enter value for report_name:test
.......
End of Report ( test.lst )
SQL> exit
$ ls *.lst
test.lst
2、设置定时任务并形成报告
设置定时任务的时间间隔
vi $ORACLE_HOME/rdbms/admin/spauto.sql
...
begin
select instance_number into :instno from v$instance;
dbms_job.submit(:jobno, 'statspack.snap;', trunc(sysdate+1/24,'HH'), 'trunc(SYSDATE+1/24,''HH'')', TRUE, :instno);
commit;
end;
时间间隔可做对应修改:
1/24 HH -- 每小时一次
1/48 MI -- 每半小时一次
1/144 MI -- 每十分钟一次
1/288 MI -- 每五分钟一次
一般以1小时为时间间隔,过短对系统的性能会产生较大的影响。
这里没有修改
任务创建:
$ sqlplus perfstat/perfstat
SQL>@?/rdbms/admin/spauto
生成分析报告
SQL>@?/rdbms/admin/spreport
...
Enter value for begin_snap: 1
Begin Snapshot Id specified: 5
Enter value for report_name:autotest
...
End of Report ( autotest.lst )
参考http://blog.itpub.net/post/38575/528197