在Oracle的安装目录下$ORACLE_HOME/rdbms/admin/spdoc.txt
单实例报告
on Unix:
SQL> connect perfstat/perfstat_password
SQL> define begin_snap=1
SQL> define end_snap=2
SQL> define report_name=batch_run
SQL> @?/rdbms/admin/spreport
多个实例的报告
e.g.
SQL> connect perfstat/perfstat_password
SQL> define dbid=4290976145
SQL> define inst_num=1
SQL> define begin_snap=1
SQL> define end_snap=2
SQL> define report_name=batch_run
SQL> @?/rdbms/admin/sprepins
SQL语句报告:
SQL> connect perfstat/perfstat_password
SQL> define begin_snap=39
SQL> define end_snap=40
SQL> define hashvalue=1988538571
SQL> define report_name=batch_sql_run
SQL> @sprepsql
定制报告的参数,修改sprepcon.sql:
define num_days = 2:报告快照内容的时间
define top_n_sql = 65 :报告中SQL 片段所占用的行数.
define num_rows_per_hash = 4:每一个SQL显示SQL文本的行数.
define display_rollstat = 'N';是否显示回滚统计信息
define display_undostat = 'Y';是否统计undo信息.
define display_file_io = 'Y';是否显示统计的文件IO的信息.
其他重要脚本
1,spuexp.par,数据导出用参数文件。主要内容如下:
file=spuexp.dmp log=spuexp.log compress=y grants=y indexes=y rows=y constraints=y owner=PERFSTAT consistent=y
我们可以使用以下命令导出:
exp perfstat/perfstat parfile=spuexp.par
例:
E:\oracle\product\10.2.0\db_1\RDBMS\ADMIN>exp perfstat/perfstat parfile=spuexp.par
2,删除数据脚本:spdtab.sql--删除表及同义词。spdusr.sql删除用户
3,oracle92新增脚本
1)用于升级statspack对象的脚本,需要sysdba权限,升级前请先备份存在的schema数据。
spup90.sql:用于升级9.0版本的模式至9.2版本
spup817.sql:如果从statspack8.1.7升级,需要运行这个脚本
spup816.sql:从statspack8.1.6升级,需要运行这个脚本,然后运行spup817.sql。
2)sqrepsql.sql 用于根据给定的SQL Hash值生成SQL报告
6调整statspack的收集门限
statspack有两种类型的收集选项
level--级别:控制收集数据的类型
threshold--门限:设置收集的数据阀值
都保存在表stats$statspack_parameter中
1,级别(level)--有三种快照级别,默认值为5
--查看当前level级别:
select snap_level from stats$statspack_parameter;
1)level=0:一般性能统计。包括等待事件,系统事件,系统统计,回滚段统计,行缓存,SGA,会话,锁,缓冲池统计等等。
2)level=5:在level0的基础上,增加SQL语句的收集。SQL语句收集结果记录在ststs$sql_summary表中。
3)level=10:增加子锁统计,包括level5的所有内容,还会将附加子锁的入stats$latc_children表中。使用这个级别需要慎重,建议在oracle support的指导下进行。
可以通过statspack包修改缺省的级别设置,如:
SQL>execute statspack.snap(i_snap_level=>0,i_modify_parameter=>'true');
通过这条语句,
以后的收集级别都将是0级。
如果你只是想修改本次收集级别,可以忽略i_modify_parameter参数,如下:
SQL>execute statspack.snap(i_snap_level=>10); (???是10么?)
2,快照门限--只应用于stats$sql_summary表中获取的Sql语句。
因为每一个快照都会收集很数据,及sql语句,所以stats$sql_summary很快就会成为statspack中最大的表。
--查看当前各种门限
select executions_th,disk_reads_th,parse_calls_th,buffer_gets_th from stats$statspack_parameter;
各种门限:
1)executions_th--sql语句执行的数量(默认值=100)
2)disk_reads_th--sql语句执行的磁盘读入数量(默认值=1000)
3)parse_calls_th--sql语句执行的解析调用数量(默认值=1000)
4)buffer_gets_th--sql语句执行的缓冲区获取数量(默认值=10000)
任何一个门限值超过以上参数就会产生一条记录。
通过调用statspack.modify_statspack_parameter函数我们可以改变门限的默认值:
SQL>execute statspack.modify_statspack_parameter(i_buffer_get_th=>100000,i_disk_reads_th;