您好,欢迎访问一九零五行业门户网

Oracle测试:truncate作用与DBA_OBJECTS实验验证

oracle测试:truncate作用与dba_objects实验验证,以上实际上也暗示了truncate作为ddl可以快速回收空间的本质,在执行truncate操
创建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
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操作时,数据库只简单地回收空间,将空间标记为可用(并不会在数据块上真正删除数据),,同时将对象的数据对象重新定位,完成空间回收。
更多oracle相关信息见oracle 专题页面 ?tid=12
其它类似信息

推荐信息