数据库表的记录删除的问题 虽将过时的记录删除了,但表的high water 还是没有变的。1、你可以用exp/imp把表重新整理一下。2、把索引重建一下3、把数据分区或分表。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 同意hrb_qiuyb,另补充如下:表删除大量记录后,要回收high water 以下的自由空间,可以运行以下语句:sql>alter table table_name deallocate unused;这样可以增加表空间的自由空间.要增加磁盘的自由空间,在表空间有自由空间的情况下,将数据库文件缩小.例如:sql>alter tablespace datafile 'full_path_file_name' resize xxxM; delete 删除并不释放空间,truncate才释放空间,但truncate是整表清空,同意2楼的说法。 (alter table deallocate unused keep xM)回收高水位标志以上的空间. 以下的空间只要移到表。select 'alter table '||segment_name||' move tablespace '||tablespace_name||';' from dba_segments where segment_name='&tablename' and segment_type='TABLE'; select 'alter index '||index_name||' rebuild;' from dba_indexes where table_name='&table_name';如果你不信用dbms_unused_space查出高水位标志 怎么成为oracle dba Warning: Procedure created with compilation errors 如何实现两个结构相同表的联合查询 Oracle跨表空间数据同步 (急急急!)关于Oracle数据库丢失问题 改变表结构 请问如何从dmp文件中提取数据阿? 请问:这个SQL该如何写(在线等待) 急!!高分求教一很简单的问题 Oracle有什么工具可以象SQL Server的跟踪器一样跟踪数据库的各种动作? 为什么安装了advance server后我的Oracle服务不能启动??? 求oracle8I for p4补丁,在线等待!!!!!!急急。。。。。
表删除大量记录后,要回收high water 以下的自由空间,可以运行以下语句:
sql>alter table table_name deallocate unused;
这样可以增加表空间的自由空间.
要增加磁盘的自由空间,在表空间有自由空间的情况下,将数据库文件缩小.例如:
sql>alter tablespace datafile 'full_path_file_name' resize xxxM;
回收高水位标志以上的空间.
以下的空间只要移到表。
select 'alter table '||segment_name||' move tablespace '||tablespace_name||';' from dba_segments
where segment_name='&tablename'
and segment_type='TABLE'; select 'alter index '||index_name||' rebuild;' from dba_indexes
where table_name='&table_name';如果你不信用
dbms_unused_space查出高水位标志