虽将过时的记录删除了,但表的high water 还是没有变的。
1、你可以用exp/imp把表重新整理一下。
2、把索引重建一下
3、把数据分区或分表。
1、你可以用exp/imp把表重新整理一下。
2、把索引重建一下
3、把数据分区或分表。
解决方案 »
- 【高手们请】如果我向数据库中某表批量导入了一批数据,最后我忘记了COMMIT(或永不提交,或放弃),这样子的话,
- oracle如何对经常读写的表进行优化?
- oracle如何实现一列多条结果合并
- 简单SQL语句优化,大家帮帮忙,谢谢
- 如何删除过去的记录?
- 怎么开启dbms_output的功能。
- 小弟最近想学oracle,请大家留下qq~~~
- sqlserver客户端,如何访问oracle数据库?高手指点。
- 两表关联的问题?
- oracle(+)的优化查询
- 为什么安装了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查出高水位标志