设为首页 加入收藏

TOP

Truncatetable会同时删除表相应的LOB段吗?--不会
2015-07-24 12:13:55 来源: 作者: 【 】 浏览:59
Tags:Truncatetable 同时 删除 相应 LOB 段吗 不会

测试一:rhel5 ;ora10203

SQL> create user lixora identified by lixora default tablespace users;

User created.

SQL> grant dba to lixora;
Grant succeeded.


SQL> conn lixora/lixora
Connected.
SQL> select count(*) from user_segments;
COUNT(*)
----------
0


SQL> create table t(x clob);
Table created.


SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bi
PL/SQL Release 10.2.0.3.0 - Production
CORE 10.2.0.3.0 Production
TNS for Linux: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - Production


SQL> select segment_name, segment_type, bytes
2 from user_segments;

SEGMENT_NAME SEGMENT_TYPE BYTES
--------------------------------------------------------------------------------- ------------------ ----------
SYS_IL0000085497C00001$$ LOBINDEX 65536 -----初始分配大小
SYS_LOB0000085497C00001$$ LOBSEGMENT 65536
T TABLE 65536


SQL> SQL> insert into t select lpad(segment_name,8192) from dba_segments; ----插入测试数据
4780 rows created.

SQL> commit;
Commit complete.


SQL> select segment_name, segment_type, bytes
2 from user_segments;

SEGMENT_NAME SEGMENT_TYPE BYTES
--------------------------------------------------------------------------------- ------------------ ----------
SYS_IL0000085497C00001$$ LOBINDEX 65536
SYS_LOB0000085497C00001$$ LOBSEGMENT 40894464
T TABLE 327680

------truncate 表
SQL> truncate table t;
Table truncated.


SQL> select segment_name, segment_type, bytes
2 from user_segments;
SEGMENT_NAME SEGMENT_TYPE BYTES
--------------------------------------------------------------------------------- ------------------ ----------
SYS_IL0000085497C00001$$ LOBINDEX 65536
SYS_LOB0000085497C00001$$ LOBSEGMENT 65536 -------lob 段空间已经释放了,但lob 段仍然存在
T TABLE 65536

-------尝试手工去回收lob 段空间
SQL> alter table t modify lob(x) (shrink space);
Table altered.


SQL> select segment_name, segment_type, bytes
2 from user_segments;


SEGMENT_NAME SEGMENT_TYPE BYTES
--------------------------------------------------------------------------------- ------------------ ----------
SYS_IL0000085497C00001$$ LOBINDEX 65536 -------lob 段仍然存在
SYS_LOB0000085497C00001$$ LOBSEGMENT 65536 ------lob 段仍然存在

T TABLE 65536

oracle 11g 的版本中测试和上述现象一致。

总结:

在truncate table 时,如果表中含有lob 字段,相应的log segment 是不会被清理掉的,但是空间会被回收。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇一个完整的以在线重定义方式普通.. 下一篇业务系统压力测试前,需要Oracled..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: