ORACLE中安装STATSPACK步骤
一,系统参数
1. alter system set job_queue_processes = 6; job_queue_processes,为了能够建立自动任务,执行数据收集,该参数需要大于0。
2.alter system set timed_statistics = true; timed_statistics,收集操作系统的计时信息,这些信息可被用来显示时间等统计信息,优化数据库和SQL语句。要防止因从操作系统请求时间而引起的开销,将该值设置为False。
二,安装Statspack
安装statspack需要用internal身份登陆,或者拥有sysdba(connect/as sysdba)权限的用户登陆,需要在本地或者通过telnet登陆到服务器。
脚本路径:D:\oracle\product\10.1.0\Db_1\RDBMS\ADMIN
三,步骤
1.SQLPLUS中输入 SQL> connect / as sysdba; SQL> alter system set job_queue_processes = 6; --自动执行数据收集时该参数需要大于0 System altered SQL> alter system set timed_statistics = true; System altered
SQL> create tablespace perfstat 2 datafile 'D:\oracle\product\10.1.0\oradata\isbn\perfstat.dbf' 3 size 500M 4 extent management local;
Tablespace created.
SQL> @D:\oracle\product\10.1.0\Db_1\RDBMS\ADMIN\spcreate.sql; 输入 perfstat_password 的值: perfstat 输入default_tablespace的值: perfstat 输入temporary_tablespace 的值: temp ----------默认切换perfstat用户--- NOTE: SPCPKG complete. Please check spcpkg.lis for any errors. --需要出现上述语句才算成功,否则请查看.lis文件并执行,进行重建 SQL> @D:\oracle\product\10.1.0\Db_1\RDBMS\ADMIN\spdrop.sql SQL> @D:\oracle\product\10.1.0\Db_1\RDBMS\ADMIN\spcreate.sql;
四,生成STATSPACK调整报告 SQL> show user USER为"PERFSTAT"
1.相关背景知识说明
缺省情况下 snapshot 的级别是 level 5。 statspack生成的报告中就会显示系统中高负荷SQL语句(High Load SQL)的信息,而其详细信息可以在 stats$sql_summary 表中查到 select * from stats$sql_summary ;
statspack两种收集类型
level级别:控制收集数据的类型 threshold门限:设置收集的数据的乏值
level级别: execute statspack.snap(i_snap_level=>10,i_modify_parameter=>'true'); 通过这样设置后,收集级别都为10级. 如果只想本次改变收集级别,可以忽略i_modify_parameter参数。 execute statspack.snap(i_snap_level=>10)
threshold门限: 快照门限只应用与stats$sql_summary表中获取的sql语句。 门限存储在stats$statspack_parameter表中,
executions_th :这是SQL语句执行的数量(默认100)
disk_reads_th :这是SQL语句执行的磁盘读入数量(默认1000)
parse_calls_th :这是SQL语句执行的解析调用的数量(默认1000)
buffer_gets_th :这是SQL语句执行的缓冲区获取的数量(默认10000)
任何一个门限值超过以上参数就会产生一条记录 通过调用:statspack.modify_statspack_parameter函数可以改变门限默认值: execute statspack.modify_statspack_parameter(i_buffer_gets_th=>100000,i_disk_reads_th=>10000);
2.手动执行STATSPACK收集统计信息
SQL>@D:\oracle\product\10.1.0\Db_1\RDBMS\ADMIN\spreport.sql;
Specify the Begin and End Snapshot Ids ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 输入 begin_snap 的值: 1 输入 end_snap 的值: 2 End Snapshot Id specified: 2 Specify the Report Name ~~~~~~~~~~~~~~~~~~~~~~~ The default report file name is sp_1_2. To use this name, press <return></return>to continue, otherwise enter an alternative. 输入 report_name 的值: 'd:\report_2009050202.txt' End of Report
查看产生的report_2009050202.txt文档 d:\report_2009050202.txt
3.自动执行STATSPACK收集统计信息
SQL>@D:\oracle\product\10.1.0\Db_1\RDBMS\ADMIN\\spauto.sql;
spauto.sql中主要调用dbms_job.submit,默认每小时收集1次(1/24) variable jobno number; variable instno number; 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 每五分钟一次
移除自动执行STATSPACK收集
SQL>select job,log_user,priv_user,last_date,next_date,interval from user_jobs; --先查看当前自动收集的jobs SQL> execute dbms_job.remove('1'); --移除任务1 删除统计资料(statspack相关的所有系统表) SQL>select max(snap_id) from stats$snapshot; SQL> @C:\oracle\ora92\rdbms\admin\sptrunc.sql; Warning ~~~~~~~ Running sptrunc.sql removes ALL data from Statspack tables. You may wish to export the data before continuing. About to Truncate Statspack Tables ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ If you would like to continue, press <return></return> 输入 return 的值: Entered - starting truncate operation
备注:
附件里有我自己安装statspack的脚本和生成的statspack报告。
有些内容是来自互联网,自学整理。