`
longgangbai
  • 浏览: 7251382 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Oracle truncate 和drop 的区别测试

 
阅读更多
  设置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好,



 

分享到:
评论

相关推荐

    delete,truncate和drop的区别

    delete,truncate和drop的区别

    oracle truncate恢复工具

    PRM DUL for oracle恢复被truncate截断掉的表 Oracle DBA神器:PRM灾难恢复工具,Schema级别数据恢复。PRM For Oracle Database – schema级别oracle数据库数据恢复特性 ,PRM即ParnassusData Recovery Manager是...

    详解Truncate delete drop三者的区别

    详细阐述了Oracle中三种删除的方式truncate,drop和delete三者的区别和联系.

    SQL语句中----删除表数据drop、truncate和delete的用法

    SQL语句中----删除表数据drop、truncate和delete的用法,对你爱不完

    oracle恢复测试.sql

    对Oracle各种恢复进行测试汇总,包括delete、update、drop、insert、truncate、init文件、临时文件、数据文件等。

    利用 Oracle 系统触发器防止误删除表操作

    利用oracle 系统触发器防止用户使用drop table 或truncate table 命令。

    Oracle闪回详解--实验

    闪回各种误删除操作:truncate、drop、delete。

    ODU3.9抽取oracle数据文件

    odu直接抽取oracle数据文件,适合做意外truncate数据,drop表等操作。

    Oracle8i_9i数据库基础

    §1.3.1 SQL和SQL*PLUS的差别 25 §1.3.2 PL/SQL语言 27 §1.4 登录到SQL*PLUS 27 §1.4.1 UNIX环境 27 §1.4.2 Windows NT和WINDOWS/2000环境 29 §1.5 常用SQL*PLUS 附加命令简介 32 §1.5.1 登录到SQL*PLUS 32 §...

    Oracle触发器原来也可以这么玩

    这次,我们主要讨论一下Oracle触发器在实际工作中的应用。同时借组SqlDevelop工具分享一下编写触发器过程的调式技巧(之前一编译就出现编译警告就无从下手)。当然,我还是初次接触调试,方法虽不尽人意,但是也不失...

    Oracle数据恢复神器Dbseeker 2.5

    因此,在由于各种原因引起的数据库不能打开或者数据库中的表被DROP,TRUNCATE,DELETE后,而且没有备份的情况下,使用Dbseeker能够及时找回数据表记录。 最新版本请访问http://www.dbseeker.com 2015/12/05 Dbseeker...

    SQL Server误区30日谈 第19天 Truncate表的操作不会被记录到日志

    误区 #19:Truncate表的操作不会被记录到日志 错误 在用户表中的操作都会被记录到日志。在SQL Server中唯一不会被记录到日志的操作是TempDB中的行版本控制。 Truncate Table语句会将整个表中的所有数据删除。但删除...

    Oracle数据库恢复工具Oracle Database Unloader(ODU)3.09

    ODU全称为Oracle Database Unloader,是类似于Oracle的DUL的软件,用于直接从Oracle数据库的数据文件中获取表数据。在各种原因造成的数据库不能打开时,用于抢救数据,最大限度地减少数据丢失。 ODU有什么功能特点...

    oracle安全审计之登录登出、ddl操作记录触发器

    oracle的登录、登出触发器(时间、来访ip、用户信息、sid等等),ddl操作记录触发器(含create、drop、alter、truncate等),都属于事后触发,不影响业务操作

    oracle恢复工具DUL

    DUL数据库恢复实战步骤.DUL支持多级别安全标签(MLSLABEL) , 支持VARRAY,OBJECT类型列,也支持嵌套表。DUL在Unload过程中不会考虑到数据库一致性,它假定所有数据文件中的...可以用此恢复TRUNCATE/DROP误操作的表。

    oracle数据库修复

    支持表被truncate后的数据恢复 支持表被drop后的数据恢复 在有SYSTEM表空间的情况下,自动获取数据字典信息 支持在没有SYSTEM表空间和数据字典损坏的情况下恢复数据,在没有数据字典可用时,ODU能够自动判断数据...

    最全的oracle常用命令大全.txt

    一、ORACLE的启动和关闭 1、在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a、启动ORACLE系统 oracle>svrmgrl SVRMGR>connect internal SVRMGR>startup SVRMGR>quit b、关闭...

    Oracle数据库恢复神器Dbseeker 2.1

    因此,在由于各种原因引起的数据库不能打开或者数据库中的表被DROP,TRUNCATE,DELETE后,而且没有备份的情况下,使用Dbseeker能够及时找回数据表记录。最新版本请访问作者网站http://www.dbseeker.com

    赤兔Oracle数据库恢复软件 v11.6.zip

    12.能够恢复Oracle 11g及以上版本的SecureFile LOB(目前不支持压缩、去重和加密的SecureFile LOB)支持各种表,包括普通的HEAP表,IOT表和聚簇(CLUSTER)表 13.支持IOT表: 14.支持普通IOT表的导出 15.支持压缩...

Global site tag (gtag.js) - Google Analytics