设置autotrace功能
1.创建plan_table表
sqlplus /nolog
conn sys /as sysdba
@?/rdbms/admin/utlxplan.sql;
create public synonym plan_table for plan_table;
grant all on plan_table to public;
2.创建plustrace角色和权限
@?/sqlplus/admin/plustrce.sql;
DBA用户首先被授予了plustrace角色,然后我们可以把plustrace授予public,这样所有用户都将拥有plustrace角色的权限.
grant plustrace to public ;
已可用autotrace功能
3.测试:
SQL> connect center/Dongyun123
SQL> set autotrace on;
设置时间提示
SQL> set time on;
设置统计执行时间
SQL 18:23:53> set timing on;
4.帮助:
关于autotrace几个常用选项的说明:
SET AUTOTRACE OFF ------------ 不生成AUTOTRACE 报告,这是缺省模式
SET AUTOTRACE ON EXPLAIN ----- AUTOTRACE只显示优化器执行路径报告
SET AUTOTRACE ON STATISTICS -- 只显示执行统计信息
SET AUTOTRACE ON ------------- 包含执行计划和统计信息
SET AUTOTRACE TRACEONLY ------- 同set autotrace on,但是不显示查询输出
sys@TICKET> set auo
SP2-0158: 未知的 SET 选项 "auo"
sys@TICKET> set autot
用法: SET AUTOT[RACE] {OFF | ON | TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]
sys@TICKET> set autotrace on stat;
sys@TICKET> create table test as select * from dba_objects
2 union all select * from dba_objects
3 union all select * from dba_objects
4 union all select * from dba_objects
5 union all select * from dba_objects
6 union all select * from dba_objects
7 union all select * from dba_objects
8 union all select * from dba_objects
9 union all select * from dba_objects
10 union all select * from dba_objects
11 union all select * from dba_objects
12 union all select * from dba_objects
13 union all select * from dba_objects
14 union all select * from dba_objects
15 union all select * from dba_objects
16 union all select * from dba_objects;
表已创建。
sys@TICKET>
sys@TICKET> commit;
提交完成。
sys@TICKET> commit;
提交完成。
sys@TICKET> select extents from user_segments where segment_name='TEST';
EXTENTS
----------
88
统计信息
----------------------------------------------------------
22 recursive calls
0 db block gets
96 consistent gets
1 physical reads
0 redo size
418 bytes sent via SQL*Net to client
416 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
sys@TICKET> truncate table test;
表被截断。
sys@TICKET> select extents from user_segments where segment_name='TEST';
EXTENTS
----------
1
统计信息
----------------------------------------------------------
0 recursive calls
0 db block gets
90 consistent gets
0 physical reads
0 redo size
418 bytes sent via SQL*Net to client
416 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
sys@TICKET> drop table test;
表已删除。
sys@TICKET> create table test as select * from dba_objects
2 union all select * from dba_objects
3 union all select * from dba_objects
4 union all select * from dba_objects
5 union all select * from dba_objects
6 union all select * from dba_objects
7 union all select * from dba_objects
8 union all select * from dba_objects
9 union all select * from dba_objects
10 union all select * from dba_objects
11 union all select * from dba_objects
12 union all select * from dba_objects
13 union all select * from dba_objects
14 union all select * from dba_objects
15 union all select * from dba_objects
16 union all select * from dba_objects;
表已创建。
sys@TICKET>
sys@TICKET> commit;
提交完成。
sys@TICKET> select extents from user_segments where segment_name='TEST';
EXTENTS
----------
88
统计信息
----------------------------------------------------------
0 recursive calls
0 db block gets
90 consistent gets
0 physical reads
0 redo size
418 bytes sent via SQL*Net to client
416 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
sys@TICKET> truncate table test drop storage;
表被截断。
sys@TICKET> select extents from user_segments where segment_name='TEST';
EXTENTS
----------
1
统计信息
----------------------------------------------------------
0 recursive calls
0 db block gets
90 consistent gets
0 physical reads
0 redo size
418 bytes sent via SQL*Net to client
416 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
sys@TICKET> drop table test;
表已删除。
sys@TICKET> create table test as select * from dba_objects
2 union all select * from dba_objects
3 union all select * from dba_objects
4 union all select * from dba_objects
5 union all select * from dba_objects
6 union all select * from dba_objects
7 union all select * from dba_objects
8 union all select * from dba_objects
9 union all select * from dba_objects
10 union all select * from dba_objects
11 union all select * from dba_objects
12 union all select * from dba_objects
13 union all select * from dba_objects
14 union all select * from dba_objects
15 union all select * from dba_objects
16 union all select * from dba_objects;
表已创建。
sys@TICKET> commit;
提交完成。
sys@TICKET> select extents from user_segments where segment_name='TEST';
EXTENTS
----------
88
统计信息
----------------------------------------------------------
0 recursive calls
0 db block gets
90 consistent gets
0 physical reads
0 redo size
418 bytes sent via SQL*Net to client
416 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
sys@TICKET> truncate table test reuse storage;
表被截断。
sys@TICKET> select extents from user_segments where segment_name='TEST';
EXTENTS
----------
88
统计信息
----------------------------------------------------------
0 recursive calls
0 db block gets
90 consistent gets
0 physical reads
0 redo size
418 bytes sent via SQL*Net to client
416 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
sys@TICKET> select * from test;
未选定行
统计信息
----------------------------------------------------------
323 recursive calls
1 db block gets
40 consistent gets
1 physical reads
96 redo size
1124 bytes sent via SQL*Net to client
405 bytes received via SQL*Net from client
1 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
0 rows processed
sys@TICKET> drop table test;
表已删除。
sys@TICKET> create table test as select * from dba_objects
2 union all select * from dba_objects
3 union all select * from dba_objects
4 union all select * from dba_objects
5 union all select * from dba_objects
6 union all select * from dba_objects
7 union all select * from dba_objects
8 union all select * from dba_objects
9 union all select * from dba_objects
10 union all select * from dba_objects
11 union all select * from dba_objects
12 union all select * from dba_objects
13 union all select * from dba_objects
14 union all select * from dba_objects
15 union all select * from dba_objects
16 union all select * from dba_objects;
表已创建。
sys@TICKET>
sys@TICKET> commit;
提交完成。
sys@TICKET> select extents from user_segments where segment_name='TEST';
EXTENTS
----------
88
统计信息
----------------------------------------------------------
0 recursive calls
0 db block gets
90 consistent gets
0 physical reads
0 redo size
418 bytes sent via SQL*Net to client
416 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
sys@TICKET> drop table test;
表已删除。
sys@TICKET> select extents from user_segments where segment_name='TEST';
未选定行
统计信息
----------------------------------------------------------
0 recursive calls
0 db block gets
66 consistent gets
0 physical reads
0 redo size
284 bytes sent via SQL*Net to client
405 bytes received via SQL*Net from client
1 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
0 rows processed
sys@TICKET> spool off;
由以上可以看出得出一下信息:
1.如果从性能的角度来看,truncate reuse storage 主要是针对大量extent 的字典管理表空间.
2.DROP TABLE的时候,Extents要被回收。而truncate table test reuse storage没有Extents要被回收.
3.truncate table test drop storage 的时候,Extents要被回收,HWM会变化 。
4.truncate table test功能和truncate table test drop storage差不多.
5.truncate table reuse storage在性能上比truncate table drop storage好,