一个很大的表删除记录后没有回收空间 delete并不释放空间。如果变动很大的话,可以先根据原来的表创建一个新表,truncate掉原来的表,再把新表rename 回去。create tablea asselect * from tableb; 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 对,delete本身只是把数据和表之间断开联系,其物理盘片上仍旧保存着数据,你可以采用truncate table来删除数据。至于表空间你可以在init.ora里面设置pctincrease=0来清理碎片增长量。 用truncate table 表名。这样会回收空间并且速度很快。 用truncate table 表名。这样的方法不如从新建立表,这样可以从新分配存储的参数。 CREATE TABLE NEWNAME AS SELECT * FROM OLDNAME;TRUNCATE TABLE OLDNAME;INSERT INTO OLDNAME SELECT * FROM NEWNAME;DROP TABLE NEWNAME; ALTER [ TABLE | INDEX | CLUSTER ] segment_name DEALLOCATE UNUSED; 有用吗?有人说这是HWM(high water )问题,到底怎么办呢? 清理这个表的无用数据,把这个表用exp导出,drop这个表,alter tablespace [name] coalesce,再imp这个表。 OCCI下如何使用setClob() 关于存储过程的问题 oracle 建表,如何设置默认值 和 自增长列 求一sql语句!~~!~ 分析涵数cube? 请教关于对象问题! 建立oracle数据源的问题 sql plus 登陆的问题 为什么记录集不能ADDNEW啊? 列转行 哪里可以下载ORACLE9i temp表空间对系统恢复有没有影响?
这样会回收空间并且速度很快。
这样的方法不如从新建立表,这样可以从新分配存储的参数。
TRUNCATE TABLE OLDNAME;
INSERT INTO OLDNAME SELECT * FROM NEWNAME;
DROP TABLE NEWNAME;
有用吗?有人说这是HWM(high water )问题,到底怎么办呢?