1、创建login脚本,将linesize、seerveroutput等进行统一设置
define _editor=vi
set serveroutput on size 1000000
set trimspool on set long 5000
set linesize 100 set pagesize 9999
column plan_plus_exp format a80
column golbal_name new_value gname
set termout off
define gname=idle
column global_name new_value gname
select lower(user)||'@'||substr(global_name,1,decode(dot,0,length(global_name),dot-1)) global_name from (select global_name,instr(global_name,'.') dot from global_name);
set sqlprompt '&gname> '
set termout on
2、设置AUTOTRACE,用来显示所执行语句的解释计划及所使用的资源
(1)、使用sysoper或者sysdba登陆sqlplus :conn / as sysdba;
(2)、执行$ORACLE_HOME/rdbms/admin目录下的utlxplan.sql : @$ORACLE_HOME/rdbms/admin/utlxplan.sql
(3)、将PLAN_TABLE授权给所有用户,也可以只给特定用户: GRANT ALL ON PLAN_TABLE TO PUBLIC;
(4)、执行$ORACLE_HOME/sqlplus/admin目录下的plustrce.sql : @$ORACLE_HOME/sqlplus/admin/plustrce.sql
(5)、将PLUSTRACE角色授权给所有用户,也可以只给特定用户: GRANT PLUSTRACE TO PUBLIC;
你能自动的得到一份关于sql优化器执行路径以及语句的执行统计信息的报告。这份报告在成功执行DML(SELECT、UPDATE、MERGE、INSERT、DELETE)语句后产生。它在监控和调优这些语句时非常有效。
关于Autotrace几个常用选项的说明:
SET AUTOTRACE OFF ---------------- 不生成AUTOTRACE 报告,这是缺省模式
SET AUTOTRACE ON EXPLAIN ------ AUTOTRACE只显示优化器执行路径报告
SET AUTOTRACE ON STATISTICS -- 只显示执行统计信息
SET AUTOTRACE ON ----------------- 包含执行计划和统计信息
SET AUTOTRACE TRACEONLY ------ 同set autotrace on,但是不显示查询输出
Autotrace执行计划的各列的涵义
序号 |
列名 |
解释 |
1 |
ID_PLUS_EXP |
每一步骤的行号 |
2 |
PARENT_ID_PLUS_EXP |
每一步的Parent的级别号 |
3 |
PLAN_PLUS_EXP |
实际的每步 |
4 |
OBJECT_NODE_PLUS_EXP |
Dblink或并行查询时才会用到 |
AUTOTRACE Statistics常用列解释
序号 |
列名 |
解释 |
1 |
db block gets |
从buffer cache中读取的block的数量 |
2 |
consistent gets |
从buffer cache中读取的undo数据的block的数量 |
3 |
physical reads |
从磁盘读取的block的数量 |
4 |
redo size |
DML生成的redo的大小 |
5 |
sorts (memory) |
在内存执行的排序量 |
7 |
sorts (disk) |
在磁盘上执行的排序量 |
3、设置STATSPACK(只有sysdba权限才能设置)
(1)、使用sysdba登陆sqlplus :conn / as sysdba;
(2)、执行$ORACLE_HOME/rdbms/admin目录下的spcreate.sql : @$ORACLE_HOME/rdbms/admin/spcreate.sql
(3)、在创建的过程中,需要设置PERFSTAT用户的密码、默认表空间、临时表空间
如果在安装过程中输入错误或者出错,需要使用@$ORACLE_HOME/rdbms/admin/spdrop.sql语句删除PERFSTAT用户和已经安装的视图。在安装过程中会创建一个spcpkg.lis,可以在这个文件中找到安装过程中出现的错误等信息。只要表空间输入没有错误且PERFSTAT用户不存在,STATSPACK都应该能顺利安装完成。
4、自定义脚本
RunStats是本书的作者tom自己写的一个用来比较做相同事情的两种方法差异的脚本,你提供两种不同的方法,其他的都交给Runstats。Runstats只度量3样:
(1)、使用的时间:有用,但是不是最重要的信息
(2)、系统统计信息:
(3)、闩锁(latch):这是报表的关键
正如你将在本书中看到的,latch(闩锁)是一种轻量锁。锁是序列化的设备。序列化的设备是不支持并发的。如果应用程序不支持并发,那伸缩性比较差,只能支持少量的用户,且需要更多的资源。在开发应用时,使用的锁越少,性能就越好。
要使用Runstats,要可以访问4个视图(v$statname,v$mystat,v$timer和v$latch)。
注意:对以v$开头的视图,不能直接grant
v$开头的视图是v_$的同义词
如v$timer是v_$timer的同义词
tom所使用的视图:
create or replace view stats
as select 'STAT...'||a.name name , b.value from v$statname a, v$mystat b
where a.statistic#=b.statistic#
union all
select 'LATCH.'||name , gets from v$latch
union all
select 'STAT...Elapsed Time',hsecs from v$timer;
创建全局临时表run_stats,用来收集统计信息:
create global temporary table run_stats(runid varchar2(15) , name varchar2(80) , value int) on commit preserve rows;
创建Runstats包: