oracle 合并表碎片

来源:互联网 发布:sql替换某字符后面的 编辑:程序博客网 时间:2024/06/05 20:03
Shrink space合并表的碎片
一般表里有碎片我们都采用alter table table_name move tablespace_name,或者exp,drop table table_name,imp的2种方式10G给我们其他的方法.下面我来试一吧
用Shrink Space收缩Oracle数据段
在oracle中可以使用alter table table_name shrink space收缩表,使用shrink有两个前提条件:
  1、表必须启用row movement
  2、表段所在表空间的段空间管理(segment space management)必须为auto
实验如下:
--建立一个segment space management auto表空间
SQL> create tablespace ts_auto datafile 'd:/oracle/product/10.2.0/oradata/orcl/ts_auto.dbf' size 100m
 extent management local segment space management auto;
表空间已创建。
--建议测试表
SQL> create table  table_auto  as select * from dba_objects;
表已创建。
--查看shrink前的块数量
SQL> select blocks from dba_segments where segment_name='table_auto';
    BLOCKS                                                                     
----------                                                                     
       768                                                                   
--delete数据后,空间占用没有变化
SQL> delete from table_auto;
已删除50390行。
SQL> commit;
提交完成。
SQL> select blocks from dba_segments where segment_name='table_auto';
    BLOCKS                                                                     
----------                                                                     
       768                                                                    
--直接收缩,提示必须启动row movement选项
SQL> alter table table_auto shrink space;
alter table table_auto shrink space
*
第 1 行出现错误:
ORA-10636: ROW MOVEMENT is not enabled

SQL> alter table table_auto enable row movement;
表已更改。
--收缩成功,空间已经释放
SQL> alter table table_auto shrink space;
表已更改。
SQL> select blocks from dba_segments where segment_name='table_auto';
    BLOCKS                                                                     
----------                                                                     
         8                                                                    
--shrink不能在segment space management manaual的表空间的段上执行
SQL> create tablespace ts_manual datafile 'd:/oracle/product/10.2.0/oradata/orcl/ts_mannel.dbf' size 100m
 extent management local segment space management manual;
表空间已创建。
SQL> select tablespace_name,segment_space_management from dba_tablespaces;
TABLESPACE_NAME                SEGMEN                                          
------------------------------ ------                                          
SYSTEM                         MANUAL                                          
UNDOTBS1                       MANUAL                                          
SYSAUX                         AUTO                                            
TEMP                           MANUAL                                          
USERS                          AUTO                                            
EXAMPLE                        AUTO                                            
TS_AUTO                        AUTO                                            
TS_MANUAL                      MANUAL                                         
已选择8行。
SQL> create table tb_manual tablespace ts_manual as select * from dba_objects;
表已创建。
SQL> alter table tb_manual  shrink space
  2  ;
alter table tb_manual  shrink space
*
第 1 行出现错误:
ORA-10635: Invalid segment or tablespace type

转自:http://blog.csdn.net/cheungjustin/article/details/5639941
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 法院判决离婚对方上诉怎么办 法院判决离婚上诉中级法院怎么办 刑诉中二审发现一审事实错误怎么办 法院判决过了执行期怎么办 刑事犯罪判决后法院未执行怎么办 法院起诉对方不签字怎么办 法院判离婚对方不要签字怎么办 老人不能到法院签字怎么办 法院判决书被告人没签字怎么办? 法院判决离婚一方不签字怎么办 法院判决离婚对方不签字怎么办 法院已判决被告没有钱怎么办 判决还款但是的确没有钱怎么办 强执执行没有钱怎么办 法院判了没钱还怎么办 判决后对方不给钱怎么办 欠钱判决后没钱怎么办 判决了还不给钱怎么办 驾驶证到期本人在监狱服刑怎么办 轻伤过了追诉期怎么办 判决生效书丢了怎么办 高层17楼水压低怎么办 高层六楼水压低怎么办 高层6楼水压低怎么办 高层5楼水压低怎么办 高层五楼水压小怎么办 高层四楼水压低怎么办 高层6楼水压不够怎么办 马桶水箱盖坏了怎么办 马桶水箱盖子坏了怎么办 绿萝的叶子黄了怎么办 绿萝叶子烂了怎么办 还款协议签订后一方反悔怎么办 签了协议想反悔怎么办 体温计打碎了水银找不到了怎么办 模拟城市5核电站爆炸怎么办 日本地铁票丢了怎么办 在日本地铁票丢了怎么办 首付交了没合同怎么办 工程干完不给签合同怎么办 寄存密码纸丢了怎么办