ITPub博客

首页 > IT职业 > IT职场 > truncate命令的作用与DBA_OBJECTS的两个字段_学习笔记

truncate命令的作用与DBA_OBJECTS的两个字段_学习笔记

原创 IT职场 作者:sinobestdba 时间:2011-04-17 22:49:26 0 删除 编辑

关键字:
truncate、DBA_OBJECTS

作者:
mfkqwyc86

一、学习记录:

创建xtdwtest表
create table xtdwtest as select * from dba_objects

SQL> select object_id,data_object_id from dba_objects where object_name='XTDWTEST';

OBJECT_ID DATA_OBJECT_ID
---------- --------------
59436 59436

[@more@]

Execution Plan
----------------------------------------------------------
Plan hash value: 1440243298

-----------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-----------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 3 | 276 | 18 (0)| 00:00:01 |
| 1 | VIEW | DBA_OBJECTS | 3 | 276 | 18 (0)| 00:00:01 |
| 2 | UNION-ALL | | | | | |
|* 3 | FILTER | | | | | |
| 4 | NESTED LOOPS | | 2 | 162 | 17 (0)| 00:00:01 |
| 5 | TABLE ACCESS BY INDEX ROWID| OBJ$ | 2 | 156 | 16 (0)| 00:00:01 |
|* 6 | INDEX SKIP SCAN | I_OBJ2 | 2 | | 14 (0)| 00:00:01 |
| 7 | TABLE ACCESS CLUSTER | USER$ | 1 | 3 | 1 (0)| 00:00:01 |
|* 8 | INDEX UNIQUE SCAN | I_USER# | 1 | | 0 (0)| 00:00:01 |
|* 9 | TABLE ACCESS BY INDEX ROWID | IND$ | 1 | 8 | 2 (0)| 00:00:01 |
|* 10 | INDEX UNIQUE SCAN | I_IND1 | 1 | | 1 (0)| 00:00:01 |
| 11 | NESTED LOOPS | | 1 | 82 | 1 (0)| 00:00:01 |
|* 12 | INDEX SKIP SCAN | I_LINK1 | 1 | 79 | 0 (0)| 00:00:01 |
| 13 | TABLE ACCESS CLUSTER | USER$ | 1 | 3 | 1 (0)| 00:00:01 |
|* 14 | INDEX UNIQUE SCAN | I_USER# | 1 | | 0 (0)| 00:00:01 |
-----------------------------------------------------------------------------------------------

SQL> truncate table xtdwtest;

Table truncated.

SQL> select object_id,data_object_id from dba_objects where object_name='XTDWTEST';

OBJECT_ID DATA_OBJECT_ID
---------- --------------
59436 59437

其中OBJ#/OBJECT_ID可以被看作是对象的逻辑号(类似序列号一样分配),应序号一旦分配之后就不会发生改变其中DATAOBJ#/DATA_OBJECT_ID则是和物理存储关联的编号,通常认为是对象的物理号,这个编号会随着对象物理存储结构的改变而发生改变。

obj#与dataobj#说明:

obj# number not null, /* object number */
/* DO NOT CREATE INDEX ON DATAOBJ# AS IT WILL BE UPDATED IN A SPACE
* TRANSACTION DURING TRUNCATE */
dataobj# number, /* data layer object number */

以上实际上也暗示了TRUNCATE作为DDL可以快速回收空间的本质,在执行TRUNCATE操作时,数据库只简单地回收空间,将空间标记为可用(并不会在数据块上真正删除数据),同时将对象的数据对象重新定位,完成空间回收。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25152497/viewspace-1048791/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-12-30

  • 博文量
    28
  • 访问量
    66892