create table t
( OWNER, OBJECT_NAME, SUBOBJECT_NAME, OBJECT_ID, DATA_OBJECT_ID,
OBJECT_TYPE, CREATED, LAST_DDL_TIME, TIMESTAMP, STATUS,
TEMPORARY, GENERATED, SECONDARY )
partition by hash(object_id)
partitions 16
as
select * from all_objects;
我们经常要在表上面,根据owner 或者 object_type,object_name 或者owner, object_type,object_name进行查询。于是我们想到在这三列上建立一个局部索引。如下所示:
create index t_idx
on t(owner,object_type,object_name)
LOCAL
运行一个存储过程收集cpu耗用等信息:
begin
dbms_stats.gather_table_stats
( user, 'T', cascade=>true);
end;
/
改变几个会话属性,便于允许TKPROF
alter session set timed_statistics=true;
alter session set events '10046 trace name context forever,level 12';
执行如下SQL语句:
select * from t where owner='SCOTT' and object_type = 'TABLE' and object_name = 'EMP';
select * from all_objects where owner='SCOTT' and object_type = 'TABLE' and object_name = 'EMP';
查看TKPROF记录的性能日志位置:
select rtrim(c.value,'\') ||'\'||d.instance_name||
'_ora_' ||ltrim(to_char(a.spid))||'.trc'
from v$process a,v$session b,v$parameter c,v$instance d
where a.addr=b.paddr
and b.audsid =sys_context('userenv','sessionid')
and c.name='user_dump_dest';
假如看到这样的输出:D:\ORACLELWS\PRODUCT\10.2.0\ADMIN\ORCL\UDUMP\orcl_ora_5928.trc
另外打开一个命令行,输入如下命令解析日志文件