设为首页 加入收藏

TOP

【oracle11g,17】存储结构:段的类型,数据块(行连接、行迁移,块头),段的管理方式,高水位线(六)
2015-07-24 11:00:51 来源: 作者: 【 】 浏览:3
Tags:oracle11g 存储 结构 段的 类型 数据 连接 迁移 块头 管理 方式 水位
MPTY_BLOCKS --------------- --------------- ---------- ------------ EMPLX LXTBS2 23 0
SQL> select * from emplx;
no rows selected

Execution Plan ---------------------------------------------------------- Plan hash value: 155704778
--------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | --------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 3584 | 112K| 8 (0)| 00:00:01 | | 1 | TABLE ACCESS FULL| EMPLX | 3584 | 112K| 8 (0)| 00:00:01 | ---------------------------------------------------------------------------

#执行truncate操作: SQL> truncate table emplx;
Table truncated. #再对进行分析 SQL> analyze table emplx compute statistics;
Table analyzed.
#truncate降低高水位线,只剩余一个区,并且会降低全表扫描的代价 SQL> select table_name,tablespace_name,blocks, empty_blocks from dba_tables where table_name='EMPLX';
TABLE_NAME TABLESPACE_NAME BLOCKS EMPTY_BLOCKS --------------- --------------- ---------- ------------ EMPLX LXTBS2 0 7

3.delete操作后降低表空间。(重点) 使用alter table emplx move 和alter table emplx shrink space都可以用来进行段收缩,降低高水位线,也都可以用来消除行连接和行迁移。 ①.使用alter table move会把表最多收缩到创建表时的storage子句中指定的初始大小,使用later shrink space 不会受此限制。 ②.使用alter table move 之后,索引会无效,需要重建,使用alter table shrink space 则不会。 ③.只能在表所在的表空间是自动段管理(ASSM)的时候,才能使用alter table shrink space; 而move在自动段管理(ASSM)和手动段管理(MSSM)方式下都能使用。 ④.可以使用alter table shrink space compact来对表进行碎片整理,而不调整高水位线,之后再次调用alter table shrink space 来释放空间。 ⑤.可以使用alter table shrink space cascade;指定了cascade,则收缩行为将级联到所有支持收缩操作的从属段,但是 物化视图、LOB索引、和IOT表例外; ⑥.move 更快 shrink space 较慢。
例:alter table emplx move 和alter table emplx shrink space使用:在MSSM管理的表空间上创建EMPLX表
SQL> select table_name,tablespace_name, blocks,empty_blocks from dba_tables where table_name='EMPLX';
TABLE_NAME TABLESPACE_NAME BLOCKS EMPTY_BLOCKS ------------ ------------------------------ ---------- ------------ EMPLX LXTBS2 0 7

#插入数据 SQL> insert into emplx select * from emplx;
1792 rows created. #分析表 SQL> analyze table emplx compute statistics;
Table analyzed.
SQL> select table_name,tablespace_name, blocks,empty_blocks from dba_tables where table_name='EMPLX';
TABLE_NAME TABLESPACE_NAME BLOCKS EMPTY_BLOCKS ------------ ------------------------------ ---------- ------------ EMPLX LXTBS2 23 0 #删除数据 SQL> delete from emplx where rownum <=2000;
2000 rows deleted.
SQL> commit;
Commit complete.
SQL> select table_name,tablespace_name, blocks,empty_blocks from dba_tables where table_name='EMPLX';
TABLE_NAME TABLESPACE_NAME BLOCKS EMPTY_BLOCKS ------------ ------------------------------ ---------- ------------ EMPLX LXTBS2 23 0 #使用shrink space 的前奏 SQL> alter table emplx enable row movement ;
Table altered. #使用shrink space降低高水位线,报错,因为在shrink space只能使用在assm管理段空间方式的表空间上。 SQL> alter table emplx shrink space; alter table emplx shrink space * ERROR at line 1: ORA-10635: Invalid segment or tablespace type
#使用move降低高水位线 SQL> alter table emplx move;
Table altered. #分析表 SQL> analyze table emplx compute statistics;
Table analyzed. #查看块的使用情况 SQL> select table_name,tablespace_name, blocks,empty_blocks from dba_tables where table_name='EMPLX';
TABLE_NAME TABLESPACE_NAME BLOCKS EMPTY_BLOCKS ------------ ------------------------------ ---------- ------------ EMPLX LXTBS2 10 5

首页 上一页 3 4 5 6 下一页 尾页 6/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Install Goldengate On Oracle Ra.. 下一篇Oracle实践--PL/SQL基础之触发器..

评论

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

·Java 并发工具类:提 (2025-12-25 20:25:44)
·Java面试技巧:如何 (2025-12-25 20:25:41)
·Java并发编程中的线 (2025-12-25 20:25:38)
·C 语言 - cppreferen (2025-12-25 19:50:27)
·《C 语言入门教程》 (2025-12-25 19:50:23)