Oracle 性能调优学习笔记(二)--Statpack(扩展应用帮助文档)

 

 

 

  在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;

 

 

 

 

你可能感兴趣的:(oracle)