alter
含义:
行迁移,意思就是,一个现存的行允许改变其rowid(物理存储地址),通常情况下,数据行在分配了空间之后,行的rowid就固定了,即使以后行长度超出预留的空间,也不会将其移动,在长数据行的情况下,表会产生行链接,对于io来说,行链接是不利的,为了性能,就需要将行调整为在单个物理存储地址下能保存行的所有信息,这需要行迁移.另外在flashback的时候,由于原始版本的行占据了相应的物理地址,所以,也需要行迁移.
其它的,比如说在收缩段空间的情况下,由于要把所有段数据向段前挤压,大部分行都需要改变其物理地址.也需要行迁移
alter table shrink 的用法及与alter table move的区别 ,对随便整理的补充:
http://pandarabbit.blog.163.com/blog/static/20928414420132193756219/
碎片完执行:alter table t1 disable
以下为测试sql:
--收集表信息
exec dbms_stats.gather_table_stats('JOINSPIDER','TB_SPIDER_INFO_LOG',CASCADE=>TRUE);
--得到表、索引大小
select sum(bytes)/1024/1024 from user_segments where segment_name='TB_SPIDER_INFO_LOG';
select sum(bytes)/1024/1024 from user_segments where segment_name='SIL_SPIDER_INFO_CODE_INDEX';
select sum(bytes)/1024/1024 from user_segments where segment_name='SIL_START_TIME_INDEX';
--得到表的块信息
SELECT blocks, empty_blocks, num_rows FROM user_tables WHERE table_name ='TB_SPIDER_INFO_LOG';
--分析empty_blacks
analyze table TB_SPIDER_INFO_LOG compute statistics;
analyze table 一般可以指定分析: 表,所有字段,所有索引字段,所有索引。 若不指定则全部都分析。
从oracle8i开始﹐analyze语句和dbms_stats包都可以收集相关对象(Tables﹑Indexes﹑Clusters and Materialized Views)的statistics。
1.analyze table t1 compute statistics for table;
(只对表的总体信息进行统计,比如行数多少等,不涉及到表字段)
2.analyze table t2 compute statistics for all columns;
(只会收集表字段信息)
3.analyze table t3 compute statistics for all indexed columns; -->user_tab_columns
(只会收集表中索引所在的字段信息)
4.analyze table t4 compute statistics for all indexes;à user_indexes
(只收集表索引的信息)
5.analyze table t5 compute statistics;
(收集表,表字段,索引的信息)
--得到高水位线信息,越大越差
SELECT TABLE_NAME, (BLOCKS * 8192 / 1024 / 1024) - (NUM_ROWS * AVG_ROW_LEN / 1024 / 1024) "Data lower than HWM in MB"
FROM USER_TABLES
WHERE table_name = 'TB_SPIDER_INFO_LOG';
--全表扫描消耗的时间
explain plan for select * from TB_SPIDER_INFO_LOG;
select * from table(dbms_xplan.display);
--锁片整理
alter table TB_SPIDER_INFO_LOG enable row movement;
alter table TB_SPIDER_INFO_LOG shrink space cascade;
alter table TB_SPIDER_INFO_LOG disable row movement;
--碎片整理后再执行一次:
exec dbms_stats.gather_table_stats('JOINSPIDER','TB_SPIDER_INFO_LOG',CASCADE=>TRUE);
analyze table TB_SPIDER_INFO_LOG compute statistics;
然后各项指标会迅速提升。